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 в любом пакетном файле для вызова другого командного файла.