小池啓仁 ヒロヒト応援ブログ By はてな

小池啓仁(コイケヒロヒト)の動画など。

小池啓仁 ヒロヒト応援ブログ By はてな

ERRORLEVEL比較時の注意点

通常、FINDコマンドは、指定された文字列が見つからない時は、ERRORLEVELに1を返し、見つかったときは、0を返します。ですので、以下のNGのソースは、一見正しいように思えます。しかし、実際に実行すると、文字列が見つからない時でもARUになってしまうのです。

これは、ERRORLEVELの判定が、実は、『=』(イコール)ではなく、『>=』(以上)なので、そうなってしまうのです。結構、これに泣かされた人がいるのでは…(実は自分)。

回避策は、判定が『>=』なので、IF文の処理順をERRORLEVELの大きい方からにすればOKです。

NG

FIND "AAA" test01.txt
IF ERRORLEVEL 0 GOTO ARU
IF ERRORLEVEL 1 GOTO NAI
:NAI
echo NAI
GOTO END
:ARU
echo ARU 
GOTO END
:END

OK

FIND "AAA" test01.txt
IF ERRORLEVEL 1 GOTO NAI
IF ERRORLEVEL 0 GOTO ARU
:NAI
echo NAI
GOTO END
:ARU
echo ARU 
GOTO END
:END