cmd-在所有其他并发批处理文件完成后运行批处理文件

cmd-在所有其他并发批处理文件完成后运行批处理文件

我有一个简单的批处理文件,它调用其他批处理文件,它看起来像这样:

start /b run_part1.bat
start /b run_part2.bat
start /b run_part3.bat
start /b run_part4.bat

run_last.bat  // fires immediately, how to make this line wait until above finishes?

使用 /b 时,前 4 个文件将同时运行。所有文件将在 1.5 小时内完成。

我需要另一个脚本来在四个文件全部完成后进行清理。但是 run_last.bat 不会等待前四个文件,它会在前四个文件执行完后同时被调用。

有没有什么办法可以实现它?

谢谢。

答案1

停止使用过时的命令提示符,使用 Powershell。您可以使用ThreadJob 模块,如所述这个很好的答案

$commands = { ./run_part1.bat },
            { ./run_part2.bat },
            { ./run_part3.bat },
            { ./run_part4.bat }
$jobs = $commands | Foreach-Object { Start-ThreadJob $_ }
$jobs | Receive-Job -Wait -AutoRemoveJob
./run_last.bat 

答案2

您可以使用 CALL,它从另一个 bath 文件调用一个 bath 文件

欲了解更多信息,请查看https://www.robvanderwoude.com/call.php

答案3

批处理文件中没有内置任何功能来处理这个问题。

您可以修改 4 个批处理文件,以便在完成后创建一个标志文件。然后在主批处理文件中,运行一个循环来查找标志文件,并timeout /t 10在循环中调用以减慢检查速度。

相关内容