BATCH encuentra el error

Iniciado por Pirat3net, 21 Julio 2011, 19:41 PM

0 Miembros y 1 Visitante están viendo este tema.

Pirat3net

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)

@Sthéfano

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.

leogtz

Para la otra si no colocas el código con la etiqueta de código tu mensaje será eliminado sin advertencia.
Código (perl) [Seleccionar]

(( 1 / 0 )) &> /dev/null || {
echo -e "stderrrrrrrrrrrrrrrrrrr";
}

http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com

Pirat3net

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

Pirat3net

#4
gracias

SuperDraco

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.
No he vuelto, solo estoy de paso.

Pirat3net

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

Darioxhcx

proba con solamente un and "&"
( cd "ruta al ejejutable" & ejecutable.exe  & goto menuprincipal")
a ver q onda mmmmm

SuperDraco

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...
No he vuelto, solo estoy de paso.