No procesar una variable en una cadena inmediatamente en secuencia de comandos por lotes

0

Me gustaría saber si es posible procesar una variable que contenga una variable no de forma inmediata sino solo cuando se le 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 solo al final con el eco para tener "Tres personas" como salida?

phate89
fuente

Respuestas:

1

Eso no será posible. Una vez que se le asigna un valor a una variable, ya no depende de la variable o del texto que se usó cuando se asignó.

La forma más fácil de lograr el resultado deseado es simplemente hacer eco de la variable VA y el texto al final. Básicamente, haga todos sus cálculos, luego, al final, junte su salida.

@echo off
setlocal EnableDelayedExpansion
set VA=Two
set VA=Three
ECHO !VA! people
pause
KingOfAllTrades
fuente
0

Simplemente configure VAR al final nuevamente. No hay limitación en la frecuencia con la que puede establecer una variable.

Recuerde, un archivo por lotes es solo una lista de comandos que puede escribir en el símbolo del sistema. Cada fila es básicamente un comando a la vez ejecutado en orden cronológico.

Entonces, si necesita elevar el VAR con las condiciones adecuadas, configúrelo 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

LPChip
fuente