此批次将循环遍历所有旧文件(不是从当前月份开始)并将它们一一移动到 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