Возврат управления из командного файла - PullRequest
6 голосов
/ 16 декабря 2011

У меня есть командный файл, который имеет несколько команд следующим образом:

XCOPY 
DEL 
RMDIR

anotherBatch.bat

XCOPY 
DEL 
RMDIR

Как вы видите, между ними происходит вызов другого пакетного файла (anotherBatch.bat), который выполняет некоторую другую обработку.

Теперь мой вопрос: после того, как выполнено anotherBatch, элемент управления никогда не возвращается обратно в исходный пакетный файл, и он просто заканчивается там.

Как мне убедиться, что элемент управления возвращен обратно?

Ответы [ 2 ]

14 голосов
/ 16 декабря 2011

A Batch SUBROUTINE - это другой пакетный файл, вызываемый командой CALL:

CALL subroutineName Param1 Param2

Подпрограмма может быть помещена в один и тот же файл кода вызова. На это указывает предшествующее его имени двоеточие:

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

:SubroutineInThisFile
. . .
EXIT /B

:AnotherSubroutine
. . .
EXIT /B

Команда EXIT / B (НЕ просто EXIT) используется для пометки конца подпрограммы в том же файле; это также должно быть сделано для основной программы.

Если другой пакетный файл вызывается без команды CALL, как в вашем примере, чистый результат аналогичен «GOTO to other file»: когда вызванный файл заканчивается, процесс заканчивается в этой точке. Раньше я называл «Наложение» (вместо «подпрограмма») командным файлом, который назывался таким образом.

7 голосов
/ 16 декабря 2011

Вы должны явно вызвать другой пакетный файл

call anotherBatch.bat
...