Windows XP真的有错误的错误代码吗?

时间:2013-06-30 07:51:47

标签: windows batch-file cmd

我认为自己是一个非常精通windows批处理编程的人,但是当我读到Windows XP可以将负面错误代码返回到批处理文件时,我感到很震惊。 如果这是真的,我将不得不修复数百个批处理文件。

来源:https://stackoverflow.com/a/734744/2536047

  1. 有证据吗?我从来没见过。
  2. 仅针对所有较新的窗口或Windows XP吗? (虽然如果有证据,我希望我能自己测试一下)

2 个答案:

答案 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