Как и другие уже говорил, параметры , передаваемые через командную строку можно получить в пакетных файлах с пометкой %1
в %9
. Есть также два других токена, которые вы можете использовать:
%0
это исполняемый файл (пакетный файл) имя , как указано в командной строке .
%*
это все параметры, указанные в командной строке - это очень полезно, если вы хотите переслать параметры в другую программу.
Есть также много важных методов, о которых нужно знать в дополнение к простому способу доступа к параметрам.
Проверка, был ли передан параметр
Это делается с помощью конструкций like IF "%~1"==""
, что верно, если и только если никакие аргументы не были переданы вообще. Обратите внимание на символ тильды, который приводит к удалению любых окружающих кавычек из значения %1
; без тильды вы получите неожиданные результаты, если это значение включает двойные кавычки, включая возможность синтаксических ошибок.
Обработка более 9 аргументов (или просто облегчение жизни)
Если вам нужно получить доступ более чем к 9 аргументам, вы должны использовать команду SHIFT
. Эта команда сдвигает значения всех аргументов на одно место, так что %0
принимает значение %1
, %1
принимает значение %2
и т. Д. %9
Принимает значение десятого аргумента (если он есть), который не был доступен ни для одной переменной перед вызовом SHIFT
(введите команда SHIFT /?
для дополнительных параметров).
SHIFT
также полезно, когда вы хотите легко обработать параметры, не требуя, чтобы они были представлены в определенном порядке. Например, скрипт может распознавать флаги -a
и -b
в любом порядке. Хороший способ разбора командной строки в таких случаях
:parse
IF "%~1"=="" GOTO endparse
IF "%~1"=="-a" REM do something
IF "%~1"=="-b" REM do something else
SHIFT
GOTO parse
:endparse
REM ready for action!
Эта схема позволяет вам анализировать довольно сложные командные строки, не сходя с ума.
Подстановка параметров партии
Для параметров, представляющих имена файлов, оболочка предоставляет множество функций, связанных с работой с файлами, которые недоступны никаким другим способом. Эта функциональность доступна с конструкциями, которые начинаются с %~
.
Например, чтобы получить размер файла, переданного в качестве аргумента, используйте
ECHO %~z1
Чтобы получить путь к каталогу, из которого был запущен командный файл (очень полезно!), Вы можете использовать
ECHO %~dp0
Вы можете просмотреть весь спектр этих возможностей, введя CALL /?
в командной строке.