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


call

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

Note

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

Syntax

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

Parameters

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

Batch parameters

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

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

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

Batch Parameter 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 Выполняет поиск %1в каталогах, перечисленных в переменной окружения PATH, а затем разворачивается до буквы диска и пути к первому найденному каталогу.
%~ftza1 Разворачивает %1 для отображения вывода, аналогичного команде dir .

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

Remarks

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

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

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

    Используя call с параметром <label> , вы создаете новый контекст пакетного файла и передаете управление оператору после указанной метки. При первом столкновении с окончанием пакетного файла (то есть после перехода к метке) управление возвращается к оператору после оператора call . Во второй раз, когда происходит завершение пакетного файла, пакетный скрипт завершается.

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

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

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

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

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

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

Examples

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

call checknew

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

call checknew %1 %2