Intentando usar una variable varias veces en un archivo por lotes

Estoy tratando de escribir un script que ejecute varias operaciones usando una variable inicial pero no funciona: la variable solo es correcta la primera vez que se analiza. ¿Sabes lo que estoy haciendo mal? ¿Es esto una limitación de los archivos por lotes o he hecho algo mal? La técnica de expansión habilitada tampoco funciona.

SET FILE1=zr1
SET FILE2=za1
SET FILE3=za2


FOR /L %%I IN (1,1,3) DO ( 
-o "%%FILE%%I%%.out" 
ECHO %%FILE%%I%% 
CD p:\compress\compare 
XCOPY "p:\compress\compare\%%FILE%%I%%.out"   
RENAME "%%FILE%%I%%.out" "TEST" 
XCOPY "p:\compress\compare\%%FILE%%I%%.out" /e 
RENAME "%%FILE%%I%%.out" "GOOD" 
COMPARE 
RENAME "OUTPUT" "%%FILE%%I%%.out" 
CD p:\compress\outputFILEs 
XCOPY "p:\compress\compare\%%FILE%%I%%.out" /e 
) 

preguntado el 22 de mayo de 12 a las 18:05

1 Respuestas

Necesita usar correctamente la Expansión retrasada. Recuerde que las expansiones variables se logran en dos etapas: %percents% primero en orden de izquierda a derecha, y luego !exclamaciones!:

ECHO !FILE%%I! 

Para obtener una explicación más detallada, consulte esta respuesta.

Además, te sugiero que uses notación de matriz para este tipo de gestión de esta manera:

SET FILE[1]=zr1
SET FILE[2]=za1
SET FILE[3]=za2
. . .
ECHO !FILE[%%I]!

Las razones para hacerlo se explican aquí

contestado el 23 de mayo de 17 a las 11:05

Eso funcionó perfectamente. ¡Gracias por ayudarme y señalarme en la dirección correcta! - flauta88

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.