如何等待多个批处理文件完成

时间:2019-05-30 12:29:37

标签: multithreading batch-file

说我有5个批处理文件,这些文件需要同时运行以节省时间;这5个批处理文件当前都通过以下命令从同一MakeAll批处理文件调用:

START /D PATH "Window Name" BATCH_FILE ARGUMENTS

然后,当前一组(MakeAll)的全部5个都完成运行时,我还需要运行另外2个批处理文件;这2个批处理文件使用相同的命令从同一AssembleAll批处理文件中使用不同的参数调用4次。

理想情况下,我想创建另一个名为DoAll的批处理文件,该文件首先运行MakeAll,然后等待5个关联进程完成,然后调用AssembleAll。

代码

DoAll.bat:

START /D Folder9 "Window9" MakeAll.bat
:: Wait for the above to finish all 5 windows
START /D Folder10 "Window510" AssembleAll.bat

MakeAll.bat:

START /D Folder1 "Window1" prog1.bat
START /D Folder2 "Window2" prog2.bat
START /D Folder3 "Window3" prog3.bat
START /D Folder4 "Window4" prog4.bat
START /D Folder5 "Window5" prog5.bat

AssembleAll.bat:

START /D Folder5 "Window5" prog5.bat
START /D Folder6 "Window6" prog6.bat
START /D Folder7 "Window7" prog7.bat
START /D Folder8 "Window8" prog8.bat

所有progX.bat文件都包含:

ECHO Running

1 个答案:

答案 0 :(得分:1)

尽管有问题标题,但我认为您不是要“同步”批处理文件,而是要“等待所有批处理文件完成后再继续”。我使用前面的短语在该网站上完成了一个简单的搜索,发现了一个名为How to wait all batch files to finish before exiting?的问题,我认为这是您正在寻找的解决方案:

echo MakeAll.bat starts
(
START /D Folder1 "Window1" prog1.bat
START /D Folder2 "Window2" prog2.bat
START /D Folder3 "Window3" prog3.bat
START /D Folder4 "Window4" prog4.bat
START /D Folder5 "Window5" prog5.bat
) | pause
echo MakeAll.bat ends

echo AssembleAll.bat starts
(
START /D Folder5 "Window5" prog5.bat
START /D Folder6 "Window6" prog6.bat
START /D Folder7 "Window7" prog7.bat
START /D Folder8 "Window8" prog8.bat
) | pause
echo AssembleAll.bat ends

有关所用方法的说明,请参见链接的答案...