基于文件日期的 ForFiles 的 If 语句

If statement for ForFiles based on file date

我有一个通过 SQL 服务器代理调用的批处理文件。

目前我有:

ForFiles /p "C:\folder\subfolder" /d -7 /c "cmd /c del @file"

如果有超过 7 天的文件,该命令可以正常工作。

如果没有满足条件的文件,则脚本将失败,导致 SQL 报告失败。

理想情况下,我需要添加 if 语句,如果存在超过 7 天的文件,则执行删除命令,否则忽略它。

有指导吗?

将其包装在 FOR /F 命令中,将标准错误重定向到 NUL。

FOR /F "delims=" %%G IN ('forfiles /P "C:\folder\subfolder" /d -7  2^>nul') do DEL "%%~G"

试试这个:

cd /d C:\folder\subfolder
SET _CmdResult=NONE
FOR /F "tokens=*" %%a IN ('forfiles -p "C:\folder\subfolder" -s -m *.* -d -7 -c "cmd /c del @file" 2^>^&1 ^| FINDSTR ERROR') DO SET _CmdResult=%%a
IF "%_CmdResult%" == "ERROR: No files found with the specified search criteria." ( 
    SET errorlevel=0 
 ) ELSE ( 
    SET errorlevel=1
 )
IF "%_CmdResult%" == "NONE" SET errorlevel=0

它检查错误,并将错误放入一个变量中,然后如果发现错误,我们将错误级别设置为零。