Saludos,
- Las variables en Bacth tienen un comportamiento inusual cuando se ejecutan en sentencias de una sola línea como sentencia & sentencia, o sentencia | sentencia, etc, las sentencias que van entre paréntesis se consideran que van en línea.
- Ese comportamiento inusual hace que las variables no actualicen sus valores, se le asigna un valor la primera vez y luego no se notarán siguientes cambios hasta que termine la sentencia en línea.
- Para solucionar esto se utiliza SETLOCAL EnableDelayedExpansion, esto hace que las variables si se actualicen tal como se espera, pero las variables deben cambiar su notación %variable% por !variable!.
- Recuerda que para SET /A no es necesario utilizar %variable% o !variable!, esto se sobreentiende.
ECHO PEQUENIO MENU
CON DOS OPCIONES
SET /P OPT="SELECCIONA UNA OPCION
> "
)
:A
ECHO EL RESULTADO DE 1 + 2 ES
!SUM!
:B
- Otra forma es usando CALL. Ver el comportamiento de todo esto en:
https://ss64.com/nt/delayedexpansion.html