我正在使用forfiles显示超过300天的文本文件。如果我没有找到任何文件,forfiles会给出一个错误,所以我使用下面的代码来抑制这个错误,并返回如下输出:
A:"NONE"
success 代码如下:
SETLOCAL ENABLEDELAYEDEXPANSION
SET res=NONE
for /f "tokens=*" %%a in ('forfiles /d -300 /p E:\Webex /m *.txt /c "cmd /c echo @file ^>^>log.txt" ^| findstr error' ) do set res=%%a
ECHO A:"!res!" >>log.txt
if "!res!" == "ERROR: No files found with the specified search criteria." (
ECHO B:"!res!" >>log.txt
SET err_lv=0
) ELSE (
SET err_lv=1
)
IF "!res!" == "NONE" SET err_lv=0
if !err_lv! equ 1 (
ECHO failure >>log.txt
) else (
ECHO success >>log.txt
)
pause发布于 2014-04-02 03:03:53
要消除该错误消息,请在行尾添加一个2>nul
它将STDERR流2(标准错误)重定向到NU1。
forfiles /d -300 /p E:\Webex /m *.txt /c "cmd /c echo @file" 2>nul发布于 2019-05-02 23:14:59
单独调用FORFILES /p E: /D -1 /C "cmd /c echo @path"2>nul仍然会增加错误级别,并导致代码失败。
我发现,为了不触发任何try/catch或其他错误处理,我需要从jenkinsfile (groovy脚本)调用此命令,对我有效的方法是添加一个不返回错误的简单echo语句。当然,这是我工作中最简单、最有效的解决方案。
bat '''
FORFILES /p E: /D -1 /C "cmd /c echo @path"2>nul
ECHO "It's okay if we don't find any files to delete."
'''https://stackoverflow.com/questions/22792868
复制相似问题