Batch file 批处理文件循环在if语句之后结束

Batch file 批处理文件循环在if语句之后结束,batch-file,Batch File,我试图创建一个批处理文件,根据变量在循环中运行其他批处理文件,但是在第一个批处理文件执行后,“主”批处理文件也会结束。 我错过了什么 :loop if %variable% == 5 (bat1.bat) else (bat2.bat) goto loop 这是因为您正在将控制权转移到另一个批处理文件,这意味着它永远不会返回到“主”批处理文件 您需要像这样使用调用 :loop if %variable% == 5 (call bat1.bat) else (call bat2.bat) g

我试图创建一个批处理文件,根据变量在循环中运行其他批处理文件,但是在第一个批处理文件执行后,“主”批处理文件也会结束。 我错过了什么

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

这是因为您正在将控制权转移到另一个批处理文件,这意味着它永远不会返回到“主”批处理文件

您需要像这样使用
调用

:loop
if %variable% == 5 (call bat1.bat) else (call bat2.bat) 
goto loop
它将在调用的主批处理文件完成后将控制返回到主批处理文件,以便继续循环


希望这能有所帮助

我很惊讶这居然能奏效。。。您应该使用“call file.bat”从批处理文件中运行批处理文件。当然,它可以工作,只是从来不会从被调用的批处理返回。我过去常常调用Overlay,即不使用
call
命令从另一个批处理文件执行批处理文件。净效果相当于
转到另一个文件
…同时我发现
如果%variable%==5(cmd/C:\bat1.bat)或者(cmd/C:\bat2.bat)
也可以工作,但是调用方法更加优雅,谢谢!