Поделиться через


call

Вызывает одну пакетную программу из другой без остановки родительской пакетной программы. Команда вызова принимает метки в качестве целевого объекта вызова.

Примечание.

Вызов не действует в командной строке, если он используется за пределами скрипта или пакетного файла.

Синтаксис

call [drive:][path]<filename> [<batchparameters>]] 
call [:<label> [<arguments>]]

Параметры

Параметр Описание
[<drive>:][<path>]<filename> Указывает расположение и имя пакетной программы, которую требуется вызвать. Параметр <filename> является обязательным, и он должен иметь .bat или .cmd расширение.
<batchparameters> Указывает все сведения командной строки, необходимые пакетной программе.
:<label> Указывает метку, к которой требуется перейти элемент управления пакетной программы.
<arguments> Указывает сведения командной строки, передаваемые новому экземпляру пакетной программы, начиная с :<label>.
/? Отображение справки в командной строке.

Параметры пакетной службы

Ссылки на аргументы пакетного скрипта (%0, %1, ...) перечислены в следующих таблицах.

%* Использование значения в пакетном скрипте относится ко всем аргументам (например, %1, %2, %3...).

Вы можете использовать следующие необязательные синтаксисы в качестве подстановок для параметров пакетной службы (%n):

Параметр пакетной службы Description
%~1 Развертывает %1 и удаляет окружающие кавычки.
%~f1 Расширяет %1 до полного пути.
%~d1 Расширяет %1 только на букву диска.
%~p1 Развертывает %1 только к пути.
%~n1 Развертывает %1 только к имени файла.
%~x1 Развертывает %1 только в расширение имени файла.
%~s1 Развертывает %1 на полный путь, содержащий только короткие имена.
%~a1 Развертывает %1 к атрибутам файла.
%~t1 Расширяет %1 до даты и времени файла.
%~z1 Расширяет %1 до размера файла.
%~$PATH:1 Выполняет поиск каталогов, перечисленных в переменной среды PATH, и расширяет %1 до полного имени найденного первого каталога. Если имя переменной среды не определено или файл не найден поиском, этот модификатор расширяется до пустой строки.

В следующей таблице показано, как объединить модификаторы с параметрами пакетной службы для составных результатов:

Параметр пакетной службы с модификатором Description
%~dp1 Расширяет %1 только на букву диска и путь.
%~nx1 Развертывает %1 только к имени файла и расширению.
%~dp$PATH:1 Выполняет поиск каталогов, перечисленных в переменной среды PATH для %1, а затем расширяет букву диска и путь к первому найденном каталогу.
%~ftza1 Разворачивает %1 , чтобы отобразить выходные данные, аналогичные команде dir .

В приведенных выше примерах можно заменить %1 и PATH другими допустимыми значениями. Синтаксис %~ завершается допустимым номером аргумента. %~ Модификаторы нельзя использовать с %*.

Замечания

  • Использование параметров пакетной службы:

    Параметры пакетной службы могут содержать любые сведения, которые можно передать пакетной программе, включая параметры командной строки, имена файлов, параметры пакетной службы %0 до %9 и переменные (например, %baud%).

  • <label> Использование параметра:

    При вызове <label> с параметром создается контекст пакетного файла и передается в инструкцию после указанной метки. При первом обнаружении конца пакетного файла (т. е. после перехода к метке) элемент управления возвращается в инструкцию после оператора вызова . Во второй раз, когда происходит завершение пакетного файла, пакетный скрипт завершается.

  • Использование каналов и символов перенаправления:

    Не используйте каналы (|) или символы перенаправления (< или >) с вызовом.

  • Выполнение рекурсивного вызова

    Вы можете создать пакетную программу, которая вызывает себя. Однако необходимо предоставить условие выхода. В противном случае родительские и дочерние пакетные программы могут циклически циклически.

  • Работа с расширениями команд

    Если расширения команд включены, вызов принимается <label> в качестве целевого объекта вызова. Правильный синтаксис.call :<label> <arguments>

Примеры

Чтобы запустить программу проверка new.bat из другой пакетной программы, введите следующую команду в родительской пакетной программе:

call checknew

Если родительская пакетная программа принимает два параметра пакета, и вы хотите передать эти параметры в проверка new.bat, введите следующую команду в родительской программе пакетной службы:

call checknew %1 %2