**PATCH** DOS >>>cmd.exe<<< Decl
Publicado por Alfredo San Martín (8 intervenciones) el 28/02/2007 16:29:43
Muchos dolores de cabeza nos produce DOS de Windows cuando intentamos cambiar el valor de nuestras variables en tiempo de ejecución.
Pero Microsoft ha integrado una especie de "PATCH" al cmd.exe de nuestro S.O.
El funcionamiento de este "patch" es así:
1) Abres o ejecutas el CMD así...
cmd /v: on
2) Se abrirá un aventana de Intérprete de Comandos pero con la opción /V activada. Pero para usar esta nueva característica, uno debe usar un símbolo distinto al % para llamar a las variables declaradas, entonces se hace así:
@echo off
set bool=true
echo !bool!
pause
if "!bool!" == "true" (
set bool=false
echo !bool!
pause
)
==========SALIDA==========
true
Presione una tecla para continuar . . .
false
Presione una tecla para continuar . . .
========FIN SALIDA=========
A diferencia de antes, que las variables se llamaban con los signos %, lo cual porducía que el valor de la variable a la que se llama no cambie y siga con el valor inicial...
@echo off
set bool=true
echo %bool%
pause
if "%bool%" == "true" (
set bool=false
echo %bool%
pause
)
==========SALIDA==========
true
Presione una tecla para continuar . . .
true
Presione una tecla para continuar . . .
========FIN SALIDA=========
Como verán, el problema de la modificación de las variables (o declaración en tiempo de ejecución) fue solucionado.
Esta información la obtuve desde el mismo comando set /?
A este problema Microsoft le llama "Expansión de variable inmediata".
Y a la solución o mejora de Microsoft es llamada "Expansión de variable retardada".
Salu2.
Pero Microsoft ha integrado una especie de "PATCH" al cmd.exe de nuestro S.O.
El funcionamiento de este "patch" es así:
1) Abres o ejecutas el CMD así...
cmd /v: on
2) Se abrirá un aventana de Intérprete de Comandos pero con la opción /V activada. Pero para usar esta nueva característica, uno debe usar un símbolo distinto al % para llamar a las variables declaradas, entonces se hace así:
@echo off
set bool=true
echo !bool!
pause
if "!bool!" == "true" (
set bool=false
echo !bool!
pause
)
==========SALIDA==========
true
Presione una tecla para continuar . . .
false
Presione una tecla para continuar . . .
========FIN SALIDA=========
A diferencia de antes, que las variables se llamaban con los signos %, lo cual porducía que el valor de la variable a la que se llama no cambie y siga con el valor inicial...
@echo off
set bool=true
echo %bool%
pause
if "%bool%" == "true" (
set bool=false
echo %bool%
pause
)
==========SALIDA==========
true
Presione una tecla para continuar . . .
true
Presione una tecla para continuar . . .
========FIN SALIDA=========
Como verán, el problema de la modificación de las variables (o declaración en tiempo de ejecución) fue solucionado.
Esta información la obtuve desde el mismo comando set /?
A este problema Microsoft le llama "Expansión de variable inmediata".
Y a la solución o mejora de Microsoft es llamada "Expansión de variable retardada".
Salu2.
Valora esta pregunta


0