Test Foro de elhacker.net SMF 2.1

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 (dos) [Seleccionar]
@echo off
:menuprincipal
echo. 1.
echo. 2.
echo. 3.
echo. 4.
echo. 5.
echo. 6.
echo. 7.
echo. 8.
echo. 9.

set/p eleccion =


IF %eleccion%==1 (GOTO menu1)
if %eleccion%==2 (GOTO menu2)
if %eleccion%==3 (GOTO menu3)
if %eleccion%==4 (GOTO menu4)
if %eleccion%==5 (GOTO menu5)
if %eleccion%==6 (GOTO menu6)
if %eleccion%==7 (GOTO menu7)
if %eleccion%==8 (GOTO menu8)
if %eleccion%==9 (GOTO menu8)
PAUSE


:menu2
pause
echo. 1.
echo. 0.
set/p Eleccion2 = elige

if %Eleccion2%=2 start "C:\lo que sea"
if %Eleccion2%=0 GOTO(menu1)

:menu3
pause
echo. 1.
echo. 0.

set/p Eleccion3 = elige

if %Eleccion2%=1 start "C:\lo que sea"
if %Eleccion2%=0 GOTO(menu1)


:menu4
pause
echo. 1.
echo. 0.

set/p Eleccion4 = elige

if %Eleccion2%=1 start "C:\lo que sea"
if %Eleccion2%=0 GOTO(menu1)

:menu5
pause
echo. 1.
echo. 0.

set/p Eleccion5 = elige

if %Eleccion2%=1 start "C:\lo que sea"
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 (dos) [Seleccionar]
@echo off
:menuprincipal
echo 1. Sumar
echo 2. Restar
set /P OPC=Elija una opcion [1/2]
if %OPC%==1 goto:suma
if %opc%==2 goto:resta
:suma
set /P N1=Numero:
set /P N2=Cantidad a sumar:
set /A RES=%N1%+%N2%
echo %RES%
pause
exit
:resta
set /P N1=Numero:
set /P N2=Cantidad a restar:
set /A RES=%N1%-%N2%
echo %RES%
pause
exit


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.


set/p eleccion =
IF %eleccion%==1 (...)


¿Te das cuenta por ti mismo?

Setea la variable sin espacios, así:

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 (dos) [Seleccionar]

if  %variable%==1 ( cd "ruta al ejejutable" && ejecutable.exe  && goto menuprincipal")


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 "&"
( 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
Cita de: Darioxhcx en 22 Julio 2011, 03:35 AM
proba con solamente un and "&"

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




Cita de: Pirat3net en 22 Julio 2011, 03:32 AM
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 (dos) [Seleccionar]
IF  %variable% EQU 1 (
     Start /B C:\"Program Files\Programa.exe"
     goto :menuprincipal
)


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...