在Windows批处理脚本中使用ERRORLEVEL进行错误处理

时间:2014-01-31 17:11:24

标签: windows batch-file

我们的脚本中有一些错误处理设置如下所示:

set ret = %ERRORLEVEL%
if %ERRORLEVEL% == 0 GOTO PPCOK
if not %ret% == 0 GOTO ERROR1

其他人写了上述内容,但我对它实际上正常工作有一些担忧。

  1. 我已经读过,如果你检查ERRORLEVEL = 0,它实际上是检查errorlevel是0还是更高。我的假设是它总是会转到PPCOK标签上?

  2. 此外,网上大多数示例使用“IF ERRORLEVEL 1”或某些显示“IF%ERRORLEVEL%EQU 1”及以上使用“IF%ERRORLEVEL%== 0”我想知道是否有效选择使用这三种方法中的哪一种的情况呢?

  3. 在旁注中我不确定为什么他们将errorlevel存储在另一个变量中并在第二个if语句中使用它而不是仅仅执行另一个IF NOT%ERRORLEVEL%...

1 个答案:

答案 0 :(得分:0)

批处理对SET语句中的空格敏感。 SET FLAG = N将名为“FLAG Space ”的变量设置为值“ Space N”

如果IF ERRORLEVEL n为n 或大于n ,则

errorlevel为TRUE。因此IF ERRORLEVEL 0总是如此。 IF NOT ERRORLEVEL 1是对errorlevel = 0的测试。 IF %ERRORLEVEL%==0也是如此,前者可以在一个区块中使用,但后者不能。