Windows版 tmpwatch
問題
Linuxのtmpwatchコマンドみたいなの、Windowsにもないですか?
ログファイルなど定期的に削除したいものがあるんですけど。
答え
forfiles というコマンドがある。
https://technet.microsoft.com/en-us/library/cc753551%28v=ws.10%29
forfiles [/p] [/m ] [/s] [/c " "] [/d [{+|-}][{ | }]]
/P ログファイルが格納されているフォルダを指定 /M 削除対象のファイル名のパターンを指定 /D 最終更新日を指定 /C 指定したコマンドを実行できる
これ自体はLinuxのfindコマンドに近い。/C オプションで、find ~ -exec ~ 相当のことができるので、/C で削除を実行すると、tmpwatch 相当の動きができる。
・2015/06/01 含めて 2015/06/01 以降の更新日のファイルを探す
FORFILES /D +2015/06/01
・2015/06/01 含めて 2015/06/01 以降の更新日のファイルを探して「~が新しいよ」と表示する
FORFILES /D +2015/06/01 /C "cmd /c echo @fname が新しいよ"
・今日が更新日のファイルが見つかる
FORFILES /P \temp /D 0
・日数を指定して1年以上古いファイルを探して「~が1年以上古いよ」と表示する
FORFILES /D -365 /C "cmd /c echo @path が1年以上古いよ"
・日付を指定して1年以上古いファイルをサブフォルダも含めて探して「~が1年以上古いよ」と表示する
FORFILES /P \hogehoge /S /D -2014/06/01 /C "cmd /c echo @path が1年以上古いよ"
・あるフォルダで、サブフォルダも含めて、半年以上古い、*.log という名前のファイルを探して、削除する
FORFILES /P c:\temp /S /D -180 /M *.log /C "cmd /c del /Q @path"
コメント