Эквивалент `$@` для оболочки Windows

Эквивалент `$@` для оболочки Windows

Я использую пакетные файлы для создания оберток вокруг некоторых команд, которым для работы требуется дополнительный аргумент. Например, у меня есть файл 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находится имя команды/программы и %*все параметры.

ВидетьЭта статья.

Связанный контент