Problema con declaración de variables
Publicado por Alfredo San Martín (8 intervenciones) el 23/02/2007 13:46:57
Hola a toda la comunidad LWP:
Estoy haciendo un scrip (o bash) en DOS bajo Windows 2000.
El cuerpo de mi código tiene dos FOR y un IF. Pero necesito integrarle un segundo IF el cual quiero que funcione de acuerdo a un valor booleano.
Para ello se me ocurrió declarar una variable cualquiera, ejemplo:
set b=true
Y luego de acuerdo al resultado que me entregue un IF, cambio el valor de b a "false".
El problema es que no me cambia el valor de "b"
Hice la siguiente prueba:
set b=true
echo %b%
pause
set b=false
echo %b%
pause
==================SALIDA==================
true
Presione qualquier tecla para continuar...
true
Presione qualquier tecla para continuar...
==========================================
Como se ve, la variable "b" no cambia su valor.
Encontré información con respecto a este problema:
=======================HELP SET DOS==========================
Finalmente, se ha añadido compatibilidad para la expansión de la variable
retardada.
Se hace a través del modificador de línea de comandos /V
cmd /v
La expansión de la variable de entorno es útil para tratar con las
limitaciones de la expansión actual, las cuales ocurren cuando una línea de
texto es leída, y no cuando se ejecuta. El siguiente ejemplo demuestra el
problema con la expansión de la variable inmediata:
establecer VAR=antes
si "%VAR%" == "antes" (
establecer VAR=después;
si "%VAR%" == "después" @echo Si esto se ve, significa que funcionó
)
nunca mostrará el mensaje, dado que %VAR% en las opciones BOTH IF es
substituido cuando la primera opción IF es leída, y dado que
lógicamente incluye el cuerpo de IF, que es una opción compuesta. De esta
manera,IF, dentro de la opción compuesta está realmente comparando "antes"
con "después" lo cuál nunca será igual.
===============================================================
Ingresé el comando cmd /v [ENTER]
Luego probé, pero de igual manera no me permite cambiar el valor de una variable.
Alguna sugerencia?
Gracias de antemano.
Estoy haciendo un scrip (o bash) en DOS bajo Windows 2000.
El cuerpo de mi código tiene dos FOR y un IF. Pero necesito integrarle un segundo IF el cual quiero que funcione de acuerdo a un valor booleano.
Para ello se me ocurrió declarar una variable cualquiera, ejemplo:
set b=true
Y luego de acuerdo al resultado que me entregue un IF, cambio el valor de b a "false".
El problema es que no me cambia el valor de "b"
Hice la siguiente prueba:
set b=true
echo %b%
pause
set b=false
echo %b%
pause
==================SALIDA==================
true
Presione qualquier tecla para continuar...
true
Presione qualquier tecla para continuar...
==========================================
Como se ve, la variable "b" no cambia su valor.
Encontré información con respecto a este problema:
=======================HELP SET DOS==========================
Finalmente, se ha añadido compatibilidad para la expansión de la variable
retardada.
Se hace a través del modificador de línea de comandos /V
cmd /v
La expansión de la variable de entorno es útil para tratar con las
limitaciones de la expansión actual, las cuales ocurren cuando una línea de
texto es leída, y no cuando se ejecuta. El siguiente ejemplo demuestra el
problema con la expansión de la variable inmediata:
establecer VAR=antes
si "%VAR%" == "antes" (
establecer VAR=después;
si "%VAR%" == "después" @echo Si esto se ve, significa que funcionó
)
nunca mostrará el mensaje, dado que %VAR% en las opciones BOTH IF es
substituido cuando la primera opción IF es leída, y dado que
lógicamente incluye el cuerpo de IF, que es una opción compuesta. De esta
manera,IF, dentro de la opción compuesta está realmente comparando "antes"
con "después" lo cuál nunca será igual.
===============================================================
Ingresé el comando cmd /v [ENTER]
Luego probé, pero de igual manera no me permite cambiar el valor de una variable.
Alguna sugerencia?
Gracias de antemano.
Valora esta pregunta


0