帰りは気楽な歌で

Windows、VBScript等の小ネタ、その他個人の趣味(音楽等)を書いていきます。

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

本ブログに記載のソースコード・情報を利用した際に生じたいかなる損害において、筆者は責任を負いません。十分な知識を持ったうえでご利用ください。