我有一个批处理文件,其中包含以下几个命令;
XCOPY
DEL
RMDIR
anotherBatch.bat
XCOPY
DEL
RMDIR
正如你所看到的,在它们之间有一个对另一个批处理文件(anotherBatch.bat)的调用,它会进行一些其他的处理。
现在我的问题是在执行anotherBatch之后,控件永远不会返回到原始批处理文件,它就在那里结束。
如何确保控件返回?
答案 0 :(得分:14)
批处理 SUBROUTINE 是通过CALL命令调用的另一个批处理文件:
CALL subroutineName Param1 Param2
子程序可以放在调用代码的同一文件中。这在其名称前面用冒号表示:
CALL :SubroutineInThisFile Param1 Param2
. . . .
. . . .
. . . .
EXIT /B
:SubroutineInThisFile
. . .
EXIT /B
:AnotherSubroutine
. . .
EXIT /B
EXIT / B命令(不仅仅是EXIT)用于在同一文件中标记子程序结束;这也必须为主程序完成。
如果在没有CALL命令的情况下调用另一个Batch文件,如在您的示例中,最终结果类似于“GOTO to another file”:当调用的文件结束时,该过程在该点结束。我曾经称之为“覆盖”(而不是“子程序”)这种方式的批处理文件。
答案 1 :(得分:7)
您应该明确调用其他批处理文件
call anotherBatch.bat