Windows批处理:在后台运行进程并等待它

时间:2013-02-07 09:43:17

标签: windows batch-file windows-shell

我需要从批处理作业中启动2个后台进程,然后等待它们。 Unix shell模拟是:

myprocess1 -flags1 &
pid1=$!

myprocess2 -flags2 &
pid2=$!

wait ${pid1}
wait ${pid2}

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

您可以使用启动包装器来解决它。

包装器使用start /wait启动进程,并在进程完成后删除用于发送信号的文件。

您通过包装器开始的第一个过程,第二个过程可以从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

答案 1 :(得分:1)

使用START命令:

START /WAIT myprocess1 -flags1

唯一的问题是AFAIK你不能让进程并行运行并等待它们 - 它们必须按顺序运行。

您可以通过启动没有START /WAIT的两个进程来执行并发,然后定期解析TASKLIST命令的输出以查看它们是否仍在运行。这将变得更加复杂,当然这是一个忙碌的等待,但理论上会允许进程同时运行。