Как и другие уже говорил, параметры , передаваемые через командную строку можно получить в пакетных файлах с пометкой %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 /?в командной строке.