2

バッチ ジョブから 2 つのバックグラウンド プロセスを開始し、それらを待つ必要があります。Unix シェル アナログは次のとおりです。

myprocess1 -flags1 &
pid1=$!

myprocess2 -flags2 &
pid2=$!

wait ${pid1}
wait ${pid2}

何か案は?

4

2 に答える 2

5

開始ラッパーを使用して解決できます。

ラッパーはプロセスを開始しstart /wait、プロセスが終了した後、シグナリングのためにファイルを削除します。

ラッパーを介して開始する最初のプロセス、2 番目に開始できるstart /wait.
その後、ファイルを待つだけです。

Echo > waiting.tmp 
Start cmd /c wrapper.bat myprocess1 -flags1
start /wait myprocess2 -flags2

:loop
if exist waiting.tmp goto :loop

wrapper.bat の内容

start /wait %*
del waiting.tmp
于 2013-02-07T10:43:15.323 に答える
1

START次のコマンドを使用します。

START /WAIT myprocess1 -flags1

唯一の問題は、プロセスを並行して実行して両方を待機させることはできないということです。プロセスは順番に実行する必要があります。

を使用せずに 2 つのプロセスを開始し、コマンドSTART /WAITの出力を定期的に解析して、それらがまだ実行されているかどうかを確認することで、同時実行を実行できる場合があります。TASKLISTこれはより複雑になり、もちろんビジーな待機になりますが、理論的にはプロセスを同時に実行できます。

于 2013-02-07T09:45:53.793 に答える