通常、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