Команда CALL используется для вызова из пакетного файла другого пакетного файла с возможностью передачи ему входных параметров.
1. Описание команды CALL.
Формат командной строки CALL:
C:\ CALL [диск:][путь]имя_файла [параметры]
параметры – набор параметров командной строки, необходимых пакетному файлу.
При включенном режиме расширенной обработки команд, CALL допускает использование меток в качестве адресата вызова. Применяется следующий синтаксис:
CALL :метка аргументы
При вызове создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки.
2. Примеры использования.
2.1. Вызвать командный файл C:\SCRIPTS\test.bat:
C:\ CALL C:\SCRIPTS\test.bat
2.2. Вызвать командный файл C:\SCRIPTS\test.bat и передать ему параметры param1 и param2:
C:\ CALL C:\SCRIPTS\test.bat param1 param2
2.3. Вызвать процедуру, внутри текущего пакетного файла, по метке M1 и передать ей параметр param1:
C:\ CALL :M1 param1
2.4. Для иллюстрации примеров использования команды CALL можно воспользоваться пакетным файлом, например под именем 1.bat следующего содержания:
CALL 2.bat IP 192.168.1.1
ECHO NEWSET = %NEWSET%
Файл 1.bat будет вызывать файл 2.bat и передавать ему 2 параметра – строки IP и 192.168.1.1. И вызываемый файл, например, выполнит создание новой переменной с именем NEWSET вида “IP = 192.168.1.1” Для этого в файле 2.bat используется команда SET:
SET NEWSET=%1 = %2
После выполнения файла 2.bat будет выполнен возврат в файл 1.bat и команда ECHO выведет на экран значение переменной NEWSET, сформированное вызываемым командным файлом.
При использовании вызова процедуры по метке в командном файле, есть некоторые особенности. Для примера, создадим командный файл, в котором имеется вызываемая подпрограмма, которая должна вычислить сумму двух чисел, передаваемых ей в качестве параметров, и присвоить результат переменной Rezult:
REM вызов подпрограммы для суммирования чисел 100 и 2 call :M1 100 2 REM Вывод результата echo Результат = %Rezult% pause exit :M1 SET /A Rezult=%1+%2 exit /b
В примере используется команда exit с параметром /b внутри вызываемой процедуры. Если данный ключ не указать, то вместо выхода из вызываемой процедуры будет выполнен выход из командного файла (завершение CMD.EXE)