Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: <ИΘZIЭ(ŦB> en 26 Agosto 2009, 01:22 am



Título: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: <ИΘZIЭ(ŦB> en 26 Agosto 2009, 01:22 am
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

Código:
If %variable% == 123

o también

Código:
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.


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: leogtz en 26 Agosto 2009, 03:45 am
Trata así:
Código:
if ["%variable%"]==["valor"] ...


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: <ИΘZIЭ(ŦB> en 26 Agosto 2009, 05:09 am
No funciona. Mira:

Código:
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?


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: leogtz en 26 Agosto 2009, 05:18 am
Quitale el endlocal.


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: <ИΘZIЭ(ŦB> en 26 Agosto 2009, 05:27 am
Amigo, sigue sin funcionar. ¿Ya lo probaste?


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: leogtz en 26 Agosto 2009, 05:28 am
No, hace meses que no uso Windows.
Deja veo que puede ser.


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: leogtz en 26 Agosto 2009, 05:30 am
Dejalo así, a ver como te va:
Código:
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
)


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: <ИΘZIЭ(ŦB> en 26 Agosto 2009, 05:40 am
Nada pana! Lo copié y pegué y sigue tomando la segunda opción. No entiendo.


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: <ИΘZIЭ(ŦB> en 26 Agosto 2009, 05:52 am
Bueno pana, si quieres pruebas después y me dices. Gracias por todo.


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: leogtz en 26 Agosto 2009, 05:58 am
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.


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: <ИΘZIЭ(ŦB> en 26 Agosto 2009, 23:25 pm
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.


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: leogtz en 27 Agosto 2009, 04:12 am
Tienes razón, no lo reconoce, pero en fin, podrías hacer algo así:
Código:
set "variable=c:\windows\"
echo %variable:~-1% | find "\" > nul 2>&1 && (
echo Si lo tiene.
) || (
echo No lo tiene.
)


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: <ИΘZIЭ(ŦB> en 27 Agosto 2009, 05:01 am
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?


Título: Re: Problema con símbolos ( \, ", etc) almacenados en variable
Publicado por: leogtz en 27 Agosto 2009, 07:19 am
Sí.