バッチで使えるコマンド抜粋(初心者向け)


自分が使ったバッチを、保守の時にササっと見返せるように備忘録としてメモ書きしていく。

■set

変数の設定・計算・ユーザーからの入力情報の取得に使う

set [変数名]=[代入したい文字列]

(例)今日の日付を変数に入れる

set T=%date%     Tに日付を代入
set Y=%T:~0,4%  Tの左1番目から4文字だけ取り出し、Yに代入
set M=%T:~5,2%  Tの左6番目から2文字だけ取り出し、Mに代入
set D=%T:~8,2%  Tの左8番目から2文字だけ取り出し、Dに代入

<ヒント>
%変数名% …変数の中身を参照したいときは、変数を「%」で囲む
%date%  …今日の日付を文字列にして返してくれる(現時点で 2020/05/29)
↓ 「/」のように、ファイル名としては利用できない文字が含まれているので除外する
%変数名:~m,n% …ある変数の先頭(文字列の左端)からm番目の文字からn文字だけを取り出す
※先頭は「0」が1番目となる

ちなみに上記の数字をすべて結合させるときは

%date:~0,4%%date:~5,2%%date:~8,2%

⇒結果は「20200529」となる。

■tree

フォルダ構成をツリー形式で表示する

tree [表示させたいフォルダ]

(例)USBメモリなどのEドライブ直下の構成を、Cドライブに作ったlogフォルダの中に
  treeOutput_日付 というタイトルのテキストを出力し、追記する

tree E:\ >> C:\log\treeOutput_%Y%%M%%D%.txt

<ヒント>
%変数名% …変数の中身を参照したいときは、変数を「%」で囲む
>>    …ファイルに追記

■robocopy

ファイルサーバ等のファイル/フォルダをアクセス権ごとコピーできる

robocopy [コピー元] [コピー先]

(例)Eドライブ直下のフォルダとファイルをCドライブのtmpフォルダにアクセス権ごとコピーする。
  そして、Cドライブのlogフォルダにoutput_日付 というタイトルのテキストを出力し追記する。
  さらに、コピー後は元のEドライブ直下のファイルを削除する。

robocopy E:\ C:\tmp /S /MOV >> C:\log\output_%Y%%M%%D%.txt

<ヒント>
%変数名% …変数の中身を参照したいときは、変数を「%」で囲む
>>    …ファイルに追記
/S     …セキュリティ(NTFSアクセス権)情報
/MOV    …ファイルを移動する(コピー完了後にコピー元から削除する)

■rd

ディレクトリを削除する

rd [ディレクトリ名]

(例)Eドライブ直下の空ではないディレクトリも含め、確認なしで削除する

rd /s /q E:\

<ヒント>
/s …空ではないディレクトリも削除
/q …sオプションが設定されているとき、確認しない

以上、ここには載っていないがまだまだ多くのコマンドやオプションがあるので、必要に応じて調べていくことを勧める。