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.)
%1
es el primer parámetro de la línea de comando,
%2
es 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).
Un ejemplo de uso SHIFT
para 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?