- ベストアンサー
バッチファイルで実行エラーが発生しても次のスクリプトを実行する方法
- バッチファイルで複数のスクリプトを順に実行する際、実行エラーが発生した場合でも次のスクリプトを実行させる方法を知りたいです。
- 具体的には、3つのバッチファイルを順に実行する場合に、最初のスクリプトでエラーが発生しても、次のスクリプトを実行する方法を教えてください。
- バッチファイルでエラーハンドリングを行い、エラーが発生しても次のスクリプトを実行させる方法を教えてください。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
>1.batが終了しなくても、 >2.batを実行させたいと考えています。 なるほど。簡単そうに出来るのは start cmd /C 1.bat start cmd /C 2.bat ですかね。
その他の回答 (4)
- JavaJavax2
- ベストアンサー率22% (68/305)
そもそもxcopyだけを使うのに1が終了しないなんて事があるんですか?他の精査されていないプログラムを使うならわかりますが・・xcopyはコマンドラインから使うことを意識されて作られた(というかコマンドライン前提の)プログラムですよ?当然バッチからの起動も考慮しているでしょう。ゆえに正しくパラメータを与えれば途中で止まったりするような事はないはず?です。 テストはしてみました?ロックがかかってると止まる?そんな事はないと思いますけど・・。予想しないエラーってなんですか? それにxcopyがある時点で止まっていたとして(プログラムとしては動いているといえます。)それがエラーなのか。正常に動作しているか外部から検出する方法は標準エラー出力をチェックするくらいしか出来ないと思います。 どこかで止まっているとして、それが単に時間のかかる処理を行っている最中なのか、エラーなのか外部からどうやって見分けるのでしょうか?一定の時間がきたらタイムアウトですか?それならやろうと思えば技術的には出来ますけど・・。 もっとご自身でテストを行って具体的にこういう問題がありますと提示してください。それならば回答を示すことはできるかもしれませんが、現時点では漠然としすぎています。手間のかかるテストまでこちらでできませんよ。
- JavaJavax2
- ベストアンサー率22% (68/305)
xcopy には上書きを確認しないオプションがあります。batで実行させたい時にはそれを使います。ファイルロックに関しては未テストなのですが処理が止まってしまうのですか?普通はコピーできませんでしたのエラーがでて次の処理に移るかと思いますけど。。テストしてみればいいんでしょうけど排他ロックかけるプログラム書いてテストするのがめんどい。
お礼
回答ありがとうございます。 説明不足でもうしわけありません。 確かにそうなのですが、予想しないエラーが起きた場合に、 1.batが終了せず、途中で止まった場合に、2.batを実行させたいと考えています。 1.batが正常に終了する場合は、 1.bat終了後に2.batが動くようにしたいと考えています。
- JavaJavax2
- ベストアンサー率22% (68/305)
試してみたけどうまくいくけど? バッチファイルはプログラムのエラーチェックなんてやらないから、プログラムが終了して処理が戻ってくる限り次のプログラムは実行されますよ。無限ループとか長時間かかる処理なんかやると次に進まないけど・・ 何ができないのですか?
お礼
回答ありがとうございます。 説明不足で申し訳ありません。 1.batの中身は xcopy C\test\*.* \\server1\test なのですが、 *.*の中のあるファイルが使用中でコピーできなかったり、 あるいは、コピー先に同じ名前のファイルがあったりした場合に 上書きするかどうかを聞くところでとまったりした場合などに、 1.batが終了しなくても、 2.batを実行させたいと考えています。 基本的には1.batのあとに2.batを実行させたいのですが、 上記のような場合に1.batが実行途中でとまったとしても、 2.batを実行させたいと考えています。 可能でしょうか。 よろしくお願いします。
- goosyu
- ベストアンサー率58% (36/62)
バッチファイルはコマンドプロンプト上で実行されるものですよね。 call.batのままで上手くいかないですかね。 具体的に「1.batがエラーになっても」というのはどの様なエラーでしょうか?
お礼
回答ありがとうございます。 説明不足で申し訳ありません。 1.batの中身は xcopy C\test\*.* \\server1\test なのですが、 *.*の中のあるファイルが使用中でコピーできなかったり、 あるいは、コピー先に同じ名前のファイルがあったりした場合に 上書きするかどうかを聞くところでとまったりした場合などに、 1.batが終了しなくても、 2.batを実行させたいと考えています。 可能でしょうか。 よろしくお願いします。
お礼
回答ありがとうございます。 説明不足でもうしわけありません。 教えていただいた方法をためしたのですが、 1.batが終了しなくても 2.batが実行するのは 1.batでエラーになったときのみにしたいと考えています。 1.batが正常に終了する場合は、 1.bat終了後に2.batが動くようにしたいと考えています。