Windowsのコマンドラインで
特定の時間経過したファイルを削除するというのが簡単にできた
そのコマンドはforfilesです
コマンドの詳細は下記参照
http://www.atmarkit.co.jp/ait/articles/0902/27/news132.html
コマンド以下のとおりです
簡単です
forfiles /p XXXXXXXXXXXXXX\logs /d -n /c "cmd /c del @path"
コマンドの解説
/P はパス名を記載するパラメータ
XXXXXXXXXXXXXX\logsは取得するフォルダ
.にするとカレントフォルダになる
/dは日付指定
-nは数字と日付の指定ができます
数字の場合はn日前のファイルになるそうです
日付指定の場合はyyyy/mm/dd/指定
-2016/01/01は2016/01/01以前のファイルを取得
+2016/01/01は2016/01/01以降のファイルを取得
/cは取得したファイルに対してコマンド実行できます
自分の例は削除しています
参考にしたサイトだと
cmd /c del @file
だったのですが、カレントディレクトリなのか、どうかわかりづらいので
フルパスにしました
cmd /c del @path
実際の実行したコマンドは以下のとおりです
forfiles /p ”E:\backuptool\logs /d -5 /c "cmd /c del @path"
バックアップ処理の実行ログが毎日100Mぐらいでるのですが
はっきりいってバックアップの実行ログなんて
ほぼ見ません
バックアップの処理のあとにこのバッチを実行することで
いらないログを消しています
ちなみに
WindowsServer2003から使えたのですが
知らなかったwwww
追記:このコマンドはネットワークドライブに対しては実行できないみたい
サーバー内でやれよってことかな
ちょっとちがうけど
linuxの場合はfindでけしている
#!/bin/bash # 過去ログファイルの削除 # centos 5.x find /var/logs/XXXXX/*.gz -mtime +7 -exec rm {} \; # centos 6.x find /var/logs/XXXXX/*.gz -mtime +7 | xargs rm