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