使用这个简单的 C 程序来操作退出代码:
#include <stdio.h>
main(int argc, char *argv[]) {
if (argc == 2) {
// return integer of argument 1
return strtol(argv[1], NULL, 10);
}
else {
return 0;
}
}
我们可以像这样在批处理文件中测试退出代码:
test.exe 0
IF ERRORLEVEL 0 PAUSE
条件:0 => 0 == TRUE
当 时ERRORLEVEL = 0
,将发生暂停,因为逻辑是>=
or大于或等于。这很重要,因为目前尚不清楚该条件不是==
比较。
请注意,替换为1 => 0
也将为真,因此也会发生暂停。对于任何正数都是如此。
我们只能通过以下方式触发相反的效果0
:
test.exe -1
IF ERRORLEVEL 0 PAUSE
条件:-1 => 0 == FALSE
由于 an通常意味着ERRORLEVEL
有1
错误,0
没有错误,我们可以增加比较条件中的最小值来获得我们想要的结果,如下所示:
test.exe 0
IF ERRORLEVEL 1 PAUSE
条件:-1 => 1 == FALSE
条件:0 => 1 == FALSE
条件:1 => 1 == TRUE
在这个例子中。脚本将在ERRORLEVEL
is1
或更高时暂停
请注意,这允许-1
退出代码与0
. 如果一个人只想0
不暂停怎么办?我们可以使用单独的语法:
test.exe 0
IF NOT %ERRORLEVEL% EQU 0 PAUSE
条件:-1 != 0 == TRUE
条件:0 != 0 == FALSE
条件:1 != 0 == TRUE
在这个例子中,脚本暂停 if %ERRORLEVEL%
is not0
我们可以通过使用 EQU 运算符先检查 if %ERRORLEVEL% EQU 0
,然后使用 NOT 运算符来获得相反的效果,相当于!=
运算符。但是,我相信这只适用于 NT 机器,而不是普通的 DOS。
参考:
http://chrisoldwood.blogspot.ca/2013/11/if-errorlevel-1-vs-if-errorlevel-neq-0.html
http://ss64.com/nt/errorlevel.html