SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

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"

関連するメモ

コメント