我有一个通过 SQL 服务器代理调用的批处理文件。
目前我有:
ForFiles /p "C:\folder\subfolder" /d -7 /c "cmd /c del @file"
如果有超过 7 天的文件,该命令可以正常工作。
如果没有符合条件的文件,则脚本失败,导致 SQL 报告失败。
理想情况下,我需要添加 if 语句,如果存在超过 7 天的文件,则执行删除命令,否则忽略它。
有什么指导吗?
我有一个通过 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
它检查错误,并将错误放入变量中,然后如果找到,我们将错误级别设置为零。