バッチファイル

Last-modified: 2024-02-09 (金) 12:53:06
amazon.gif

バッチファイル / DOS

設定・管理

HOSTNAME

コンピュータ名の取得

wmic csproduct get IdentifyingNumber

製造番号の取得

USER名の取得(XP以降、2000未対応)

  • set username
    出力結果 USERNAME=taro
  • QWINSTA

systeminfo

システム情報の取得

winver

 OSのバージョン取得(システムのプロパティより新設)
winver.jpg:

chkdsk c: /f

修復オプションで、運が良ければデータが修復される場合もあるがHDDの負担が大きいので最終手段

チェックディスク(ドライブ修復) 参考

  • デフラグ

サーバ関係

ActiveDirectoryユーザとコンピュータの一覧をエクスポート

ユーザ名、コンピュータ名、電話番号を出力する。
csvde -u -f c:\export.csv -r objectCategory=user -l cn,description,distinguishedName,displayName,sAMAccountName,telephonenumber

ActiveDirectoryの属性名の一覧の英語名

ActiveDirectory検索

rundll32.exe dsquery.dll,OpenQueryWindow をショートカット作成

AD検索.JPG:

変数の取込(例、コンピュータ名を取得)

for /F "USEBACKQ" %%a in (`set username`) do (
 echo a = %%a
 set foo=%%a
)
echo a = %%a
echo foo = %foo%

時刻同期

rem------------------------------------------
rem NTPサーバに時刻を合わせる
rem------------------------------------------
net time /setsntp:ntp.jst.mfeed.ad.jp,0x1
rem------------------------------------------
rem 時刻同期サービスを再起動する
rem------------------------------------------
net stop w32time & net start w32time
rem------------------------------------------
rem 時刻同期を開始する(サーバ時刻を同期する)
rem------------------------------------------
w32tm /resynq

サンプル

チェックディスクとデフラグをした後にシャットダウンするプログラム
WindowsXPだとスクリーンセーバ有効だとデフラグだめ,Win7だと動く

echo ----------------------------------- >> C:\11.log
echo %date% %time% 開始,Chkdsk >> C:\11.log
chkdsk c: /v
echo %date% %time% 開始,Defrag >> C:\11.log
defrag c: -f
echo %date% %time% 終了,Defrag >> C:\11.log
shutdown -s -f -t 50
echo %date% %time% 終了,Windows >> C:\11.log

ネットワーク

  • DNSキャッシュクリア 参考
    ipconfig /flushdns
  • DOS-FTP
     バッチファイルにてFTP操作

日付を利用する

テキスト関係

forfiles (対応OS:Windows Server 2003,Windows Vista 以降、XPは非対応 )

更新日付が指定期間以降/以前のファイル・フォルダの一覧をだす(処理する)

サンプル

forfiles /P "D:\OldFile" /M *.TXT /D -60 /C "CMD /c del @file"

コマンドの意味

「C:\XP」にある。拡張子がTXTのファイルで、現在よりも30日前のファイルを削除する

備考

forfiles.exeがないので、XPでは使用できないようである。

参考

  • スペシャルサンクス:unicorndrill さん
 

for文 あるフォルダ直下のサブディテクトリ内のファイルを特定のフォルダにコピーする

例.C:\11\aa\aa.csv と C:\11\bb\bb.csv を C:\12\bb.csv C:\12\aa.csv としたい。

cd /d C:\11
for /r %i in (*.txt) do copy %i C:\12\

注意点:コピー先のフォルダは事前に作成しておく

バッチファイルで日付を利用する

ファイル結合

  • 複数のファイルを1つのファイルにする。例:あるフォルダにあるTXTファイルを1つのファイルにする.
     コマンド文1 COPY *.TXT Gattai.TXT
  • 結合するファイル名が決まっている場合は、2,3個を1つに結合する場合
     コマンド文2 COPY 11.TXT + 12.TXT + 13.TXT Gattai.TXT
    (この場合、結合するファイル名の数に限界があるので結合したいファイルだけ選びフォルダにおいて、コマンド文1がいいかもしれない。)

ディレクトリ操作

  • ディレクトリ移動
    cd /d c:\pg 例、ディレクトリの異なるフォルダへの移動(現在Cドライブで、Dドライブのディレクトリに移動)
  • ディレクトリ削除
    rmdir /S /Q C:\MK 例.C:\MKディテクトリを削除する
     /S ディテクトリの中のファイル・フォルダを削除 このオプションがないと中にファイルがあると削除できない。
     /Q 確認メッセージの非表示オプション
  • エクスプローラーでCドライブを開く
    explorer C:

XCOPY

※なんらかの原因でコピーができない場合(破損、属性)、その問題のあるファイルまたはフォルダ以降のXCOPYが走らないので、その場合は、/C を使う

ファイルとディレクトリ ツリーをコピーします。
XCOPY 送り側 [受け側] [/A | /M] [/D[:日付]] [/P] [/S [/E]] [/V] [/W]
                     [/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U]
                     [/K] [/N] [/O] [/X] [/Y] [/-Y] [/Z]
                     [/EXCLUDE:ファイル1[+ファイル2][+ファイル3]...]
 送り側      コピーするファイル (複数可) を指定します。
 受け側      新しいファイルの位置や名前を指定します。
 /A          アーカイブ属性のファイルのみをコピーし、属性は変更しません。
 /M          アーカイブ属性のファイルのみをコピーし、アーカイブ属性を解除
             します。
 /D:月-日-年 指定された日付以降に変更されたファイルをコピーします。
             日付が指定されなかったときは、送り側の日付が受け側の日付より
             新しいファイルだけをコピーします。
 /EXCLUDE:ファイル1[+ファイル2][+ファイル3]...
             文字列を含むファイルの一覧を指定します。各文字列はファイルの
             中で別の行でなければなりません。
             文字列がコピーされるファイルの絶対パスの一部と一致した場合、
             そのファイルはコピーから除外されます。たとえば、\obj\ を指
             定するとディレクトリ obj の下のファイルはすべて除外されます。
             .obj という文字列を指定すると .obj という拡張子のファイルは
             すべて除外されます。
 /P          受け側のファイルを作成する前に確認のメッセージを表示します。
 /S          空の場合を除いて、ディレクトリとサブディレクトリをコピーします。
 /E          ディレクトリまたはサブディレクトリが空であってもコピーします。
             /S /E と同じ意味です。/T と同時に指定できます。
 /V          書き込んだ各ファイルを検証します。
 /W          キー入力があるまでコピー開始を待ちます。
 /C          エラーが発生してもコピーを続けます。
 /I          受け側がなく複数のファイルをコピーする場合、受け側をディレク
             トリとしてコピーします。
 /Q          コピー中ファイル名を表示しません。
 /F          コピー中送り側と受け側の全ファイル名を表示します。
 /L          コピーされるファイル名を表示します。
 /G          暗号化をサポートしない受け側に、暗号化されたファイルをコピーす
             ることを許可します。
 /H          隠しファイルやシステム ファイルもコピーします。
 /R          読み取り専用ファイルを上書きします。
 /T          ファイルはコピーせずにディレクトリのみを作成します。ディレク
             トリまたはサブディレクトリが空の場合は除きます。/E と使用すれ
             ばディレクトリやサブディレクトリが空でも作成されます。
 /U          受け側に既に存在するファイルだけをコピーします。
 /K          属性をコピーします。通常の XCOPY は読み取り専用属性を変更し
             ます。
 /N          生成された短い名前を使用してコピーします。
 /O          ファイルの所有権と ACL 情報をコピーします。
 /X          ファイルの監査設定をコピーします (/O を含む)。
 /Y          受け側の既存のファイルを上書きする前に確認のメッセージを表示
             しません。
 /-Y        受け側の既存のファイルを上書きする前に確認のメッセージを表示
             します。
 /Z          再起動可能モードでネットワーク ファイルをコピーします。
環境変数 COPYCMD にスイッチ /Y を設定できます。
これは、コマンド ラインの /-Y で無効になります。

Start

最小化した状態で起動する 参考

Start /MIN 11.bat

5秒後に起動

echo "サイボウズ起動中"
echo off
ping -n 5 127.0.0.1 > nul
cd C:\Program Files\kt
start kt.exe
exit

シャットダウン 参考

構文

shutdown シャットダウン方法 [-f] [-m コンピュータ名] [-t 秒数] [-c "コメント"] [-d [u] [p] コード番号]

サンプル

shutdown -f -s -t 10 (10秒後にシャットダウン、実行中の処理も強制終了)

バッチファイルで任意の文字列を入力させる

サンプル

@echo off
echo ---------------------------------
echo ** 年月指定 **
echo ---------------------------------
set YearMon1=
set YearMon2=
echo "例.2011年01月10日 ---> 20110101
set /P YearMon1="開始年月を入力して下さい:"
set /P YearMon2="終了年月を入力して下さい:"
echo 開始年月:%YearMon1%
echo 終了年月:%YearMon2%

実行結果例

---------------------------------
** 年月指定 **
---------------------------------
"例.2011年01月10日 ---> 20110101
開始年月を入力して下さい:20110301
終了年月を入力して下さい:20110331
開始年月:20110301
終了年月:20110331

便利ショートカット

バッチファイルというより、DOSプロンプト画面での有効なショートカットキー

  • DOS画面を最大拡大 
    ALT + ENTER (Win7では駄目だった)
  • コマンドの履歴の一覧表示
    F7

読み物

サイト内リンク

マクロ/スクリプト

SQL Server系

Office系

OS系

その他