1

Я использую командные файлы для создания оберток вокруг некоторых команд, которые нуждаются в дополнительном аргументе для работы. Например, у меня есть файл pip.cmd который добавляет настраиваемый аргумент прокси для всех вызовов pip :

pip.exe --proxy="myproxy" %1 %2 %3 %4 %5

Как вы можете видеть, я использую нотацию %1 для передачи аргументов pip.cmd в pip.exe , однако мой подход нарушается, если существует более 5 аргументов. В Linux я бы просто использовал "$@" , который обрабатывает все аргументы одновременно. Есть ли аналогичная запись или разумный обходной путь для оболочки Windows?

2 ответа2

3

Есть ли аналогичная запись или разумный обходной путь для оболочки Windows?

%* Является cmd эквивалент $@ в Unix.

Замечания:

  • Максимально допустимо 255 параметров.

Пример (pip.cmd):

pip.exe --proxy="myproxy" %*

Аргументы командной строки (параметры)

%* в пакетном скрипте ссылается на все аргументы (например, %1 %2 %3 %4 %5 ...%255)

Источник - параметры


Дальнейшее чтение

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 - это имя команды / программы, а %* все параметры.

Смотрите эту статью.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .