2011-12-16 4 views
6

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

XCOPY 
DEL 
RMDIR 

anotherBatch.bat 

XCOPY 
DEL 
RMDIR 

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

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

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

ответ

13

пакетное SUBROUTINE еще один пакетный файл вызывается через команду CALL:

CALL subroutineName Param1 Param2 

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

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

:SubroutineInThisFile 
. . . 
EXIT /B 

:AnotherSubroutine 
. . . 
EXIT /B 

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

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

+1

+1 Хорошее объяснение –

+0

Thx много ... Есть ли какие-либо отклонения от CALL, такие как params, чтобы сделать anotherBatch открытым в новом окне, а также автоматически закрыться, когда закончите ... – testndtv

+0

Попробуйте запустить команду: START /? – Aacini

7

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

call anotherBatch.bat