有人知道是否有可以执行该操作的 cmd 脚本和/或可用于该工作的命令行工具吗?
答案1
创建以下三个批处理文件。Main.bat 启动 1.bat 和 2.bat
1.bat 和 2.bat 会写出 main.bat 检查的临时文件。当 1.bat 和 2.bat 运行时,main.bat 会报告处理仍在进行中。当您在 1.bat 或 2.bat 的打开窗口中按下 Enter 键时,临时文件将被删除,程序将退出。这模拟了该 .bat 文件的处理停止。如果您对 1 和 2.bat 都执行此操作,main.bat 会向您报告这些进程的处理已完成。您可以让 1.bat 和 2.bat 执行任何您想做的事情,只要您在完成后清除临时文件即可。此时 main.bat 也可以执行您想让它执行的任何操作。
1.bat
echo %time% > 1.tmp
pause
del 1.tmp
exit
2.bat
echo %time% > 2.tmp
pause
del 2.tmp
exit
主程序
@echo off
start "1" 1.bat
start "2" 2.bat
@ping -n 1 127.0.0.1 > nul
:loop
@echo Processing......
if not exist *.tmp goto :next
@ping -n 5 127.0.0.1 > nul
goto loop
:next
@echo Done Processing!
答案2
非常简单,只要进程不需要标准输入或输出即可。从命令行或批处理文件中:
process1 | process2 | process3 | process4
这将同时运行所有四个进程,直到它们全部退出后才会返回。(可能的例外:如果某个进程明确关闭了标准输出,则可能会将其视为已退出。但这种情况并不常见,很少有进程会这样做。)
我不确定通过这种方式可以同时启动多少个进程。我试过最多十个。
答案3
唯一的方法是启动单独的批处理文件(请参阅start /?
),运行单个任务并在完成后写入文本文件。然后,定期检查文本文件是否已生成。
答案4
或者你可以使用这个: http://www.out-web.net/?p=167
我做到了,它起作用了,然而有时会发生已完成进程的 PID 被另一个刚启动的 Windows 进程立即重新使用的情况,这会使对进程结束的检测变得危险/错误。