事前にバッチ処理を走らせる端末に「7zip」をインストールしておく。
本記事の方法ではリストアップされたファイルと、実際に削除されるファイルに齟齬が生まれる可能性があるため、できれば新しい記事の方法をお試しください。
rem 【特定の拡張子以外かつ最終更新日が30日以上前にものを削除する。】
rem ◆削除対象フォルダを指定
set sourcedir="D:\Shared\hogehoge"
rem ◆ログ保存時のファイル名を指定する。※拡張子は含めない※
set file1=%date:~0,4%-%date:~5,2%-%date:~8,2%_extclean1
rem ◆ログ保存時のフォルダを指定
set log_folder="E:\logs"
rem ◆ログファイルの拡張子を指定
set ext1=".log"
set ext2=".zip"
rem ↑一次処理では「.log」という拡張子で出力、二次処理で「.zip」に圧縮する。
rem ◆削除対象ファイルをログファイルに出力し、削除を実施
forfiles /P %sourcedir% /S /M *.* /D -30 /C "cmd /c if not @ext==0x22xlsx0x22 if not @ext==0x22xls0x22 echo @path >> %log_folder%\%file1%%ext1%"
forfiles /P %sourcedir% /S /M *.* /D -30 /C "cmd /c if not @ext==0x22xlsx0x22 if not @ext==0x22xls0x22 del @path
rem 拡張子をさらに追加したい場合は「if not @ext==0x22***0x22」をさらに増やす
rem ログファイルをZIP圧縮し、ログファイルの元データ(log)を削除する。
"C:\Program Files\7-Zip\7z.exe" a "%log_folder%\%file1%%ext2%" "%log_folder%\%file1%%ext1%"
del "%log_folder%\%file1%%ext1%"
exit
ファイル操作系のバッチファイルは事前に検証を重ねる事。