繁体   English   中英

多批处理后执行1个批处理文件,同时完成批处理文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM