30日前ファイル名のフォルダを同じフォルダ内にzip圧縮した後、元のフォルダを消す
前提として、毎回何かの情報を集める際にYYYYMDDフォルダを作成して、その配下に格納するということをやっておくと、このようなスクリプトで対象を指定しやすくなります。いくつかを列記して1日のどこかで実行するようにスケジュールすれば、ファイルサーバの容量を節約できます。
FOR /F "usebackq" %%a IN (`powershell [DateTime]::Today.AddDays"("-30")".ToString"("'yyyyMMdd'")"`) DO SET yesterday1=%% "C:\Program Files (x86)\Lhaplus\Lhaplus.exe" /c:zip /n:"C:\Users\hoge\Documents\work\%yesterday1%.zip" C:\Users\hoge\Documents\work\%yesterday1% echo Y|rmdir /s C:\Users\hoge\Documents\work\%yesterday1% echo work配下の%yesterday1%の圧縮,削除が完了しました %time% >> /path/to/log.txt "C:\Program Files (x86)\Lhaplus\Lhaplus.exe" /c:zip /n:"C:\Users\hoge\Documents\work2\%yesterday1%.zip" C:\Users\hoge\Documents\work2\%yesterday1% echo Y|rmdir /s C:\Users\hoge\Documents\work2\%yesterday1% echo work2配下の%yesterday1%の圧縮,削除が完了しました。 %time% >> /path/to/log.txt . . .
ちなみにLhaplusは該当のフォルダが無ければ圧縮ウィンドゥなども立ち上がらないので、動いていないように見えてしまいますが、問題はないです。
削除ということで、念のため、標準出力と標準エラー出力をリダイレクトしてログを取得するには以下のように記述します。
echo Y|rmdir /s C:\Users\hoge\Documents\work\%yesterday1% >> /path/to/delete.log 2>&1