Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Pirat3net en 21 Julio 2011, 19:41 pm



Título: BATCH encuentra el error
Publicado por: Pirat3net en 21 Julio 2011, 19:41 pm
estoy haciendo un menu parecido a este este fue un copia pega borrando las opciones , el caso es que no consigo que ejecute el cabron

cuando paso a cualquiera de los menus secundarios aborta

algun consejo???
thx

Código
  1. @echo off
  2. :menuprincipal
  3. echo. 1.
  4. echo. 2.
  5. echo. 3.
  6. echo. 4.
  7. echo. 5.
  8. echo. 6.
  9. echo. 7.
  10. echo. 8.
  11. echo. 9.
  12.  
  13. set/p eleccion =
  14.  
  15.  
  16. IF %eleccion%==1 (GOTO menu1)
  17. if %eleccion%==2 (GOTO menu2)
  18. if %eleccion%==3 (GOTO menu3)
  19. if %eleccion%==4 (GOTO menu4)
  20. if %eleccion%==5 (GOTO menu5)
  21. if %eleccion%==6 (GOTO menu6)
  22. if %eleccion%==7 (GOTO menu7)
  23. if %eleccion%==8 (GOTO menu8)
  24. if %eleccion%==9 (GOTO menu8)
  25.  
  26.  
  27. :menu2
  28. echo. 1.
  29. echo. 0.
  30. set/p Eleccion2 = elige
  31.  
  32. if %Eleccion2%=2 start "C:\lo que sea"
  33. if %Eleccion2%=0 GOTO(menu1)
  34.  
  35. :menu3
  36. echo. 1.
  37. echo. 0.
  38.  
  39. set/p Eleccion3 = elige
  40.  
  41. if %Eleccion2%=1 start "C:\lo que sea"
  42. if %Eleccion2%=0 GOTO(menu1)
  43.  
  44.  
  45. :menu4
  46. echo. 1.
  47. echo. 0.
  48.  
  49. set/p Eleccion4 = elige
  50.  
  51. if %Eleccion2%=1 start "C:\lo que sea"
  52. if %Eleccion2%=0 GOTO(menu1)
  53.  
  54. :menu5
  55. echo. 1.
  56. echo. 0.
  57.  
  58. set/p Eleccion5 = elige
  59.  
  60. if %Eleccion2%=1 start "C:\lo que sea"
  61. if %Eleccion2%=0 GOTO(menu1)


Título: Re: BATCH encuentra el error
Publicado por: @Sthéfano en 21 Julio 2011, 19:59 pm
Aquí te dejo el correcto uso de los menus.

Código
  1. @echo off
  2. :menuprincipal
  3. echo 1. Sumar
  4. echo 2. Restar
  5. set /P OPC=Elija una opcion [1/2]
  6. if %OPC%==1 goto:suma
  7. if %opc%==2 goto:resta
  8. :suma
  9. set /P N1=Numero:
  10. set /P N2=Cantidad a sumar:
  11. set /A RES=%N1%+%N2%
  12. echo %RES%
  13. :resta
  14. set /P N1=Numero:
  15. set /P N2=Cantidad a restar:
  16. set /A RES=%N1%-%N2%
  17. echo %RES%

Claro, es solo una muestra y una base. Para que te des una idea sobre como hacerlo, lo acabo de hacer y funciona correctamente.

PD: en tu código falta el menu 1.


Título: Re: BATCH encuentra el error
Publicado por: leogtz en 21 Julio 2011, 20:18 pm
Para la otra si no colocas el código con la etiqueta de código tu mensaje será eliminado sin advertencia.


Título: Re: BATCH encuentra el error
Publicado por: Pirat3net en 21 Julio 2011, 21:29 pm
se que es el molde, lo hice yo xD el caso es que cuando lo aplico, elijo una opcion en el primer menu , y en vez de acceder a uno secundario, directamente se cierra


Título: Re: BATCH encuentra el error
Publicado por: Pirat3net en 21 Julio 2011, 21:34 pm
gracias


Título: Re: BATCH encuentra el error
Publicado por: SuperDraco en 21 Julio 2011, 22:17 pm
vamos a ver, el fallo está muy claro.

Código:
set/p eleccion = 
IF %eleccion%==1 (...)

¿Te das cuenta por ti mismo?

Setea la variable sin espacios, así:

Código:
set/p eleccion= 


Saludos.


Título: Re: BATCH encuentra el error
Publicado por: Pirat3net en 22 Julio 2011, 03:32 am
una nueva duda del mismo code.
cuando quiero accedo a un menu secundario,y en este elijo una opcion
quiero que se ejecute una aplicacion y que sin cerrarse la cmd esta vuelva al menu principal
lo estoy haciendo de la siguiente manera
Código
  1. if  %variable%==1 ( cd "ruta al ejejutable" && ejecutable.exe  && goto menuprincipal")
  2.  

el caso es que cuando lo ago asi, la cmd espera a que el ejecutable.exe deje de ejecutarse para mostrarme el menu.

intente solventarlo con un call a otro bat pero nanai de la china

gracias


Título: Re: BATCH encuentra el error
Publicado por: Darioxhcx en 22 Julio 2011, 03:35 am
proba con solamente un and "&"
Código:
( cd "ruta al ejejutable" & ejecutable.exe  & goto menuprincipal")
a ver q onda mmmmm


Título: Re: BATCH encuentra el error
Publicado por: SuperDraco en 22 Julio 2011, 04:08 am
proba con solamente un and "&"

No, eso no funcionará ni con 1 ni con 2 ni con 5  :xD



la cmd espera a que el ejecutable.exe deje de ejecutarse para mostrarme el menu.

obvio.

¿Porque no te lees un manual básico?

cd "ruta al ejejutable" eso funciona, pero también sobra!, no hace falta, para hacer eso es preferible escribir directamente la ruta del ejecutable entera....

Código
  1. IF  %variable% EQU 1 (
  2.     Start /B C:\"Program Files\Programa.exe"
  3.     goto :menuprincipal
  4. )

PD: Y fijate en como he usado las comillas con el comando START, Si usas Windows 7 tienes que usarlas como el ejemplo, sin excepciones, no puedes entrecomillar la ruta entera en Win7. Si usas XP puedes entrecomillar la ruta del START de forma normal.


saludos...