Hack x Crack - Comunidad de Seguridad informática

Programación => Scripting => Batch / Bash => Mensaje iniciado por: Cris_B en Noviembre 22, 2012, 06:55:48 pm

Título: [Solucionado] Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 22, 2012, 06:55:48 pm
Ola Familia hackxcrack, aquí nuevamente haciendo una preguntilla..  ::)

Pues resulta que estoy aprendiendo Batch porque se me dio un poco fácil y todo eso, he creado mi primer programa, le llame AutoShut porque hace una Auto Shutdown, o sea es una cuenta regresiva para que windows se apague, hasta ahora todo va de lujo, pero me pasa algo...

Resulta que cuando pide claves o pide el ingreso de datos, si uno presiona Enter el programa se cierra, digamos que ingreso la cantidad de tiempo en cuenta regresiva o ingreso la clave del programa y si por descuido presiono Enter sin haber ingresado ningún carácter el programa se cierra.  :-\

Me sentía muy orgulloso, era mi primer programa y funcionaba de joya !, pero ahora tengo esto.. como puedo evitarlo?

La idea es que cuando uno presione Enter sin ningún carácter me haga un goto hacia un error como decir "no has ingresado nada" o algo por el estilo pero el programa se cierra. (intente hacer un goto pero me quede corto en esto), al momento estoy leyendo tutos pero como el problema es muy especifico no he encontrado nada para remediarlo. Se que a mas de uno le paso... como se soluciona?

Agradeceré cualquier ayuda.

Saludos y Gracias
Título: Re:Problema con batch RETO para los expertos
Publicado por: Menrva en Noviembre 22, 2012, 07:27:21 pm
If not defined VARIABLE
Título: Re:Problema con batch RETO para los expertos
Publicado por: ACK en Noviembre 22, 2012, 08:08:19 pm
Ya te dieron la respuesta arriba. Como extra te dejo este link :D

http://ss64.com/nt/if.html

Saludos familia! ;)

P.D: Muevo el tema a la sección de batch ;)
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 22, 2012, 08:25:26 pm
If not defined VARIABLE

No entendí jajajaj
me puede explicar?
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 22, 2012, 08:43:19 pm
Creo entender algo, corrijanme por favor.
Al parecer el batch no soporta espacios entre caracteres, por ejemplo:

Puedo escribir "yosoyhalsenheim"
Pero si escribo "yo soy halsenheim" el programa se cerrara por un caracter no soportado no?, que en este caso es el caracter vacío o "espacio"... entonces como soluciono ese problema?, o en mi caso en particular:
¿Cómo hago que presionando "Enter solo" en una petición de caracter el programa NO se cierre, sino que me envie a un mensaje de error predefinido usando el goto o el if o ambos?.

Espero haber formulado bien la pregunta, es muy especifica para encontrarla en un tuto, pero sigo buscando y si alguien sabe agradecería que me sacara de este embrollo jejeje ::D

Gracias
Título: Re:Problema con batch RETO para los expertos
Publicado por: Menrva en Noviembre 22, 2012, 08:51:27 pm
Simplemente el codigo anterior dice que si no esta definida una varialbe que haga lo que sea (tienes que poner un goto al final y cambiar VARIABLE por el nombre de tu variable)

Y para lo que dijiste ahora lo siguiente
if ["%VARIABLE%"]==["VALOR"] (goto:REDIRECCION)
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 22, 2012, 09:10:28 pm
Simplemente el código anterior dice que si no esta definida una variable que haga lo que sea (tienes que poner un goto al final y cambiar VARIABLE por el nombre de tu variable)

Y para lo que dijiste ahora lo siguiente
if ["%VARIABLE%"]==["VALOR"] (goto:REDIRECCION)

Perdona lo burro.

Tengo esa instrucción en una petición de contraseña que esta casi al inicio del programa. te muestro un ejemplo:
------------
@echo off
:mal
set/P pass="Para usar el programa ingresa el Pass:"
if %pass%==cris (echo Bien hecho !!) else (
echo Incorrecta, intentalo denuevo
goto mal)
pause
-------

Pues resulta que el programa funciona excelente, pero en set pass cuando me pide la contraseña, si en lugar de presionar "hackxcrack" y enter por ejemplo presiono "solo enter" el programa se cierra. Existe una forma de arreglar eso?.

Por favor se que soy un poco duro jajaja pero cuando suba la segunda versión del batch que estoy haciendo con varias mejoras te prometo que te pongo en "agradecimientos" jejeje ;)

Estoy sospechando que tristemente que este problema en  batch no tiene solución por culpa de windows :(

Ojala y me equivoque

Gracias
Título: Re:Problema con batch RETO para los expertos
Publicado por: Menrva en Noviembre 22, 2012, 09:34:12 pm
@echo off
:main
set/P pass="Para usar el programa ingresa el Pass:"
If not defined pass (goto:main)
if ["%pass%"]==["cris"] (goto:bien) else (goto:mal)
:mal
echo Incorrecta, intentalo denuevo
pause>>null
cls
goto:main
:bien
echo Bien hecho !!
pause>>null
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 22, 2012, 10:15:06 pm
@echo off
:main
set/P pass="Para usar el programa ingresa el Pass:"
If not defined pass (goto:main)
if ["%pass%"]==["cris"] (goto:bien) else (goto:mal)
:mal
echo Incorrecta, intentalo denuevo
pause>>null
cls
goto:main
:bien
echo Bien hecho !!
pause>>null

Viejo te pasaste !!

Lo dejaste regalado, así no podría equivocarme ::D

Muchas gracias, te nombrare cuando suba la próxima versión (o el código fuente), trate y trate pero no podía hacerlo.

Una sola cosa, es necesario usar la etiqueta main? porque le puse a los dos goto la misma etiqueta (mal) y no dio problemas. Otra cosa y esto si que no he podido encontrar solución en los libros ni tutos: Supongamos que me pide la clave "criss" y yo "Escribiese cri  ss", como puedo evitar que el programa se cierre ??.

Si te sabes esta ahora si que te debo una, jejeje
... y te escribo en los crédito CON MAYÚSCULAS jajaja.


PD: ojala no se molesten en la comunidad, no estoy siendo cómodo, es solo que de verdad que en ninguna parte se hace referencia a este tema, y como yo estudio urgencia hospitalaria, pfff bueno quien me va a ayudar sino ustedes... ;)

Gracias Familia por todo y muchas gracias Menrva eres una maquina viejo jaja


Título: Re:Problema con batch RETO para los expertos
Publicado por: Menrva en Noviembre 22, 2012, 10:33:23 pm
Deja de llamarme VIEJO  :(

Si te fijas bien ya te lo di con todo hecho incluso para lo que me pides

Puedes cambiar el main por el nombre que quieras pero ten en cuenta que si cambiar el main de arriba tienes que cambiar el de goto:main
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 22, 2012, 11:11:46 pm
Deja de llamarme VIEJO  :(

Si te fijas bien ya te lo di con todo hecho incluso para lo que me pides

Puedes cambiar el main por el nombre que quieras pero ten en cuenta que si cambiar el main de arriba tienes que cambiar el de goto:main

jajaj no te molestes ;D
es solo un expresionismo ;)

Revise bien y tienes razón, lo que pasa es que quise usar una sola etiqueta para los dos goto y me genero el problema... ignore las diferencias de código y solo extraje lo que necesitaba...

Muchas gracias me habría tardado años en aprenderlo solo.

Y no te enojes por lo de viejo ajajajaja me causo simpatía tu reacción

saludos
Título: Re:Problema con batch RETO para los expertos
Publicado por: Menrva en Noviembre 22, 2012, 11:39:33 pm
menrva significa minerva, es el nombre de una diosa etrusca

Código: [Seleccionar]
@echo off
:mal
set/P pass="Para usar el programa ingresa el Pass:"
If not defined pass (goto:mal)
if ["%pass%"]==["cris"] (echo Bien hecho !!) else (echo Incorrecta, intentalo denuevo&&goto:mal)
pause>>null
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 23, 2012, 12:06:10 am
menrva significa minerva, es el nombre de una diosa etrusca

Me Fuiste de gran ayuda :)

Muchas gracias minerva, el batch va excelente gracias a ti y ya estoy adelantando tarea para mañana.
"Administradores: Por favor no cierren el tema aun porque puede que lo necesite de nuevo, gracias"

  ☻/
 /▌  S α α α l u u d o o  s ;)
 / \
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 24, 2012, 04:41:59 am
Una nueva pregunta:

Resulta que al batch que estoy haciendo le agregue unos menús y sub menús para hacerlo mas completo, luego lo suvire como la version 1.2 del AutoShut  jejej que estoy haciendo...

pero quede colgado en otra parte, ya conseguimos superar el problema del usuario que por error ingresa una tecla vacia (enter o espacio), pero que pasa con el fastidioso que donde hay tres opciones a elegir ingresa "4" ??  ;)

intente en lo tutoriales pero la sintaxis que me dan no me resulta  ???

...hasta ahora entiendo que deveria poner algo asi:   if %opcion%>=4 (echo elige del uno al tres IDIOTA!!) jaja pero no resulta, probé poniendo =>, <= o de todas las formas pero no funciona.

RESUMIDO: como hago para decirle al programa que si alguien ingresa una opción mayor a las que están dadas el programa ejecute algún patrón predefinido?

como escribo la sintaxis de:  if %opcion% mayor o igual que 4 echo jódete cabrón jajaja (por ejemplo)

perdonen pero no tengo a nadie quien preguntarle directamente, y como la pregunta es especifica no la encuentro en los tutos ...gracias cualquier ayuda valiosa se va directamente a "los créditos" jejje

:D

GRACIAS familia !!
Título: Re:Problema con batch RETO para los expertos
Publicado por: ACK en Noviembre 24, 2012, 04:55:17 am
Puedes poner algo así, después tu lo corriges, no se mucho de batch...

if not %opcion%==3 if not %opcion%==2 if not %opcion%==1 echo "Debes introducir 1, 2 ó 3. BAKA XD"

Prueba si funciona, cualquier cosa lo vemos.

Saludos familia! ;)

P.D: No te olvides de avisar cuando pueda cerrarse el tema ;)
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 24, 2012, 05:09:07 am
Puedes poner algo así, después tu lo corriges, no se mucho de batch...

if not %opcion%==3 if not %opcion%==2 if not %opcion%==1 echo "Debes introducir 1, 2 ó 3. BAKA XD"

Prueba si funciona, cualquier cosa lo vemos.

Saludos familia! ;)

P.D: No te olvides de avisar cuando pueda cerrarse el tema ;)

ooo no puede ser !! :o

es que de verdad tan Nb soy

te juro que intente de todo meno eso >:(
me parecía que era demasiado obvio un error
pucha hubiese querido encontrar la solución solo, pero bueno

MUCHAS gracias Facu, porfa dame un poco mas de tiempo, por si se presenta otra cosa
aunque me parece que ya estoy listo pero por si acaso.

Dame dos días y te aviso !!

Gracias!! ;D

PD: a los créditos jej
Título: Re:Problema con batch RETO para los expertos
Publicado por: ACK en Noviembre 24, 2012, 08:43:44 am
Puedes poner algo así, después tu lo corriges, no se mucho de batch...

if not %opcion%==3 if not %opcion%==2 if not %opcion%==1 echo "Debes introducir 1, 2 ó 3. BAKA XD"

Prueba si funciona, cualquier cosa lo vemos.

Saludos familia! ;)

P.D: No te olvides de avisar cuando pueda cerrarse el tema ;)

ooo no puede ser !! :o

es que de verdad tan Nb soy

te juro que intente de todo meno eso >:(
me parecía que era demasiado obvio un error
pucha hubiese querido encontrar la solución solo, pero bueno

MUCHAS gracias Facu, porfa dame un poco mas de tiempo, por si se presenta otra cosa
aunque me parece que ya estoy listo pero por si acaso.

Dame dos días y te aviso !!

Gracias!! ;D

PD: a los créditos jej

Jaja, no te preocupes, me alegra se haya solucionado tu problema.
Te recomiendo leas algo sobre algoritmia y hagas practicas de ello. Es muy útil a la hora de programar. Mira, acá te dejo unas clases que di hace un tiempo:

http://foro.hackxcrack.net/forum/index.php?topic=13113.0

Creo que los enlaces todavía funcionan, pero si se cae uno me avisas ;)

Te recomiendo más que nada la primera clase, ya que la segunda explica temas que solo aparecen en lenguajes como C, Python, etc.. pero que no te serán útiles e batch. Es importante que, si ves el primero vídeo, lo pongas en practica, ya sea con pseudocódigo o con batch, la practica lo es todo. ;)

Saludos ;)
Título: Re:Problema con batch RETO para los expertos
Publicado por: Menrva en Noviembre 24, 2012, 10:59:12 am
Una nueva pregunta:

Resulta que al batch que estoy haciendo le agregue unos menús y sub menús para hacerlo mas completo, luego lo suvire como la version 1.2 del AutoShut  jejej que estoy haciendo...

pero quede colgado en otra parte, ya conseguimos superar el problema del usuario que por error ingresa una tecla vacia (enter o espacio), pero que pasa con el fastidioso que donde hay tres opciones a elegir ingresa "4" ??  ;)

intente en lo tutoriales pero la sintaxis que me dan no me resulta  ???

...hasta ahora entiendo que deveria poner algo asi:   if %opcion%>=4 (echo elige del uno al tres IDIOTA!!) jaja pero no resulta, probé poniendo =>, <= o de todas las formas pero no funciona.

RESUMIDO: como hago para decirle al programa que si alguien ingresa una opción mayor a las que están dadas el programa ejecute algún patrón predefinido?

como escribo la sintaxis de:  if %opcion% mayor o igual que 4 echo jódete cabrón jajaja (por ejemplo)

perdonen pero no tengo a nadie quien preguntarle directamente, y como la pregunta es especifica no la encuentro en los tutos ...gracias cualquier ayuda valiosa se va directamente a "los créditos" jejje

:D

GRACIAS familia !!
Te pongo un ejemplito para lo de los numeros a ver si lo entiendes ^^
Código: [Seleccionar]
if %variable%==1 (goto 1)
if %variable%==2 (goto 2)
if %variable% GTR 2 (echo Error)
Solo debes usar limitadores como el GTR que es para valores superiores de la cantidad que tu delimites dara ese error.

Par lo de los espacios ya te lo deje, basta con meter la variable y la opcion entre corchetes y comillas [" "]
Puedes poner algo así, después tu lo corriges, no se mucho de batch...

if not %opcion%==3 if not %opcion%==2 if not %opcion%==1 echo "Debes introducir 1, 2 ó 3. BAKA XD"

Prueba si funciona, cualquier cosa lo vemos.

Saludos familia! ;)

P.D: No te olvides de avisar cuando pueda cerrarse el tema ;)
Ese metodo de daria un bug en el codigo dado que pueden usarse string y por lo tanto ¿que pasaria si el user pone como variable "not 1"?



En resumen para un buen codigo limitado usaremos esto
Código: [Seleccionar]
if not defined variable (goto:error)
if ["%variable%"]==["1"] (goto:opcion1)
if ["%variable%"]==["2"] (goto:opcion2)
if %variable% GTR 2 (goto:error)
Título: Re:Problema con batch RETO para los expertos
Publicado por: ACK en Noviembre 24, 2012, 06:20:37 pm
Pero con tu código, que pasaría si el usuario introduce 0 o -1 ? :P
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 24, 2012, 06:47:35 pm
Pero con tu código, que pasaría si el usuario introduce 0 o -1 ? :P

El 0 ya esta solucionado...

Pero a propósito de lo otro tengo que descubrir como generar una respuesta para eso de los negativos jeje.. ademas de que puedo hacer si alguien pone "Z" donde estoy pidiendo del 1, 2 o 3??? (hasta ahora el código responde: tienes Z segundos para que el equipo se apague jejej) No y que pasa si alguien pone "@# en vez de "1" ??? ... baya esto nuca acaba :( ... jeje pero eso es lo mas que gusta de esto no?

Son buenas preguntas ;) , voy a buscar un rato y si los tutos no me ayudan tendré que volver a preguntar ;D

Después de todo los tutos pecan de genéricos y nunca son lo suficientemente avanzados como para solucionar estos conflictos, una vez termine la segunda versión y la suba también subiré un tutorial para personas "busquillas" como yo jeje.

"Un verdadero programador no es quien hace un buen código sino el que resuelve todos los conflictos"... ojala y algún día pueda llegar a estaturas como esa y aprender todo lo que pueda de ustedes.

Es bien difícil encontrar gente que resuelva estos problemas y mas difícil gente que los enseñe, jeje  ;)

Voy a seguir buscando y si no puedo conseguirlo acudiré a la comunidad.

Gracias familia ;D
Título: Re:Problema con batch RETO para los expertos
Publicado por: Cris_B en Noviembre 24, 2012, 09:00:03 pm
Pero con tu código, que pasaría si el usuario introduce 0 o -1 ? :P

SOLUCIONADO  ;D

ahora seguiré perfeccionando y encontrando imperfecciones

:D