0

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

目前我有:

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

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

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

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

有什么指导吗?

4

2 回答 2

1

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

FOR /F "delims=" %%G IN ('forfiles /P "C:\folder\subfolder" /d -7  2^>nul') do DEL "%%~G"
于 2019-03-25T16:18:01.280 回答
0

尝试这个:

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

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

于 2019-03-25T16:23:38.147 回答