En mi archivo por lotes en Windows XP, deseo usar %*
para expandirlo a todos los parámetros, excepto el primero.
archivo prueba (foo.bat):Cómo hacer que SHIFT funcione con% * en archivos de proceso por lotes
@echo off
echo %*
shift
echo %*
Llamar:
C:\> foo a b c d e f
real resultado:
a b c d e f
a b c d e f
deseado resultado:
a b c d e f
b c d e f
¿Cómo puedo lograr el resultado deseado? ¡¡Gracias!!
no veo el beneficio del archivo temporal - 'set t =% *' funcionaría igual de bien. Esta respuesta fallará si% 1 contiene '=' o comienza con '*' o '~'. También tendrá problemas si los argumentos están delimitados con ',' o ';' en lugar de espacios. Mejor eliminar solo% 1 y dejar los delimitadores en su lugar. – dbenham
Problema de asesino: esta respuesta dará una respuesta incorrecta si args son 'A A B'. Podría mejorarse con 'set t =! T: *% 1 =!' – dbenham
Usando 'set" t =! T: *% 1 =! 'Modificación, esta respuesta todavía fallará si% 1 contiene' = ', pero iniciando con '*' o '~' está bien. – dbenham