Equivalente a `$@` para shell do Windows

Equivalente a `$@` para shell do Windows

Eu uso arquivos em lote para criar wrappers em torno de alguns comandos que precisam de argumentos extras para funcionar. Por exemplo, tenho um arquivo pip.cmdque adiciona um argumento de proxy personalizado a todas pipas chamadas:

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

Como você pode ver, estou usando %1a notação para transferir argumentos de pip.cmdto pip.exe, no entanto, minha abordagem é interrompida se houver mais de 5 argumentos. No Linux, eu simplesmente usaria "$@", que lida com todos os argumentos de uma só vez. Existe uma notação semelhante ou uma solução razoável para um shell do Windows?

Responder1

Existe uma notação semelhante ou uma solução razoável para um shell do Windows?

%*é o cmdequivalente a $@no Unix.

Observação:

  • São permitidos no máximo 255 parâmetros.

Exemplo (pip.cmd):

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

Argumentos de linha de comando (parâmetros)

%*em um script em lote refere-se a todos os argumentos (por exemplo %1 %2 %3 %4 %5 ...%255)

Fonte -parâmetros


Leitura adicional

Responder2

Você pode usar %*:

@echo off
echo %0
echo %*

Executar isso dará:

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

Onde %0está o nome do comando/programa e %*todos os parâmetros.

VerEste artigo.

informação relacionada