2017-03-13 309 views
1

我已經閱讀以下兩篇文章,發現他們都沒有回答我的問題How to call one batch file after anotherExecute batch file after another batch file completes執行多個批處理文件後,同時完成批處理文件

我試圖通過Windows Server 2012 R2 Standard上的批處理文件運行一系列6個Python腳本。我想要前5個腳本同時運行(Processing.bat),它目前由五個子bat文件(North.bat,West.bat,South.bat,Central.bat,Northeast.bat)組成。一旦完成,它應該運行一個最終腳本,與前5個(Merge.bat)的輸出一起工作。

我已經嘗試了幾個組合的調用和開始/等待,沒有什麼似乎做對了。目前,我的主要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 

W如果使用此設置,所有6個腳本將立即運行(而不是5個,然後是1)。但各個命令提示符窗口將保持打開狀態,直到每個腳本完成(7個窗口)。踢球者是,如果我要將Processing.bat中的「start」改爲「start/wait」,它將會依次運行每一個(我不想要的前5個),然後用「start/wait 「在主要批次中,所有分批次都一次運行。

+0

可能重複[如何等待所有批處理文件完成之前退出?](http://stackoverflow.com/questions/33584587/how-to-wait-all-batch-files-to-finish-before-退出) – aschipfl

回答

1

由於它是批處理文件,假設您可以編輯它們。

組在第一創建一個標誌文件的末尾:

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應該開始command.Also的標誌文件應該被刪除再次啓動提前。

+0

你能指定'merge.bat'中語法的位置嗎? '啓動C:\ Python27 \ ArcGIS10.4 \ python.exe E:\ RSA_Automation \ SimultaneousScripts \ MergeSDE.py IF%ERRORLEVEL%EQU 0 EXIT' – dji43466

+0

@ dji43466 - 前'開始..'線 – npocmaka