0
我想創建一個批處理文件,該文件根據變量在循環中運行其他批處理文件,但是在第一批文件執行之後,「主」批處理文件也會結束。 我錯過了什麼?批處理文件循環在if語句後結束
:loop
if %variable% == 5 (bat1.bat) else (bat2.bat)
goto loop
我想創建一個批處理文件,該文件根據變量在循環中運行其他批處理文件,但是在第一批文件執行之後,「主」批處理文件也會結束。 我錯過了什麼?批處理文件循環在if語句後結束
:loop
if %variable% == 5 (bat1.bat) else (bat2.bat)
goto loop
這是因爲你正在將控制轉移到另一個批處理文件,這意味着它永遠不會回到'主'一個。
您需要使用call
這樣
:loop
if %variable% == 5 (call bat1.bat) else (call bat2.bat)
goto loop
它調用已完成,因此可以繼續循環中的一個之後,將控制返回到主批處理文件。
希望這有助於
在此期間,我發現'if%variable%== 5(cmd/C c:\ bat1.bat)else(cmd/C c:\ bat2。蝙蝠)'也適用,但通話方式更加優雅,謝謝! – svh 2012-07-06 07:17:32
我很驚訝,這甚至還可以......你應該從批處理文件中使用「呼叫file.bat」,而不是運行批處理文件。 – 2012-07-05 15:35:49
當然,它的工作原理就是永遠不會從被調用的批次中返回。 – Joey 2012-07-05 15:43:54
我曾經調用_Overlay_從另一個執行的批處理文件,沒有'call'命令。淨效果相當於一個'goto anotherFile' ... – Aacini 2012-07-05 20:25:57