Autor
|
Tema: Problema con símbolos ( \, ", etc) almacenados en variable (Leído 20,094 veces)
|
<ИΘZIЭ(ŦB>
Desconectado
Mensajes: 109
-cyman-
|
Hola a todos otra vez. Amigos, tengo este problema: necesito saber si una de mis variables tiene un símbolo como valor almacenado, pero no sé cómo inquirirlo. Cuando se trata de una letra, texto normal o números, basta con escribir If %variable% == 123 o también If %variable% == texto etc. Pero cuando intento hacer lo mismo con un símbolo (ya me ha pasado con el slash [/] y la comilla ["]) no funciona, supongo que porque son caracteres especiales dentro del BATCH. Así pues, mi pregunta es: ¿cómo se deben escribir esas sentencias dentro del IF? Por favor, agradezco su ayuda.
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 3.047
/^$/
|
Trata así: if ["%variable%"]==["valor"] ...
|
|
|
|
|
En línea
|
|
|
|
<ИΘZIЭ(ŦB>
Desconectado
Mensajes: 109
-cyman-
|
No funciona. Mira: set /p ruta=Escriba la ruta: set cont=0 goto Contar
:Contar setlocal enabledelayedexpansion if "!ruta:~%cont%,1!" neq "" set /a "cont+=1" & set uc="!ruta:~%cont%,1!" & goto Contar endlocal goto AoC
:AoC If ["%uc%"]==["\"] ( echo Es slash pause ) If ["%uc%"] neq ["\"] ( echo No es slash, es %uc% pause )
Eso es lo que tengo. No funciona porque aunque el último caracter es \ (almacenado en %uc%) sólo entra en el segundo If, como si no lo fuera. ¿Qué hice mal?
|
|
|
|
« Última modificación: 26 Agosto 2009, 05:18 por cyman »
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 3.047
/^$/
|
Quitale el endlocal.
|
|
|
|
|
En línea
|
|
|
|
<ИΘZIЭ(ŦB>
Desconectado
Mensajes: 109
-cyman-
|
Amigo, sigue sin funcionar. ¿Ya lo probaste?
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 3.047
/^$/
|
No, hace meses que no uso Windows. Deja veo que puede ser.
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 3.047
/^$/
|
Dejalo así, a ver como te va: setlocal enabledelayedexpansion set /p ruta=Escriba la ruta: set cont=0 goto Contar
:Contar if "!ruta:~%cont%,1!" neq "" ( set /a "cont+=1" set uc="!ruta:~%cont%,1!" goto:Contar ) goto AoC
:AoC If ["%uc%"]==["\"] ( echo Es slash pause ) If ["%uc%"] neq ["\"] ( echo No es slash, es %uc% pause )
|
|
|
|
|
En línea
|
|
|
|
<ИΘZIЭ(ŦB>
Desconectado
Mensajes: 109
-cyman-
|
Nada pana! Lo copié y pegué y sigue tomando la segunda opción. No entiendo.
|
|
|
|
|
En línea
|
|
|
|
<ИΘZIЭ(ŦB>
Desconectado
Mensajes: 109
-cyman-
|
Bueno pana, si quieres pruebas después y me dices. Gracias por todo.
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 3.047
/^$/
|
Mañana checo con un Windows.
Describeme que es lo que quieres que haga el código y cual es la entrada de datos que le das.
|
|
|
|
|
En línea
|
|
|
|
<ИΘZIЭ(ŦB>
Desconectado
Mensajes: 109
-cyman-
|
Bueno, lo que necesito es saber si el último caracter de una variable string es slash (\) o no. Ya me ayudaron con el código para almacenar el último caracter; eso lo tengo listo. Lo único que me hace falta es establecer la condición que debe cumplirse cuando el caracter sea slash.
Como ya he mencionado, la sentencia común del If (If ["%variable%"]==["\"]) no quiere funcionarme. Así que estoy atado de manos pues no sé qué otra cosa hacer. Esa es toda la ayuda que necesito.
Estaré pendiente de tu respuesta.
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 3.047
/^$/
|
Tienes razón, no lo reconoce, pero en fin, podrías hacer algo así: set "variable=c:\windows\" echo %variable:~-1% | find "\" > nul 2>&1 && ( echo Si lo tiene. ) || ( echo No lo tiene. )
|
|
|
|
|
En línea
|
|
|
|
<ИΘZIЭ(ŦB>
Desconectado
Mensajes: 109
-cyman-
|
Aún no lo he probado, pero me gustaría saber si %variable:~-1% es para mostrar el último caracter. No me sabía esa función. ¿Sí es para eso?
|
|
|
|
|
En línea
|
|
|
|
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
 
Desconectado
Mensajes: 3.047
/^$/
|
Sí.
|
|
|
|
|
En línea
|
|
|
|
|
|