Windows批处理文件错误级别问题

时间:2009-10-01 21:35:21

标签: scripting batch-file errorlevel

我有一个批处理文件,它从文本文件中解析出一堆文件名,并将它们连接成一个强大的文件 - 之前已经讨论过here。但是,如果文件在通过某些命令(例如VCS检查)运行时抛出错误,我不希望该字符串包含文件。这是我的尝试:

set FILE_LIST=
for /f %%x in (temp.txt) do (

:: perform a VCS test
accurev diff -b %%x

:: skip concatenation if error level is > 2
IF errorlevel 2 GOTO NEXT

:: perform the concatenation
set FILE_LIST=!FILE_LIST! %%x

:NEXT
:: print a message if here due to an error above
IF errorlevel 2 echo VCS problem with this file: %%x
)

问题是 - 一旦发现一个大于2的错误级别,脚本就会停止执行整个for循环。如果列表中有五个文件而第三个文件有VCS问题 - 脚本只处理前两个。

2 个答案:

答案 0 :(得分:0)

  

如果ERRORLEVEL建设有一个   奇怪的功能......如果是,则返回TRUE   返回码等于或大于   比指定的errorlevel。

参考this link了解如何处理该“功能”。

答案 1 :(得分:0)

setlocal ENABLEDELAYEDEXPANSION
set FILE_LIST=
for /f %%x in (temp.txt) do (
    accurev diff -b "%%~x"
    IF errorlevel 2 (
        echo VCS problem with this file: %%~x
    ) ELSE (
        set FILE_LIST=!FILE_LIST! %%x
    )
)