Equivalente de `$@` para el shell de Windows

Equivalente de `$@` para el shell de Windows

Utilizo archivos por lotes para crear contenedores alrededor de algunos comandos que necesitan argumentos adicionales para funcionar. Por ejemplo, tengo un archivo pip.cmdque agrega un argumento de proxy personalizado a todas piplas llamadas:

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

Como puede ver, estoy usando %1notación para transferir argumentos de pip.cmdto 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 cmdequivalente 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

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 %0está el nombre del comando/programa y %*todos los parámetros?

VerEste artículo.

información relacionada