2013-10-17 113 views
0

我有以下內容,但是當我執行時,我發現FOR循環似乎永遠不會運行 - 有趣的是,循環後面的Start語句將執行。我有點困惑。使開始命令在批處理文件中工作

Start "Starting up Master Node" /D "c:\mydir" cmd /k "Master.exe" 
FOR /L %%i in (1,1,%SlaveNodes%) DO (call slavenode.bat %%i %mycores%) 

回答

0

這是您的批處理流程:

Start "Starting up Master Node" /D "c:\mydir" cmd /k "Master.exe" 

此命令將啓動另一個進程(其它他們最初的一)運行cmd /K Master.exe

因此,在這個新的過程中,Master.exe被執行並且/K窗口保持打開狀態。

在同時,原過程繼續到

FOR /L %%i in (1,1,%SlaveNodes%) DO (call slavenode.bat %%i %mycores%) 

執行slavenode.bat%SlaveNodes%倍(在原始處理)。

然後終止。如果原始進程從非持久性方法(例如,從資源管理器)開始,則原始進程窗口(如果有)將消失。

如果您希望Master.exe看到slavenode.bat中的某些內容,請記住,由於它是在新進程中啓動的,因此在執行之前的這種開銷可能需要較長時間才能運行所有的從站。

+0

好的。我需要與Loop命令並行運行初始啓動命令。所以如果我四次循環,我會期望5個窗口打開,因爲我在slavenode.bat文件中有一個Start Command。但是,這似乎並沒有發生。 MasterNode永遠不會返回並無限期地運行。但是我從來沒有看到FOR循環被執行。 – disruptive

+0

是'%SlaveNodes%== 5'?您的文件是否命名爲「cmd」或任何其他有衝突的命令名稱? –