Cmd.exe: когда использовать вызов для запуска внешних программ
Кажется, что cmd script, содержащий:
prog1
prog2
делает то же самое, что и
call prog1
call prog2
В чем смысл использования команды CALL?
Ответы
Ответ 1
Вы должны использовать call
, когда вам нужно вызвать другую пакетную программу (cmd script). Использование "вызова" не будет иметь никакого эффекта, если prog1
является исполняемым файлом. (prog1.exe
)
Если вы, например, имеете два сценария:
cmd1.cmd
cmd2.cmd
И внутри cmd1.cmd
у вас есть строка:
cmd2.cmd
... тогда ваш script остановится, как только будет завершен cmd2.cmd
. Вместо этого вы должны использовать:
call cmd2.cmd
Ответ 2
Вы должны использовать call
, если хотите:
- вызовите другой командный файл и вернитесь к нему, когда это будет сделано.; или
- вызов функции в текущем файле команды.
Командный файл с линией:
number2.cmd
будет привязана к файлу number2.cmd
, то есть он запустит это script, но не вернется, чтобы продолжить выполнение на текущем.
Что касается второго момента, вы можете делать такие вещи, как:
call :subroutine
call :subroutine
goto :eof
:subroutine
echo in here
goto :eof
и вы получите дважды in here
. Эта возможность вызова функций в командных сценариях на самом деле весьма удобна.
Ответ 3
Обычно вызов используется для запуска другого командного файла в пакетном файле. Когда пакетный файл, который вызывается, завершен, остаток исходного командного файла завершается.
Обратите внимание, что если пакетный файл не существует, он выдаст сообщение об ошибке.
Синтаксис : CALL [drive:][path]filename [batch-parameters]
Нет ограничений в том, где его можно назвать. Вы можете использовать команду CALL в любом пакетном файле для вызова другого командного файла.
Надеюсь, что это поможет.