用于删除超过X天的文件的批处理脚本(基于创建日期,而不是修改日期)

Fra*_*sco 4 windows batch-file scheduled-tasks

在Windows机器上(win 7或Win server 2008 R2),我有一个批处理脚本,可以将一些.config文件复制到备份文件夹中.
我想编写另一个脚本来删除一周前创建的备份文件.

有很多关于如何使用的建议FORFILES(例如):

FORFILES /P "D:\Configs_Backup" /M *.config /D -7 /C "cmd /c del @file"
Run Code Online (Sandbox Code Playgroud)

但是这个命令使用"修改"的时间戳,而我需要使用创建日期.

无需安装任何第三方程序,是否可以通过命令控制台实现此目的?

End*_*oro 5

试试这个,查看输出并删除它echo,如果看起来不错:

@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
SET /a XDay=7
CALL :DateToJDN "%DATE%" JDNToday
FOR /r "D:\Configs_Backup" %%a IN (*.config) DO (
    FOR /f "tokens=1,4*" %%b IN ('dir /tc "%%~a"^|findstr "^[0-9]"') DO (
        CALL :DateToJDN "%%b" filedate
        SET /a diffdays=JDNToday-filedate
        IF !diffdays! gtr %XDay% ECHO DEL /F /Q "%%~a"
        )
    )
GOTO :eof

:DateToJDN "DD mm/dd/yyyy" jdn=
setlocal
set date=%~1
set /A yy=%date:~-4%, mm=1%date:~-10,2% %% 100, dd=1%date:~-7,2% %% 100
set /A a=mm-14, jdn=(1461*(yy+4800+a/12))/4+(367*(mm-2-12*(a/12)))/12-(3*((yy+4900+a/12)/100))/4+dd-32075
endlocal & set %2=%jdn%
exit /B
Run Code Online (Sandbox Code Playgroud)

注意:这仅适用于AM/PM时间格式.