dポイントプレゼントキャンペーン実施中!

今回初めてバッチファイルを作成しています。

Aをする&Bをする&Cをする
IF ERRORLEVEL 1 (エラーに飛ぶ)

という文を作ったのですが、この
ERRORLEVEL 1ってどこを見てるんでしょうか。直前のCに発生するエラーしかみないのでしょうか。それとも結合文「Aをする&Bをする&Cをする」を見るのでしょうか。

Aをする、Bをする、Cをするのそれぞれに発生するエラーを見つけるにはどうしたら良いのでしょうか。

ヒントでもよいのでアドバイスいただけると助かります。宜しくお願いします。

A 回答 (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 (エラーに飛ぶ)

と行を分けて書くのが一番確実ですよね。
(&の替わりに&&を使うとエラーが出たコマンド以降を実施しないということができます。コマンド毎にエラー処理が異なる場合は分けて書くのが一番でしょう)
    • good
    • 0

詳しくもなく、うろ覚えですが...



> 直前のCに発生するエラーしかみないのでしょうか。

そうだったと思います。直前のプログラムが、終了時に残す情報です。

条件判断で、AND や OR は使えないので、
条件分岐 IF を必要数使って表現しなくてはなりません。

> Aをする、Bをする、Cをするのそれぞれに発生するエラーを見つけるにはどうしたら良いのでしょうか。

A,B,C は別プログラムなのですよね。
ならば A,B,C それぞれの直後に条件分岐を記述するか、
(この記述方法は冗長部分が多くなりますが仕方ないです)
環境変数に値を設定するアプリを利用して
状態を一時的に保持しておけばいいです。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!