forfilesでログ退避とかも楽チンに
Windowsのバッチファイル(.bat)をメンテすることがたまにあるが、ここ最近になってforfilesコマンドの存在を知った。
~日以上前に更新されたログファイルを、退避させるとか、圧縮させるといった用途に使える。便利。。
forfiles
とDOSプロンプトで実行するとわかるが、カレントディレクトリ上のファイル名・フォルダ名をフルパスで列挙するコマンドだ。
ただファイル名を列挙するだけでなく、各ファイル・フォルダの情報をプログラムの引数として渡すこともできる。
forfiles /P C:\dev\test\ /D -7 /C "CMD /C IF @isdir==FALSE COPY @path C:\dev\test\fuga\"
上記は、C:\dev\test\配下にある、7日以上前に更新されたファイルを列挙し、フォルダ以外の場合はfugaというフォルダにコピーする。
- /P ファイル検索の起点のパス(C:\dev\test\)
- /D 最終更新日からn日(日付指定も可能)経過しているファイル・フォルダを列挙(ここでは、7日以上前)
- /C 各ファイルごとに実行するコマンド。cmd /cから始める
各ファイルごとに複数のコマンドを実行させたりすることがなければ、これで十分かと思う。その他の使い方は下記も参照。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1137forfiles/forfiles.html