Me gustaría saber si es posible procesar una variable que contenga una variable no inmediatamente sino solo cuando se me solicite. Por ejemplo este lote:
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=!VA! people
set VA=Three
ECHO !VAR!
Imprime "Dos personas". ¿Es posible hacer el análisis sólo al final con el eco para tener "Tres personas" como salida?
Respuesta1
Eso no será posible. Una vez que se asigna un valor a una variable, ya no depende de la variable o del texto que se utilizó cuando se asignó.
La forma más sencilla de lograr el resultado deseado es simplemente repetir la variable VA y el texto al final. Básicamente, haga todos sus cálculos y luego, al final, junte su resultado.
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VA=Three
ECHO !VA! people
pause
Respuesta2
Simplemente vuelva a configurar el VAR al final. No hay limitación en la frecuencia con la que puede configurar una variable.
Recuerde, un archivo por lotes es sólo una lista de comandos que puede escribir en el símbolo del sistema. Cada fila es básicamente un comando ejecutado a la vez en orden cronológico.
Entonces, si necesitas tener el VAR elevado con las condiciones adecuadas, configúralo justo antes de ese momento. Ejemplo:
@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VAR=%VA% people
echo %VAR%
set VA=Three
::We want to update VAR, so lets set it again:
set VAR=%VA% people
echo %VAR%
pause
:: en un archivo por lotes es lo mismo que REM