私はこのようなものが欲しいです:-if %ERRORLEVEL% GEQ 1 && %ERRORLEVEL% neq 255 GOTO Not closed by user
。しかし、この構文は機能していません。
これはどうですか? XP以上が必要です、もちろん...
if %errorlevel% GEQ 1 (
if %errorlevel% NEQ 255 goto :NotClosed
::other statements go here, if you need 'em
::don't forget to close the parenthesis on the last statement ->)
さらに明確にするために:
if %errorlevel% EQU 0 (
::commands you want to perform if 0 go here. Notice ->)
else (
::We got here because errorlevel was GEQ 1 or less than one...watch out
::if you program returns negative errorlevels!
if %errorlevel% NEQ 255 goto :NotClosed
::other statements go here. But don't forget the parenthesis ->)
完全を期すために、ここに JPSoftwareのTCC/LE (このようなスクリプトも実行できるコマンドインタープリター)の回答があります。これは、下位互換性のためにJSanchezの回答の構文をサポートしますが、2つのより良い選択肢もあります。独自のもの。
選択肢は…
iff
コマンドiff %ERRORLEVEL% GE 1 then
iff %ERRORLEVEL% NE 255 then
goto :NotClosedByUser
endiff
endiff
iff
を使用すると、括弧で囲まれた複合コマンドの場合のように、変数の展開が「早すぎる」場合に発生するという警告はありません。
if %ERRORLEVEL% GE 1 .and. %ERRORLEVEL% NE 255 goto NotClosedByUser
これには、質問で必要なものとほぼ同じであるという利点があります。 TCCは、互換性のためにGEQ
とNEQ
もサポートしています。はい、goto
コマンドにコロンは必要ありません。