Я использую пакетные файлы для создания оберток вокруг некоторых команд, которым для работы требуется дополнительный аргумент. Например, у меня есть файл pip.cmd
, который добавляет пользовательский аргумент proxy ко всем pip
вызовам:
pip.exe --proxy="myproxy" %1 %2 %3 %4 %5
Как видите, я использую %1
нотацию для передачи аргументов pip.cmd
в pip.exe
, однако мой подход ломается, если аргументов больше 5. В Linux я бы просто использовал "$@"
, который обрабатывает все аргументы сразу. Есть ли похожая нотация или разумный обходной путь для оболочки Windows?
решение1
Существует ли похожая нотация или разумное решение для оболочки Windows?
%*
является cmd
эквивалентом $@
в Unix.
Примечание:
- Допускается максимум 255 параметров.
Пример (pip.cmd):
pip.exe --proxy="myproxy" %*
Аргументы командной строки (параметры)
%*
в пакетном скрипте ссылается на все аргументы (например%1 %2 %3 %4 %5 ...%255
, )
Источник -параметры
Дальнейшее чтение
- Индекс AZ командной строки Windows CMD- Отличный справочник по всем вопросам, связанным с командной строкой Windows.
- параметры- Аргумент командной строки (или параметр) — это любое значение, переданное в пакетный скрипт.
решение2
Вы можете использовать %*
:
@echo off
echo %0
echo %*
Запуск этого даст:
C:\>test.cmd this is a test 1 2 3 4 5 6 7 8
test.cmd
this is a test 1 2 3 4 5 6 7 8
Где %0
находится имя команды/программы и %*
все параметры.
ВидетьЭта статья.