我正在使用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
答案 0 :(得分:4)
要消除错误消息,请在行尾添加2>nul
它将STDERR流2(标准错误)重定向到nul。
forfiles /d -300 /p E:\Webex /m *.txt /c "cmd /c echo @file" 2>nul
答案 1 :(得分:0)
仅调用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."
'''