私は、他のバッチファイルを起動するWindowsバッチファイルを持っています。最初のバッチで何かを実行する前に、他のすべてのバッチファイルが終了するのを待つ方法はありますか?私は、他のコマンドを並行して実行する必要があるため、使用/待機できません。コマンドが完了するまで待つ
答えて
私の提案はCALL
コマンドを使用することです。 Batch Filesから例:
Batch1.batリスト:
REM Batch1.bat
SET ABC=1
CALL BATCH2.BAT %ABC%
ECHO ABC = %ABC%
BATCH2.BAT %ABC%
ECHO ABC = %ABC%
Batch2.batリストは次のとおりです。
REM Batch2.bat
SET ABC=%ABC%%1
EDIT:ここ@Andriy M、からのフィードバックに基づいて、 2つのバッチの改善版です:
バッチ1:
@ECHO OFF
REM Batch1.bat
SET ABC=1
CALL batch2.bat %ABC%
ECHO 1. ABC = %ABC%
CALL batch2.bat %ABC% REM test this line with CALL and without
ECHO 2. ABC = %ABC%
バッチ2:
@ECHO OFF
REM Batch2.bat
SET tmout=5
echo sleeping %tmout% seconds...
REM this introduces a timeout by using a nonexistent ip address
PING 1.2.1.2 -n 1 -w %tmout%000 > NUL
echo done sleeping
SET ABC=%ABC%%1
は、私がコメントテストにCALLとし、なく、この行を書いたbatch1内の行を参照してください。その行をCALL
とし、CALL
を付けずにそのバッチを2回実行します。
コンソールから出力CALL
なし:
C:\temp>batch1.bat
sleeping 5 seconds...
done sleeping
1. ABC = 11
sleeping 5 seconds...
done sleeping
そして今CALL
とコンソールからの出力:
C:\temp>batch1.bat
sleeping 5 seconds...
done sleeping
1. ABC = 11
sleeping 5 seconds...
done sleeping
2. ABC = 1111
違いに注意してください:私たちは第二のエコーを取得し、q.e.d.
つまり、CALLなしでは、CALLと同様に待ちますが、終了するのは...だけです。 :) –
@Andriy M:これまでに経験したことに基づいて、それは**ではないので、CALLは実行されません - 呼び出しはバッチ/コマンドの終了を待たずにすぐに次の行に戻ります長い操作でそれを試してください)。 – woohoo
それはとても独特なので、あなたのサンプルスクリプトを使って私の期待を検証しなければなりませんでした。私はWindows 7 SP1のコマンドプロンプトから最初のバッチを実行し、2つのスクリプトは私のために働いた。2回目に呼ばれたときに 'batch2.bat'が終了した後に実行が終了しました。つまり、 'batch1.bat'の最後の行は実行されませんでした。 CALLを使わないと実行が最初のバッチに戻り、待たずにいると言っていることで、何をテストしましたか? –
実行中のバッチファイルごとに1つずつ、複数のフラグファイルを使用できます。たとえば、次のように
同時バッチファイルの残りの部分を入力し、終了する前にそれを削除し、同じよう際に最初にバッチファイルがFlagfile.1を作成(Flagfile.2を、...)
メインファイルだけすべてのフラグファイルが消えるのを待たなければなりません。例えば、メインのファイルに:、
start Batch1
start Batch2
.....
:wait
if exist flagfile.* goto wait
任意のバッチファイルで、たとえばBatch1:
echo %time% > flagfile.1
echo Do my process...
del flagfile.1
exit
@woohoo:すみません、私はここに混乱があると思います。問題は、親のものを続ける前に、すべての子バッチが終了するのを待つ方法についてです。この問題をCALL経由で解決する方法はありませんが、STARTを使用して解決します。 質問者が言ったように、彼は/ WAITを使用できません。これはSTARTコマンドのオプションです。解決方法は、親Batchファイルがすべての子が終了する時を知ることを可能にするセマフォーシステムを実装することです。私は非常にシンプルなセマフォーシステムをファイルの存在に基づいて提案しましたが、それは完全に動作するはずです。 なぜ私の答えはdownvoteを受け取りましたか? :-( – Aacini
+1、なぜこれが実際に質問に答える唯一の答えなので、実際に下の投票をしているのですか?メインファイルでフラグファイルを作成する方が良いでしょう。 – dbenham
LOVE this!VSでは、各サービスプロジェクトのpost-buildイベントで 'CALL'を使用して、それぞれの* .cs参照ファイルをダウンロードして、単純なアセンブリ参照のすべてを含む別のプロジェクトに格納しました。 START/b/i'を実行して、同じウィンドウを開いて、同じウィンドウを開き、お互いに影響を与えることができないことを発見しました。プロジェクトを自動的に更新します。 –
- 1. C#でコマンドが完了するのを待っています
- 2. フレックスエフェクトが完了するのを待つ
- 3. グレースフルnode.jsのシャットダウンでクリティカルセクションが完了するまで待つ
- 4. NSURLConnectionの完了を待つ
- 5. VBA:BloombergのBDP呼び出しが完了するまで待つ
- 6. SwingWorkerが完了するまで待つ方法は?
- 7. 操作が完了するまで待つ
- 8. assetForURLブロックが完了するまで待つ
- 9. Watir-Webdriverダウンロードが完了するまで待つ
- 10. JavascriptはWebsocketの "send"コマンドが完了するのを待っていますか?
- 11. 他のプロセッサがMPIでタスクを完了するのを待つ
- 12. watir-webdriverでアニメーションが完了するのを待つ方法は?
- 13. Shell = TrueのPythonのSubprocess.Popen。完了するまで待つ
- 14. bashスクリプトは同時コマンドを実行して、完了するのを待つことができますか?
- 15. バッチ - ピックアップする前にファイルが完了するのを待つ
- 16. Application.Calculateが終了するまで待つ
- 17. NSXMLParser:ロードが完了するまでどのように待つのですか?
- 18. Ajaxはリダイレクトが完了するまで待機します。
- 19. スレッド1のスレッドが完了するまで待ちます。
- 20. jquery .htmlメソッドがレンダリングを完了するまで待ちます
- 21. 複数のAsyncTaskが完了するまで待ちます
- 22. NSURLConnection - 完了を待つ方法
- 23. ダウンロードの完了を待つ方法は?
- 24. SKAction完了待ち
- 25. jQuery - fadeInを実行する前にfadeOutが完了するまで待つ
- 26. 非同期タスクが完了するまで待機する
- 27. 非同期要求が完了するのを待つ
- 28. C#ユーザーがテキストボックスに入力を完了するのを待つ
- 29. 断片化が完了するのを待つ
- 30. 子ウィンドウのロードが完了するのを待つ
あなたはいくつかのコードを投稿してもらえますか?あなたの問題が何であるかはわかりません。 – steenhulthin
'call ...'を使って他のバッチを起動しますか? – woohoo