朝野新月のブログ

おもにIT関係の記事を書いてます。

コマンドプロンプトのif errorlevelの落とし穴

直前に実行したコマンドの戻り値がerrorlevelに設定されるので、この値を使って分岐することはよくあると思います。

ここで、「errorlevelが1なら"errorlevelは1です"を表示する」という処理をしようとして

if errorlevel 1 echo errorlevelは1です

とするのは間違いです。なぜかというと、「if errorlevel 数値 コマンド」というのは、errorlevelの値が数値以上の場合にコマンドを実行するからです。この場合、errorlevelが10でも100でも「errorlevelは1です」が表示されてしまいます。

正しく処理するには以下のようにします。

if %errorlevel% == 1 echo errorlevelは1です

ちなみに、==のかわりにEQUを使えます。