在Windows批处理脚本中使用ERRORLEVEL进行错误处理
我们的脚本中有一些错误处理设置,如图所示:在Windows批处理脚本中使用ERRORLEVEL进行错误处理,windows,batch-file,Windows,Batch File,我们的脚本中有一些错误处理设置,如图所示: set ret = %ERRORLEVEL% if %ERRORLEVEL% == 0 GOTO PPCOK if not %ret% == 0 GOTO ERROR1 上面是别人写的,但是我对它是否能正常工作有一些担心 我已经读到,如果你检查ERRORLEVEL=0,实际上就是检查ERRORLEVEL是否为0或更高。我的假设是,它将始终属于PPCOK标签 此外,web上的大多数示例都使用“IF ERRORLEVEL 1”或某些示例显示“IF%ERR
set ret = %ERRORLEVEL%
if %ERRORLEVEL% == 0 GOTO PPCOK
if not %ret% == 0 GOTO ERROR1
上面是别人写的,但是我对它是否能正常工作有一些担心
另一方面,我不知道为什么他们将errorlevel存储在另一个变量中,并在第二个if语句中使用它,而不是仅仅执行另一个if not%errorlevel%…批处理对
SET
语句中的空格很敏感SET FLAG=N
将名为“FLAGSpace”的变量的值设置为“SpaceN”
如果ERRORLEVEL n
为真,如果ERRORLEVEL
为n或大于n<如果ERRORLEVEL 0因此始终为真,则代码><代码>如果不是ERRORLEVEL 1,则测试ERRORLEVEL=0。如果%ERRORLEVEL%==0,则也是如此,但前者可以在块内使用,后者不能。实际上,错误级别被视为有符号的数量。因此,如果错误级别0
并不总是为真,如果错误级别为负以及为零,如果不是错误级别1
将为真。不,如果%errorlevel%==0
只有在错误级别实际为零时才为真。在我看来,这种方法通常更可取,尽管在有人创建了名为ERRORLEVEL
的环境变量的病理情况下,它会失败。您认为不需要使用ret
变量是正确的,事实上,如果第二个语句是完全冗余的,您可以说GOTO error 1
。