有人知道是否有cmd脚本可以执行此操作和/或命令行工具为该作业做好准备了吗?
有人知道是否有cmd脚本可以执行此操作和/或命令行工具为该作业做好准备了吗?
Answers:
在下面创建三个批处理文件。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
main.bat
@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!
如果过程不需要标准输入或输出,则足够简单。从命令行或批处理文件中:
process1 | process2 | process3 | process4
这将同时运行所有四个进程,并且在它们全部退出之前不会返回。(可能的例外:如果进程显式关闭标准输出,则可能会将其视为已退出。但这是不寻常的,很少有进程执行此操作。)
我不确定你可以用这种方式同时启动多少个进程。我已经尝试了十次。
执行此操作的唯一方法是启动start /?
运行单个任务的单独批处理文件(请参阅参考资料),并在完成时写入文本文件。然后,您定期检查是否已创建文本文件。
您可以查看Powershell Start-Job cmdlet。它应该允许你这样做。更多这里 Powershell是微软的首选外壳。它比cmd脚本更强大,并且很好地投入了你的时间
或者你可以使用这个:http: //www.out-web.net/?p = 167
我做到了,它有效,但有时会发生完成过程的PID立即被另一个刚启动的Windows进程重新使用,并且它会检测到您的进程的结尾是危险的/错误的。
我也在寻找类似的任务。目标是并行运行多个命令并提取所有并行进程的输出(stdout和错误)。然后等待所有并行进程完成并执行另一个命令。以下是BAT文件的示例代码,可以在CMD中执行:
(
start "" /B cmd /c ping localhost -n 6 ^>nul
timeout /t 5 /nobreak
start "" /B /D "C:\users\username\Desktop" cmd /c dir ^> dr.txt ^2^>^&^1
start "" /B cmd /c ping localhost -n 11 ^>nul
timeout /t 10 /nobreak
) | pause
Echo waited
timeout /t 12 /nobreak
()
首先执行里面的所有语句,等待它们完成,然后执行最后两行。所有开始的命令start
都是同时执行的。
这些链接很有用:https: //stackoverflow.com/a/43762349/9689416和https://ss64.com/nt/start.html