2012-07-05 146 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