Команда CALLКоманда CALL используется для вызова из пакетного файла другого пакетного файла с возможностью передачи ему входных параметров.Формат командной строки CALL: CALL [диск:][путь]имя_файла [параметры] параметры - набор параметров командной строки, необходимых пакетному файлу. При включенном режиме расширенной обработки команд, CALL допускает использование меток в качестве адресата вызова. Применяется следующий синтаксис: CALL :метка аргументы При вызове создается новый контекст текущего пакетного файла с заданными аргументами, и управление передается на инструкцию, расположенную сразу после метки. Примеры использования: CALL C:\SCRIPTS\test.bat - вызвать командный файл C:\SCRIPTS\test.bat CALL C:\SCRIPTS\test.bat param1 param2 - вызвать командный файл C:\SCRIPTS\test.bat и передать ему параметры param1 и param2 CALL :M1 param1 - вызвать процедуру, внутри текущего пакетного файла, по метке M1 и передать ей параметр param1 Для иллюстрации примеров использования команды 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) |
|