• ベストアンサー

複数の処理の終了を待ちたい

お世話になります。以下、教えていただけますでしょうか? バッチファイル(A.bat)を作成しています。 そのなかで、a,b,c,dの複数のプログラムを、前処理の終了を待たずに起動させ、a,b,c,d全てが終了するのを待って、eというプログラムを実行させたいのです。 --------------- start a start b start c start d --------------- この記述で、a,b,c,dが一度に起動することは確認できました。 しかし、この後の、「a,b,c,d全ての終了を待ってeを起動させる方法」というのが分かりません。 教えていただけますでしょうか? それとも、そもそも、バッチでは実現不可能なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • cbd_mei
  • ベストアンサー率55% (143/259)
回答No.4

パッと思いつくのが下のような処理でした。 各バッチファイルの最後に以下の処理を追加する。 ・終了したことを示すファイルを作るようにする ・各バッチファイルが作成した4つのファイルの存在を確認して存在していた場合は   最後のバッチファイルを実行するようにする(そして4つのファイルを削除する)  4つの存在が確認できない場合はそのまま終了する これで実現可能だと思いますが、複数のバッチが同時に終了してしまった場合に どのような挙動になるかが分かりません。こればっかりは確認するしかないと思います。

uhyahyahya
質問者

お礼

いろいろ調べてみましたけど、やっぱり何らかのプログラムを組むしかないようですね。ありがとうございました。

その他の回答 (3)

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.3

>前処理の終了を待たずに起動させ、 見落としてました。 私のレスはスルーしてください。

  • marbin
  • ベストアンサー率27% (636/2290)
回答No.2

バッチファイルではないですが・・・。 http://msdn.microsoft.com/ja-jp/library/cc364421.aspx

  • eroermine
  • ベストアンサー率18% (83/444)
回答No.1

プログラム a,b,c,d が 終了を e に通知するメッセージ通信をしなければなりません。 あるいは e (を起動するプログラム) が a,b,c,d の実行終了を監視する。 あるいは a,b,c,d がなんらかのファイルを占有し、その開放を待って e が起動する。 バッチで不可能というよりも Windowsの標準機能ではない。 ただしそれが可能なプログラムを作成するのは難しくありません。 Cで百行くらい

uhyahyahya
質問者

お礼

いろいろ調べてみましたけど、やっぱり何らかのプログラムを組むしかないようですね。ありがとうございました。

関連するQ&A

  • VBAから複数のバッチファイルを実行する際に、1つの処理が終了するまで

    VBAから複数のバッチファイルを実行する際に、1つの処理が終了するまで次の処理を待機させる方法について こんにちは。VBA初心者です。 Shell関数を使って複数のバッチを連続して実行するプログラムを書きたいのですが、前のバッチ処理が終了する前に次のバッチが実行されてしまいエラーになってしまいます。 1つのバッチ処理が終了するまで、次の処理を待機させるようなことは可能でしょうか。 具体的には、B列に「test_01.txt」「test_02.txt」... といったファイル名が入力されていて、隣のA列に何らかの文字/記号があった場合は、指定されたバッチ(ファイル名.bat)が実行されるということをやりたいと考えています。 以下のようなプログラムを書いてみましたが、実行するバッチが複数になるとうまくいきせん。 どうしたら問題を回避できるか、ご教示いただけないでしょうか。 よろしくお願いします。 Sub バッチを実行() i = 7 'リストの開始行 Const myPath As String = "D:\sample_batch\"   Const endPath As String = ".bat"  For i = 7 To 200 '7行目から200行目まで実行 If Cells(i, 1).Value <> "" Then Shell (myPath & Cells(i, 2).Value & endPath) End If Next End Sub

  • batを逐次呼ぶbatファイルをバックグラウンド起動したい

    バックグラウンド起動するときは、STARTを使う、ということまではわかったのですが、 ---a.bat--- @echo off start b.bat exit ----------- ---b.bat--- @echo off start /wait c.bat start /wait d.bat echo end exit ----------- とすると、b.batのc.batを起動した時点で終了してしまうようです。 b.bat起動→c.bat起動→d.bat起動→「end」表示 とするにはどうしたらいいでしょうか? b.batの内容を出来ればしなくないのですが…。

  • バッチファイル内のコマンドプロンプトを1つずつ実行するにはどうしたらよいでしょうか?

    はじめまして。 ご質問なんですが、バッチファイル内のコマンドプロンプトを1つずつ実行するにはどうしたらよいでしょうか? 以下にバッチファイルの中身を記述します。 kidou.bat ------------------------------------------------------- start /D "C:\Program Files\Mozilla Firefox" firefox start /D "C:\Program Files\Mozilla Firefox" firefox ------------------------------------------------------- 1つ目のfirefoxが起動してから、 2つ目のfirefoxが起動する、という形です。 わかりにくくて申し訳ないですが、よろしくお願いします。

  • 【バッチ】外部リストを参照したコピー処理について

    バッチの作成(DOSコマンド)で質問です。 今、フォルダ(とサブフォルダ、ファイル)をコピーするバッチを作成していますが、コピー対象のフォルダが複数あり今後も増える可能性があるので外部リスト化しようと下記のようなバッチとリストファイルを作成ました。 【バッチの記述(抜粋)】 for /f %%i in (リストファイル) do ( xcopy /i /e /q /y /r /v "%%i\*" "コピー先フォルダ\%%i" ) 【リストファイルの記述】 \\A\1\2\3\4 \\B\1\2\3\4 \\C\1\2\3\4 上記でリストにあるフォルダのコピーはできるのですが、これだとリスト内の全フォルダがコピー対象になってしまいます。 このリストファイルは似た処理を行う別のバッチでも参照させたく、またバッチ毎に参照するパスを分けたいのです。 (リストファイルを分ければ簡単ですが、メンテナンスをラクにしたくて・・) 例えば下記のようにラベルを付与し、ラベルから次のラベルまでを対象にする、などです。 【リストファイルの記述】 :bat1 \\A\1\2\3\4 \\B\1\2\3\4 \\C\1\2\3\4 :bat2 \\D\1\2\3\4 \\E\1\2\3\4 \\F\1\2\3\4 :bat3 \\G\1\2\3\4 \\H\1\2\3\4 \\I\1\2\3\4 何かいい方法はありますでしょうか?

  • 複数ファイルの処理が終わった後シャットダウンしたい

    タイトル通りです 以下の記述をしたbatに複数のファイルをドラッグアンドドロップし、別のbatに処理を投げています for %%a in (%*) do C:\Users\~~~.bat %%a すべてのファイルの処理が終わった後、windowsをシャットダウンしたいのですが、やり方が分かりません 何か方法があれば教えて下さい

  • バッチファイルで複数のWebページやアプリを起動する方法

     毎朝、複数のWebページとアプリを起動するのですが、いちいちIEを起動して、お気に入りからURLを選択したり、アプリを起動していたのですが、バッチファイルで一度にすべて起動できるのではないか。という情報を得たのでですが、良くわかりません。ご教示いただけますでしょうか。 私の環境ですが、OSはXPです。  今まで知り得た情報は下記のとおりです。 メモ帳を新規に起動して start "" "C:\Program Files\Internet Explorer\IEXPLORE.EXE" start "" "http://yahoo.co.jp/" start "" "C:\Program Files\Internet Explorer\IEXPLORE.EXE" start "" "http://www.google.co.jp/" start "" "C:\Program Files\Internet Explorer\IEXPLORE.EXE" start "" "http://goo.ne.jp/" start "" "C:\WINDOWS\system32\notepad.exe" と、入力し、ファイル名を 朝.bat にして保存する。 朝.batをダブルクリックすると、yahooとgoogleとgooとメモ帳がそれぞれ起動できると思ったのですが、IEが1つ多く起動します。  あと、可能であれば、最大化して開くためのオプションとかもあれば併せてご教示ください。  

  • Javaプログラムからバッチ起動

    Runtimeクラスを使用し、バッチファイルをJavaプログラム内で呼び出す処理を実装しました。Javaにより呼び出されるバッチファイル(X.bat)は、他の2つのバッチファイル(A.bat、B.bat)を呼び出すようにプログラムされています。ここで質問なのですが、実際にこのJavaプログラムを実行しX.batを呼び出し、最終的にA.bat、B.batが呼ばれているかどうかの確認をしたところ、どうもB.batが呼ばれずにA.bat終了後、処理が終了してしまっているなのですが、この原因についてご教授いただきたく質問いたしました。

    • ベストアンサー
    • Java
  • サービスプロセスからバッチファイルを起動すると、cmd.exeが増幅する。

    私が作成したサービスプログラム(コントロールパネル-管理ツール-サービスに表示されるプロセス)から、以下の記述のバッチファイル(test.batとします)をCreateProcess()にて起動したところ、test.bat内のap.exeは起動せず、cmd.exeのみが増幅していきます。(タスクマネージャにて確認)起動できる場合もあるのですが、何が原因なのでしょうか? test.batの内容 start /B "C:\Program Files\TEST" ap.exe

  • バッチ処理でAcess処理終了後にメッセージがでるのはなぜですか?

    バッチファイルで、Access2000のマクロ「AutoExec」を起動させて処理をおこないたいのですが、 「AutoExec」の処理が終了し、Accessが終了すると、以下のメッセージボックスが表示されてしまいます。 メッセージボックスの内容 「'C\xxx.mdb'がみつかりません。名前を正しく入力したかどうかを確認してから、やり直してください。 ファイルを検索するには、「スタート」ボタンをクリックしてから、[検索]をクリックしてください。」 Access2000は、該当のディレクトリに、置いていますし、 ちゃんとAccess2000のマクロ「AutoExec」の処理は実行されています。 Access2000の処理は、正常に終了しているのに、こんなメッセージが表示されては、 意味がありません。 このAccess2000の「AutoExec」のバッチ処理は、何十個もあるバッチ処理の一部です。 バッチ処理の途中でメッセージが出るとその後自働で、行われる予定のバッチ処理が、 行われないので非常に困ってます。 どうしたらよいですか? とにかく、バッチ処理で、Access2000を起動させ、マクロ「AutoExec」を使用して処理を行いたいのです。 その間、どんなことがあっても、メッセージボックスの表示などで、処理を止めてはならないのです。 お願いします。誰か教えてください。 バッチファイル名(このバッチファイルの次に、Access2000とは、無関係のバッチファイルの処理がたくさんあります) xxx.bat バッチファイルの内容 CALL c:\yyy.mdb(又は、startc:\yyy.mdb)

  • バッチ処理中のコマンドの自動強制終了

    Windows7で、バッチファイルから複数のコマンドを実行しています。 あるコマンドの実行が一定時間以上になったらそのコマンドを強制終了して、次のコマンドに移るようにする方法を教えてください。 例えば、下記のバッチファイルがあるとします。 バッチファイル開始 programA programB programC バッチファイル終了 以上を実行した際に、programBの実行時間が1分以上になったらprogramBを自動的に強制終了して 次のprogramCを実行する必要があります。 また、ユーザーが起動するプログラムは、上記のバッチプログラムだけとします。 また、ダイアログボックスやメッセージwindow等のGUIは表示したくないです。 このようなことを実現する方法を教えてください。