Intentando usar una variable varias veces en un archivo por lotes
Frecuentes
Visto 2,037 veces
0
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
)
1 Respuestas
1
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
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas batch-file or haz tu propia pregunta.
Eso funcionó perfectamente. ¡Gracias por ayudarme y señalarme en la dirección correcta! - flauta88