Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scripting Windows批处理文件错误级别问题_Scripting_Batch File_Errorlevel - Fatal编程技术网

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

Scripting Windows批处理文件错误级别问题,scripting,batch-file,errorlevel,Scripting,Batch File,Errorlevel,我有一个批处理文件,它从一个文本文件中解析出一堆文件名,并将它们连接成一个单独的强文件,这在前面已经讨论过了。但是,我不希望字符串包含文件,例如,当我通过一些命令(如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

我有一个批处理文件,它从一个文本文件中解析出一堆文件名,并将它们连接成一个单独的强文件,这在前面已经讨论过了。但是,我不希望字符串包含文件,例如,当我通过一些命令(如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
)
问题是-一旦发现一个errorlevel大于2,脚本就会停止执行整个for循环。如果列表中有五个文件,而第三个文件有VCS问题,则脚本只处理前两个文件

如果ERRORLEVEL构造有一个 奇怪的特征。。。如果 返回代码等于或更高 超过指定的错误级别


参考以了解如何处理该功能。

这就是我在这里要说的-对于这个可执行accurev,唯一好的错误级别是0或1,因此任何高于2的错误都应该被捕获。我不明白为什么当它捕捉到一个错误时,它会跳出for循环。看起来每次迭代都不会重置errorlevel。是否可以在循环结束时手动将其重置为0?mmyers:似乎永远不会手动设置errorlevel变量。啊-我看到超链接格式在注释中不起作用。
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
    )
)