このバッチは、すべての古いファイル (当月のものではない) を循環し、それらを 1 つずつ my_archive ディレクトリに移動します。
このディレクトリに新しいファイルがない場合に備えて、新しいファイルを作成しています (ループのブレーク ルールとして新しいファイルを使用しています)。このファイルは、バッチ ファイルの最後で削除されます。
dir パラメーターは、ファイルのみを表示し、それらを日付順に並べ替えます。さらに、好みのタイムスタンプを指定できます。
/T:C - Creation
/T:A - Last Access
/T:W - Last Written
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
SET SRC_PATH=c:\my_folder
SET DST_PATH=c:\my_archive
SET MONTH=%date:~4,2%
SET YEAR=%date:~-4%
echo blah > !SRC_PATH!\to_delete.txt
for /f "skip=4 tokens=1,5 delims= " %%g in ('dir /A:-D /O:D !SRC_PATH!') do (
set date=%%g
set m=!date:~0,2!
set y=!date:~-4!
if !YEAR! gtr !y! (move !SRC_PATH!\%%h !DST_PATH!\%%h) else (
if !MONTH! gtr !m! (move !SRC_PATH!\%%h !DST_PATH!\%%h) else goto :end
) )
:end
del !SRC_PATH!\to_delete.txt