Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: .:Xx4NG3LxX:. en 21 Febrero 2020, 19:59 pm



Título: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: .:Xx4NG3LxX:. en 21 Febrero 2020, 19:59 pm
Hola otra vez. Como mencioné en el título, quisiera saber Como saber si una variable tiene un caracter especifico.

Lo que quiero hacer es algo como...

Código
  1. @echo off
  2.  
  3. :a
  4. Set /p "num=Introduce un numero decimal > "
  5. if not defined num (goto :a)
  6.  
  7. ::Bien, ahora, lo que quiero saber es; si el numero introducido
  8. ::tiene una coma en cualquier parte, muestre un mensaje, sino
  9. ::muestra otro mensaje.
  10.  

Como ven, no tengo ni siquiera una idea de como se podría hacer.

Espero que me puedan ayudar... Gracias!


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: Serapis en 21 Febrero 2020, 23:31 pm
¿Por qué pierdes el tiempo con esto...?.

Aprende un lenguaje 'de verdad'... donde puedas tomar un libro y absorber en una semana tanto o más de lo que hayas aprendido en meses sobre un proceso (me niego a llamarlo lenguaje) de interpretación extremadamente limitado...

A los "lenguajes de procesado de entradas", hay que darle vuelta y vuelta y ya... se necesitan, pero no para perder tiempo en ellos como para querer resolver enrevesadamente cualquier nimiedad que realizado con cualquier lenguaje, dispone de alguna función explícitamente al caso, dada su generalidad y basta una línea de código...


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: .:Xx4NG3LxX:. en 21 Febrero 2020, 23:57 pm
Disculpa. No es perder el mi tiempo, es querer ir más allá de Batch. Pero más que todo es para aprender, sinceramente, hoy me apeteció aprender Python. Busqué, y encontré un muy buen tutorial (http://www.pythondiario.com/p/tutorial-python-desde-cero.html?m=1), lo recomiendo. Sin tener absolutamente nada de conocimiento sobre Python, voy aprendiendo poco a poco y paso a paso, pero por ahora Batch, que ya sé, ni siquiera es un lenguaje como tal, pero lo quiero dominar al 100%

Lo unico que busco es ayuda con relación al tema, porque ya perdí la cuenta de cuanta gente recomienda aprender otros lenguajes "más completos". También he tocado un poco el VBS, pero hasta ahí...

Espero que alguien me ayude con esto... Gracias!


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: EdePC en 22 Febrero 2020, 06:03 am
Saludos,

- Se me ocurren dos métodos, uno usando Set y comparando variables, y otro usando Find para revisar el %ErrorLevel% que deja para saber si encontró o no.

Código
  1. @Echo Off
  2. :a
  3. Set /P "num=Introduce un n£mero decimal > "
  4.  
  5. Set aux=%num:,=@%
  6. If "%num%" == "%aux%" (
  7.  Echo No hay ,
  8. ) Else (
  9.  Echo Si hay ,
  10. )
  11.  

Código
  1. @Echo Off
  2. :a
  3. Set /P "num=Introduce un n£mero decimal > "
  4.  
  5. Echo %num% | Find "," >nul
  6.  Echo No hay ,
  7. ) Else (
  8.  Echo Si hay ,
  9. )
  10.  


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: .:Xx4NG3LxX:. en 22 Febrero 2020, 16:07 pm
Lo voy a probar. Aunque, si esa era la solución, me sentiré todo un tonto xD. Gracias!

Pues no funcionó... Recontra funcionó xD. Gracias EdePC, una vez más me has ayudado. Te lo agradezco!

¡GRACIAS EdePC!


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: .:Xx4NG3LxX:. en 22 Febrero 2020, 17:07 pm
TEMA CERRADO Y SOLUCIONADO


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: Serapis en 23 Febrero 2020, 19:42 pm
... es querer ir más allá de Batch.
Querer ir más de allá de Batch, es precisamente elegir y saltar a un lenguaje de programación de alto nivel y completo.

Querer ir más allá en Batch... es perder el tiempo, ni más ni menos... pero como es el tuyo, en efecto, nada más que decir....

Creo sin embargo que es bueno que los que se emperran con batch, estén avisados, y no que luego de años 'descubran ' que han perdido un tiempo precioso que podrían haber dedicado a aprender otras cosas... así que espero que no te dés por ofendido, pués lejos de eso es la intención de un mensaje así...


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: .:Xx4NG3LxX:. en 23 Febrero 2020, 19:48 pm
TEMA CERRADO Y SOLUCIONADO

Lee


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: .:Xx4NG3LxX:. en 23 Febrero 2020, 21:05 pm
TEMA REABIERTO

¿Se puede hacer con un for?

Disculpen la molestia... (EdePC)


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: EdePC en 24 Febrero 2020, 00:06 am
- Sip, solo tienes que recorrer cada caracter de tu variable y ver si es una coma. Como en Batch es algo más complicado obtener el número de caracteres de una variable, puede resultar más sencillo recorrer cierta cantidad de caracteres, en este caso 50, luego se comprueba si aún quedan caracteres en la variable para salir del For y no seguir la 50 veces en vano.

-- Y como siempre, cuando se van a manipular variables de entorno dentro de instrucciones agrupadas hay que utilizar EnableDelayedExpansion:

--- GeSHi tiene un bug con !num:~%%a,1! en DOS así que le voy a poner PHP-BRIEF XD
Código
  1. @Echo Off
  2. Set /P "num=Introduce un n£mero decimal > "
  3.  
  4. SetLocal EnableDelayedExpansion
  5. For /L %%a In (0,1,50) Do (
  6.  Set char=!num:~%%a,1!
  7.  If Defined char (
  8.    If "!char!" == "," (
  9.      Echo Si hay ,
  10.      GoTo :continuar
  11.    )
  12.  ) Else (
  13.    Echo No hay ,
  14.    GoTo :continuar
  15.  )
  16. )
  17.  
  18. :continuar
  19. Pause

- He estado haciendo pruebas con 50000 iteraciones y veo que el FOR tiene un Bug porque demora igual XD, como si no saliera del For.

-- Tampoco es que se vaya a poner tantas iteracciones, no creo que el usuario se ponga a tipear un número cientos de dígitos XD. Esta otra opción no tiene el Bug:

Código
  1. @Echo Off
  2. Set /P "num=Introduce un n£mero decimal > "
  3. Set /A i = 0
  4.  
  5. :inicio_bucle
  6. Call Set char=%%num:~%i%,1%%
  7. If Defined char (
  8.  If "%char%" == "," (
  9.    Echo Si hay ,
  10.    Goto :fin_bucle
  11.  )
  12.  Set /A i += 1
  13.  Goto :inicio_bucle
  14. ) Else (
  15.  Echo No hay ,
  16.  Goto :fin_bucle
  17. )
  18. :fin_bucle
  19.  

-- Estoy utilizando Call Set var1=%%var2:~%var3,1%% para que se expandan bien las variables dentro de variables y asi evitarme usar EnableDelayedExpansion.


Título: Re: [AYUDA] [BATCH] Como saber si una variable tiene un caracter especifico.
Publicado por: .:Xx4NG3LxX:. en 24 Febrero 2020, 00:22 am
Dios! Que gente tan excelente hay en este foro...

Sólo hice una pregunta. Y no esta permitido pedir códigos hechos, pero hay personas (EdePC) a las que le sobra conocimiento o simplemente saben más que uno, y te dan todo al alcanze de Ctrl+C y Ctrl+V. Infinitas gracias EdePC!

PD: Hace poco me di cuenta del bug de GeShi con formato DOS.

--==— MUCHAS GRACIAS —==--