[英]Execute 1 batch file after mutiple, simultaneous batch files complete
我已经阅读了以下两篇文章,发现它们似乎都无法回答我的问题: 如何依次调用一个批处理文件 , 在另一个批处理文件完成后执行批处理文件 。
我正在尝试通过Windows Server 2012 R2 Standard上的批处理文件运行一系列6个python脚本。 我希望前5个脚本同时运行(Processing.bat),该脚本当前包含五个子bat文件(North.bat,West.bat,South.bat,Central.bat,Northeast.bat)。 一旦完成,就应该运行一个最终脚本,该脚本可与前5个脚本(Merge.bat)的输出配合使用。
我已经尝试了呼叫和启动/ wait的几种组合,但似乎无济于事。 目前,我的主要bat文件如下所示:
start /wait Processing.bat
start /wait Merge.bat
Processing.bat看起来像:
start North.bat
start South.bat
start NorthEast.bat
start West.bat
start Central.bat
IF %ERRORLEVEL% EQU 0 EXIT
每个子蝙蝠看起来像:
start /wait C:\Python27\ArcGIS10.4\python.exe E:\TestScript.py Central
IF %ERRORLEVEL% EQU 0 EXIT
最终merge.bat看起来像:
start /wait C:\Python27\ArcGIS10.4\python.exe E:\MergeSDE.py
IF %ERRORLEVEL% EQU 0 EXIT
使用此设置,所有6个脚本将一次运行(而不是5个后跟1个)。 但是,各个命令提示符窗口将保持打开状态,直到每个脚本完成(7个窗口)。 更重要的是,如果我将Processing.bat中的“开始”更改为“开始/等待”,它将一个接一个地运行(我不希望使用前5个),但是会运行“开始/等待”在主要批次中,所有子批次都会一次执行。
假设是批处理文件,则可以对其进行编辑。
在第一次创建标志文件的末尾设置:
break>"%temp%\north"
在第二个:
break>"%temp%\south"
以此类推。
在merge.bat集的开头(如果west.bat是最后执行的文件):
:wait_again
:: sleep 5 seconds
ping 127.0.0.1 -n 6 > nul
if not exist "%temp%\south" if not exist "%temp%\north" ... (
goto :wait_again
)
merge.bat
使用启动命令再次启动merge.bat
应提前删除标志文件。
这是解决此问题的最简单方法:
(
start North.bat
start South.bat
start NorthEast.bat
start West.bat
start Central.bat
) | set /P "="
call Merge.bat
有关如何在退出之前等待所有批处理文件完成的更多详细信息? 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.