Utilizo archivos por lotes para crear contenedores alrededor de algunos comandos que necesitan argumentos adicionales para funcionar. Por ejemplo, tengo un archivo pip.cmd
que agrega un argumento de proxy personalizado a todas pip
las llamadas:
pip.exe --proxy="myproxy" %1 %2 %3 %4 %5
Como puede ver, estoy usando %1
notación para transferir argumentos de pip.cmd
to pip.exe
; sin embargo, mi enfoque falla si hay más de 5 argumentos. En Linux, simplemente usaría "$@"
, que maneja todos los argumentos a la vez. ¿Existe una notación similar o una solución alternativa razonable para un shell de Windows?
Respuesta1
¿Existe una notación similar o una solución alternativa razonable para un shell de Windows?
%*
es el cmd
equivalente a $@
en Unix.
Nota:
- Se permite un máximo de 255 parámetros.
Ejemplo (pip.cmd):
pip.exe --proxy="myproxy" %*
Argumentos de la línea de comando (parámetros)
%*
en un script por lotes se refiere a todos los argumentos (p. ej%1 %2 %3 %4 %5 ...%255
.)
Fuente -parámetros
Otras lecturas
- Un índice AZ de la línea de comando CMD de Windows- Una excelente referencia para todo lo relacionado con la línea cmd de Windows.
- parámetros- Un argumento (o parámetro) de línea de comando es cualquier valor pasado a un script por lotes.
Respuesta2
Puedes usar %*
:
@echo off
echo %0
echo %*
Ejecutar esto 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
¿Dónde %0
está el nombre del comando/programa y %*
todos los parámetros?
VerEste artículo.