¿Cuál es el equivalente de las variables de shell $@ en el comando de Windows?

¿Cuál es el equivalente de las variables de shell $@ en el comando de Windows?

Quiero poner una variable en mi script por lotes de comandos para múltiples argumentos, ya que el número puede variar. Al igual que en Shell usamos $@. Intenté varias cosas pero nada funciona.

[Editar: sé que %* funciona, pero en realidad necesitaba usar el operador SHIFT para eliminar el primer argumento y asignar el resto a una variable. Pero cuando hago SHIFT y marco %*, todavía muestra todos los argumentos originales a diferencia del shell de Unix.]

Actualmente estoy usando un bucle FOR para hacer eso, pero quería saber si hay algún otro comando/método para hacer POP el primer argumento y asignar el resto a otra variable.

por ejemplo: SomeCommand "múltiples argumentos"

Respuesta1

%*en un archivo por lotes contiene todos los argumentos pasados ​​al script (excluyendo el nombre del script) exactamente como fueron escritos.

También puede encontrar estos útiles:

%0- el comando utilizado para llamar al archivo por lotes (podría ser foo, ..\foo, c:\bats\foo.bat, etc.)
%1es el primer parámetro de la línea de comando,
%2es el segundo parámetro de la línea de comando,
y así sucesivamente hasta %9(y CAMBIO se puede utilizar para aquellos después del día 9).

Ver Cómo hacerlo: Pasar argumentos de la línea de comandos (parámetros) a un archivo por lotes de Windows.

Un ejemplo de uso SHIFTpara el siguiente comando:

batchfile.bat The Quick Brown
  • Como se indica: %0=El Marrón Rápido, %1=El, %2=Rápido, %3=Marrón.
  • Después de SHIFT: %0=El Marrón Rápido, %1=Rápido, %2=Marrón
  • Después de un segundo SHIFT: %0=El Marrón Rápido, %1=Marrón

Para la pregunta de "todo menos el primer parámetro" no hay una buena respuesta. El lenguaje por lotes no es lo suficientemente preciso para un método que funcione para todos los parámetros posibles, por lo que usar SHIFT es el mejor método.

Se puede encontrar una discusión sobre posibles soluciones en la publicación.
¿Hay alguna manera de indicar los últimos n parámetros en un archivo por lotes?

información relacionada