Equivalente de '$ @' para o shell do Windows

1

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

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

Como você pode ver, estou usando %1 notation para transferir argumentos de pip.cmd para pip.exe , mas 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?

    
por Dmitry Grigoryev 28.01.2016 / 14:59

2 respostas

2

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

%* é a cmd em equivalentes de $@ em Unix.

Nota:

  • É permitido um máximo de 255 parâmetros.

Exemplo (pip.cmd):

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

Argumentos da linha de comando (parâmetros)

%* in a batch script refers to all the arguments (e.g. %1 %2 %3 %4 %5 ...%255)

Fonte - parâmetros

Leitura Adicional

por 28.01.2016 / 15:21
2

Você pode usar %* :

@echo off
echo %0
echo %*

A execução disso 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

Em que %0 é o nome do comando / programa e %* de todos os parâmetros.

Veja este artigo .

    
por 28.01.2016 / 15:21