Windows プロセスの終了コードは 32 ビットの符号付き整数ですが、Microsoft では符号付きの数値として扱わないことがよくあります。エラー コードのホストは、MSB がオンになっている 16 進数で表されます。例: SMS エラー コード
@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