2

私は Windows のバッチ プログラミングに精通していると思っていますが、Windows XP が負のエラー コードをバッチ ファイルに返す可能性があることを知ってショックを受けました。それが本当なら、何百ものバッチ ファイルを修正する必要があります。

ソース: https://stackoverflow.com/a/734744/2536047

  1. その証拠はありますか?私は一度も会ったことがありません。
  2. これはすべての新しい Windows に固有のものですか、それとも Windows XP のみですか? (ただし、証拠がある場合は、自分でテストできることを願っています)
4

2 に答える 2

5

次の方法でテストできますscript.bat

@ECHO Off &SETLOCAL
EXIT /b -1

セッションログ:

> script.bat と入力
@ECHO オフ &SETLOCAL
終了 /b -1
>スクリプト

>%エラーレベル%をエコー
-1
于 2013-06-30T08:06:51.597 に答える
2

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 
于 2013-07-01T03:53:45.527 に答える