【问题标题】:How to wait for a multiple batch files to finish [duplicate]如何等待多个批处理文件完成[重复]
【发布时间】:2019-05-30 12:29:36
【问题描述】:

假设我有 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

【问题讨论】:

  • 成为这里的会员五年后,您应该知道 StackOverflow 是一个您根据发布的代码 minimal reproducible example 并解释它如何无法工作的特定问题的网站如书面和预期的那样。您没有提出任何问题,仅提供了一个“待办事项”列表,如果您需要特定的帮助,您需要 edit your question 将其带到主题上。
  • 好吧,您现在已经扩展了您的“待办事项”列表,但仍未提出具体问题。请注意,“你能为我写我的脚本吗”不是一个可接受的问题,但目前看来正是你所期望的。此外,如果 ECHO Running 确实是您的 progX.bat 文件的内容,则也无需设置每个文件的工作目录。
  • 从来没有要求有人为我写任何东西,只是想了解一种有效地使用批处理进行并行处理的方法,这需要同步开始/结束事件...... ECHO Running 显然是一个占位符,您不想看到我的 4 页批处理文件,我也无法向您展示它们。很抱歉,这个问题措辞有点糟糕,“等待所有批处理文件完成”在批处理上下文中确实更有意义,所以感谢您的澄清,我不是批处理程序员,所以我想一般来说。

标签: multithreading batch-file


【解决方案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

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

【讨论】:

  • 谢谢,我显然是在搜索错误的术语。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 2013-09-16
  • 2016-02-08
  • 1970-01-01
  • 2014-01-12
相关资源
最近更新 更多