ファイルサーバーやNASなどで容量を食いやすいファイルを
ほかのストレージに逃がすなどの用途にいかがでしょうか。
robocopyを使っているのでアクセス権やディレクトリ構造は維持されます。
水色部分を適宜編集し使用する。
必ず試験環境を用意し、念入りに段階的な動作試験を行うこと。
(例:2フォルダ4ファイル→10フォルダ100ファイル→50フォルダ1000ファイル、など)
rem 【特定の拡張子のファイルのみをフォルダ構造をそのまま移動するコマンド】
rem ※厳密にはコピー&コピー元の削除という処理を行う※
rem ◆移動させるファイルの拡張子を指定
set targetext=jpg
rem ◆移動対象とするファイルのルールを指定
set deldate=180
rem ↑最終更新日がバッチファイルの実行時よりもx日以上前のもの
rem ◆移動元フォルダを指定
set indir="E:\test1"
rem ◆移動先フォルダを指定
set outdir="E:\test2"
rem ◆ログ保存時のフォルダを指定
set log_folder="E:\logs"
rem ◆ログ保存時のファイル名を指定する。※拡張子は含めない※
set file1=%date:~0,4%-%date:~5,2%-%date:~8,2%_clean_%targetext%_phase1(copy)
set file2=%date:~0,4%-%date:~5,2%-%date:~8,2%_clean_%targetext%_phase2(delete)
rem ↑ファイル名の先頭に現在の年月日を設定
rem ↑コピー&削除という処理のため、「コピーしたファイル一覧の出力」と「削除したファイル一覧の出力」をそれぞれ指定
rem ◆ログファイルの拡張子を指定する。
set ext1=".log"
set ext2=".zip"
rem ↑一次処理では「.log」という拡張子で出力、二次処理で「.zip」に圧縮
rem ◆コピー処理
robocopy %indir% %outdir% *.%targetext% /s /MINAGE:%deldate% /R:0 /LOG:%log_folder%\%file1%%ext1%
rem ◆削除処理
forfiles /P "%indir%" /S /M *.%targetext% /C "cmd /c echo @path" /D -%deldate% >> "%log_folder%\%file2%%ext1%"
forfiles /P "%indir%" /S /M *.%targetext% /C "cmd /c del @path" /D -%deldate%
ログファイルを圧縮したい場合はバッチ処理する端末に7-zipをインストールし、
以下のコマンドをバッチファイルに追記します。
rem ◆ログファイルを圧縮し、元データ(*.log)を削除
"C:\Program Files\7-Zip\7z.exe" a "%log_folder%\%file1%%ext2%" "%log_folder%\%file1%%ext1%"
del "%log_folder%\%file1%%ext1%"
"C:\Program Files\7-Zip\7z.exe" a "%log_folder%\%file2%%ext2%" "%log_folder%\%file2%%ext1%"
del "%log_folder%\%file2%%ext1%"
バッチファイルの開始から終了までに時間がかかると、
移動されずに削除されるファイルが出てくる可能性があります。
あまり大規模な環境でのご利用は推奨していません。

