Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/01/2008, 13:52
Avatar de dogduck
dogduck
 
Fecha de Ingreso: enero-2006
Ubicación: ¿Atlantida, Hesperides, Islas afortunadas?
Mensajes: 2.231
Antigüedad: 19 años, 1 mes
Puntos: 19
Re: Programacion BAT

Mirate este hilo:
http://www.lawebdelprogramador.com/n...n8=0&n9=0&n0=0

Tiene que ver con "La expansión de variables de entorno retardada" del DOS

A ver si te ilumina.
Cita:
Según lo que postié en el primer mensaje, puse que con el modificador /v se soluciona este problema, el cual no me funcionó inicialmente. Pero si funciona, solo que había que seguir leyendo el documento. :P

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 actibada. 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