« コマンドプロンプトやバッチファイルで使えるNOPコマンドは? | トップページ | ファイル名に=;,や全角空白を含むファイルをバッチファイルにドロップすると、ファイル名が分割される。(その4) »

2009年2月 5日 (木)

IF ERRORLEVELの零判定

ERRORLEVELが負数のときには、
IF ERRORLEVEL 1 ECHO 正
IF NOT ERRORLEVEL 1 ECHO 零または負
なので、零判定、非零判定に使えまへん。

ほな、どないしまひょ。零判定は2段重ねかな。

IF ERRORLEVEL 0 IF NOT ERRORLEVEL 1 ECHO 零
IF NOT ERRORLEVEL 1 IF ERRORLEVEL 0 ECHO 零

一方、非零判定は、正と負の二つに分かれてしまいます。

IF ERRORLEVEL 1 (ECHO 正) ELSE IF ERRORLEVEL 0 (ECHO 零) ELSE ECHO 負

ERRORLEVELを絶対値に変換すれば楽かも。

IF NOT ERRORLEVEL 0 CMD/CEXIT %ERRORLEVEL:~1%
IF ERRORLEVEL 1 ECHO 非零
IF NOT ERRORLEVEL 1 ECHO 零

IF ERRORLEVELを使わない零判定なんてのもあります。

CMD/CEXIT %ERRORLEVEL% && ECHO 零 || ECHO 負

« コマンドプロンプトやバッチファイルで使えるNOPコマンドは? | トップページ | ファイル名に=;,や全角空白を含むファイルをバッチファイルにドロップすると、ファイル名が分割される。(その4) »