7

我有一个批处理文件,其中包含以下几个命令;

XCOPY 
DEL 
RMDIR

anotherBatch.bat

XCOPY 
DEL 
RMDIR

如您所见,在两者之间调用了另一个批处理文件(anotherBatch.bat),该文件执行一些其他处理。

现在我的问题是在 anotherBatch 执行之后,控件永远不会返回到原始批处理文件,它只是在那里结束。

如何确保控件返回?

4

2 回答 2

15

Batch SUBROUTINE是另一个通过 CALL 命令调用的批处理文件:

CALL subroutineName Param1 Param2

子程序可以放在调用代码的同一个文件中。这通过在其名称前加上冒号来表示:

CALL :SubroutineInThisFile Param1 Param2
. . . .
. . . .
. . . .
EXIT /B

:SubroutineInThisFile
. . .
EXIT /B

:AnotherSubroutine
. . .
EXIT /B

EXIT /B 命令(不仅仅是EXIT)用于在同一个文件中标记子程序结束;这也必须对主程序进行。

如果在没有 CALL 命令的情况下调用另一个批处理文件,如在您的示例中,则最终结果类似于“转到另一个文件”:当调用的文件结束时,该过程在该点结束。我曾经用这种方式调用“覆盖”(而不是“子例程”)一个批处理文件。

于 2011-12-16T11:00:28.210 回答
7

您应该显式调用另一个批处理文件

call anotherBatch.bat
于 2011-12-16T09:32:33.367 回答