2012-07-05 145 views
0

我想創建一個批處理文件,該文件根據變量在循環中運行其他批處理文件,但是在第一批文件執行之後,「主」批處理文件也會結束。 我錯過了什麼?批處理文件循環在if語句後結束

:loop 
if %variable% == 5 (bat1.bat) else (bat2.bat) 
goto loop 
+0

我很驚訝,這甚至還可以......你應該從批處理文件中使用「呼叫file.bat」,而不是運行批處理文件。 – 2012-07-05 15:35:49

+0

當然,它的工作原理就是永遠不會從被調用的批次中返回。 – Joey 2012-07-05 15:43:54

+0

我曾經調用_Overlay_從另一個執行的批處理文件,沒有'call'命令。淨效果相當於一個'goto anotherFile' ... – Aacini 2012-07-05 20:25:57

回答

1

這是因爲你正在將控制轉移到另一個批處理文件,這意味着它永遠不會回到'主'一個。

您需要使用call這樣

:loop 
if %variable% == 5 (call bat1.bat) else (call bat2.bat) 
goto loop 

它調用已完成,因此可以繼續循環中的一個之後,將控制返回到主批處理文件。

希望這有助於

+0

在此期間,我發現'if%variable%== 5(cmd/C c:\ bat1.bat)else(cmd/C c:\ bat2。蝙蝠)'也適用,但通話方式更加優雅,謝謝! – svh 2012-07-06 07:17:32