elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.


 


Tema destacado: Deseas probar algunas mejoras a la interfaz del foro? Prueba cake! acerca de


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting (Moderadores: Leo Gutiérrez., Eleкtro)
| | |-+  Problema con símbolos ( \, ", etc) almacenados en variable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con símbolos ( \, ", etc) almacenados en variable  (Leído 23,947 veces)
<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Problema con símbolos ( \, ", etc) almacenados en variable
« en: 26 Agosto 2009, 01:22 »

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.


En línea

Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #1 en: 26 Agosto 2009, 03:45 »

Trata así:
Código:
if ["%variable%"]==["valor"] ...


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #2 en: 26 Agosto 2009, 05:09 »

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?
« Última modificación: 26 Agosto 2009, 05:18 por cyman » En línea

Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #3 en: 26 Agosto 2009, 05:18 »

Quitale el endlocal.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #4 en: 26 Agosto 2009, 05:27 »

Amigo, sigue sin funcionar. ¿Ya lo probaste?
En línea

Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #5 en: 26 Agosto 2009, 05:28 »

No, hace meses que no uso Windows.
Deja veo que puede ser.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #6 en: 26 Agosto 2009, 05:30 »

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
)
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #7 en: 26 Agosto 2009, 05:40 »

Nada pana! Lo copié y pegué y sigue tomando la segunda opción. No entiendo.
En línea

<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #8 en: 26 Agosto 2009, 05:52 »

Bueno pana, si quieres pruebas después y me dices. Gracias por todo.
En línea

Leo Gutiérrez.
. . .. ... ..... ........ ............. .....................
Moderador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #9 en: 26 Agosto 2009, 05:58 »

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

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #10 en: 26 Agosto 2009, 23:25 »

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 Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #11 en: 27 Agosto 2009, 04:12 »

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.
)
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
<ИΘZIЭ(ŦB>

Desconectado Desconectado

Mensajes: 109


-cyman-


Ver Perfil
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #12 en: 27 Agosto 2009, 05:01 »

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 Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Problema con símbolos ( \, ", etc) almacenados en variable
« Respuesta #13 en: 27 Agosto 2009, 07:19 »

Sí.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  
Powered by SMF 1.1.19 | SMF © 2006-2008, Simple Machines