Problema al comparar variable de valor string con letra SOLUCIONADO

Iniciado por <ИΘZIЭ(ŦB>, 21 Agosto 2009, 07:18 AM

0 Miembros y 1 Visitante están viendo este tema.

<ИΘZIЭ(ŦB>

Qué tal estimados foristas? Reciban de nuevo mi saludo.

Resulta que llevo varias horas dándome golpes con otro asunto, pero nada que le hallo solución, aunque supongo que es fácil.

Esta vez se trata de comparar el valor de una variable (el valor es una letra) con una letra específica. Debería ser sencillo, pero resulta que no funciona igual que con números. Bueno, al menos a mí no me funciona.

El problema se me presenta así:

set var=A

If %var%==A goto X...

Así de simple es. Ya he verificado el valor de %var% y está bien, pero el problema es que no se ejecuta el comando que le asigno al cumplirse la condición (goto X). Así pues, supongo que lo que está mal es la manera en que evalúo el valor de %var% (%var%==A).

¿Me podrían ayudar en eso? ¿Qué estoy haciendo mal?

Nota del MOD:
Los códigos con sus respectivas etiquetas.

Ari Slash

#1
hola...prueba esto:

If %var% == A (goto:dondesea)

If %var% == A (
   goto:aqui
   ) else (
   goto:aca
   )



salu2

edito:Prueba de nuevo, que me quedo un espacio de mas

leogtz

set "var=A"
if "%var"=="A" (
goto:si
) else (
goto:no
)

En caso de que quieras una comprobación "case insensitive":
if /i "%var"=="A" (
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

<ИΘZIЭ(ŦB>

#3
Amigos de foro, agradezco como siempre sus respuestas. Tenían razón como de costumbre. Noté que mi error no estaba en cómo planteaba la condición (If %variable% == A) sino en que estaba juntando dos condiciones en la misma línea. Les explico.

En mi código dejo que el usuario sea quien determine el valor de la variable usando el comando:

set /p variable=A o B?:

Entonces, suponiendo que el usuario colocara una "a" o "b" minúscula, planteaba la siguiente validación:

If %variable% == a If %variable% == A goto X

Pues bien, era justo eso lo que me daba error. No se pueden concatenar dos condiciones If X == X, aunque no sé por qué, ya que si las condiciones son If X NEQ X si puedo juntar todas las que quiera, pues tengo otra línea así.

De modo que ahora quisiera saber cómo hacer para juntar varias condiciones If ==, pues supongo que hay una manera.
Otra cosa, leí hace poco que las elecciones de letras (como S/N) se validan de otro modo, creo que con un comando. Si pueden ayudarme con esto se los agradezco muchachos.

leogtz

No te desgastes haciendo eso.

Usa el parametro /i (Ignore), para casos insensitivos.

if /i "%variable%"=="Hola" (
Accion...
)


En otro caso, podrías concatenar varios IF así:
if %variable%==ALGO (
if %variable%==Si (
accion
)
)
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com