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.cmd
que adiciona um argumento de proxy personalizado a todas pip
as chamadas:
pip.exe --proxy="myproxy" %1 %2 %3 %4 %5
Como você pode ver, estou usando %1
a notação para transferir argumentos de pip.cmd
to 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 cmd
equivalente 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
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
- parâmetros- Um argumento (ou parâmetro) de linha de comando é qualquer valor passado para um script em lote.
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 %0
está o nome do comando/programa e %*
todos os parâmetros.
VerEste artigo.