• 締切済み

バッチファイル作成でIF ERRORLEVEL 1を使用したのですが・・

今回初めてバッチファイルを作成しています。 Aをする&Bをする&Cをする IF ERRORLEVEL 1 (エラーに飛ぶ) という文を作ったのですが、この ERRORLEVEL 1ってどこを見てるんでしょうか。直前のCに発生するエラーしかみないのでしょうか。それとも結合文「Aをする&Bをする&Cをする」を見るのでしょうか。 Aをする、Bをする、Cをするのそれぞれに発生するエラーを見つけるにはどうしたら良いのでしょうか。 ヒントでもよいのでアドバイスいただけると助かります。宜しくお願いします。

みんなの回答

  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.2

簡単な実験をしてみました。(zドライブはありません) dir z:&echo aaa&echo bbb echo %errorlebel% 結果、errorlebel は 1 でした。 順序を入れ替えてもやはり1なので、どれか1つでもエラーなら erroelevel はセットされるようです。 >Aをする、Bをする、Cをするのそれぞれに発生するエラーを見つけるにはどうしたら良いのでしょうか。 Aをする IF ERRORLEVEL 1 (エラーに飛ぶ) Bをする IF ERRORLEVEL 1 (エラーに飛ぶ) Cをする IF ERRORLEVEL 1 (エラーに飛ぶ) と行を分けて書くのが一番確実ですよね。 (&の替わりに&&を使うとエラーが出たコマンド以降を実施しないということができます。コマンド毎にエラー処理が異なる場合は分けて書くのが一番でしょう)

すると、全ての回答が全文表示されます。
  • saru_1234
  • ベストアンサー率33% (452/1341)
回答No.1

詳しくもなく、うろ覚えですが... > 直前のCに発生するエラーしかみないのでしょうか。 そうだったと思います。直前のプログラムが、終了時に残す情報です。 条件判断で、AND や OR は使えないので、 条件分岐 IF を必要数使って表現しなくてはなりません。 > Aをする、Bをする、Cをするのそれぞれに発生するエラーを見つけるにはどうしたら良いのでしょうか。 A,B,C は別プログラムなのですよね。 ならば A,B,C それぞれの直後に条件分岐を記述するか、 (この記述方法は冗長部分が多くなりますが仕方ないです) 環境変数に値を設定するアプリを利用して 状態を一時的に保持しておけばいいです。

すると、全ての回答が全文表示されます。

関連するQ&A