我认为自己是一个非常精通windows批处理编程的人,但是当我读到Windows XP可以将负面错误代码返回到批处理文件时,我感到很震惊。 如果这是真的,我将不得不修复数百个批处理文件。
来源:https://stackoverflow.com/a/734744/2536047
答案 0 :(得分:4)
您可以使用以下script.bat
@ECHO Off &SETLOCAL
EXIT /b -1
会话日志:
>type script.bat @ECHO Off &SETLOCAL EXIT /b -1 >script >echo %errorlevel% -1
答案 1 :(得分:2)
Windows进程的退出代码是32位有符号整数,但Microsoft经常不将它们视为有符号数。它们的主机错误代码以十六进制表示,MSB打开。示例:SMS Error Codes
@ Endoro的例子足以证明。退出代码范围为[-2147483648,2147483647]。 这是一个演示限制的脚本:
SETLOCAL
PROMPT $G$G$G$S
:: [-2147483648,2147483647]
CALL :TEST_EXIT -2147483648
ECHO %ERRORLEVEL%
CALL :TEST_EXIT -2147483649
ECHO %ERRORLEVEL%
CALL :TEST_EXIT 2147483647
ECHO %ERRORLEVEL%
CALL :TEST_EXIT 2147483648
ECHO %ERRORLEVEL%
GOTO :EOF
:TEST_EXIT
EXIT /B %1
...和输出(注意溢出/下溢):
C:\temp\so>SETLOCAL
C:\temp\so>PROMPT $G$G$G$S
>>> CALL :TEST_EXIT -2147483648
>>> EXIT /B -2147483648
>>> ECHO -2147483648
-2147483648
>>> CALL :TEST_EXIT -2147483649
>>> EXIT /B -2147483649
>>> ECHO 2147483647
2147483647
>>> CALL :TEST_EXIT 2147483647
>>> EXIT /B 2147483647
>>> ECHO 2147483647
2147483647
>>> CALL :TEST_EXIT 2147483648
>>> EXIT /B 2147483648
>>> ECHO -2147483648
-2147483648
>>> GOTO :EOF