forfiles to suppress No find files not working

时间:2014-04-01 17:33:20

标签: batch-file

我正在使用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

2 个答案:

答案 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."
'''