我认为自己非常精通 Windows 批处理编程,但当我得知 Windows XP 可以将负错误代码返回到批处理文件时,我感到很震惊。如果这是真的,我将不得不修复数百个批处理文件。
来源:https ://stackoverflow.com/a/734744/2536047
- 有任何证据吗?我从来没有见过一个。
- 这是否仅适用于所有较新的 Windows 或 Windows XP?(虽然如果有证据,我希望我能够自己测试它)
我认为自己非常精通 Windows 批处理编程,但当我得知 Windows XP 可以将负错误代码返回到批处理文件时,我感到很震惊。如果这是真的,我将不得不修复数百个批处理文件。
来源:https ://stackoverflow.com/a/734744/2536047
您可以使用以下方法对其进行测试script.bat
:
@ECHO Off &SETLOCAL
EXIT /b -1
会话日志:
>输入脚本.bat @ECHO 关闭 &SETLOCAL 退出 /b -1 >脚本 >回显%错误级别% -1
Windows 进程的退出代码是一个 32 位有符号整数,尽管 Microsoft 经常不将它们视为有符号数字。在 MSB 打开时,它们的许多错误代码以十六进制表示。示例:短信错误代码
@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