[Batch] ayuda con menu bat

Iniciado por shadowhunter, 9 Octubre 2013, 13:12 PM

0 Miembros y 2 Visitantes están viendo este tema.

shadowhunter

Me gustaria saber como puedo crear un bat que al ejecutarse carge un menu desde un txt generado previamente por otro bat?

gracias de antemano!  ;-)

Eleкtro

¿Y donde está el código que has intentado por ti mismo?.

Saludos








shadowhunter

El problema es que no se ni por donde empezar XD me gustaria que alguien me pudiese dar alguna pista sobre como deberia hacerlo

Eleкtro

#3
Cita de: shadowhunter en  9 Octubre 2013, 16:09 PMEl problema es que no se ni por donde empezar XD me gustaria que alguien me pudiese dar alguna pista sobre como deberia hacerlo

¿No tienes ni siquiera tu menú ya prefabricado?, mal empezamos, un menu se puede hacer de mil maneras distintas, es dificil acertar a ciegas lo que necesitas exáctamente si no proporcionas ningún ejemplo...

Te pongo un ejemplo sencillo aunque no se si es lo que andas buscando, pero te debería servir como pista:

Menu.txt
[1] Abrir directorio
[2] Abrir archivo
[3] Salir


Script.bat
Código (dos) [Seleccionar]
@Echo OFF

Set /A "OptionsCount=" 2>NUL
Set /A "ChoiceCount="  2>NUL

FOR /F "Usebackq Delims=" %%# IN (
"Menu.txt"
) DO (
Set /A "OptionsCount+=1"
Echo %%#| MORE
)

For /L %%X IN (
1, 1, %OptionsCount%
) DO (
Call Set "ChoiceCount=%%ChoiceCount%%%%X"
)

Choice /C %ChoiceCount% /M "elige una opcion"
GOTO :%ERRORLEVEL%

:1
Echo Elegiste la opcion 1
GOTO :END

:2
Echo Elegiste la opcion 2
GOTO :END

:3
Echo Elegiste la opcion 3
GOTO :END

:END
Pause&Exit




Saludos.








shadowhunter

Perdon es mi culpa por no especificar. Estoy haciendo un programa bat que funciona mediante una serie de plugins bat que estan en una subcarpeta llamada Plugins.

El programa ejecuta automaticamente todos los plugins dentro de esa carpeta, pero tiene un inconveniente, que el programa ejecuta cada plugin por su nombre, que ya viene incluido en una linea dentro del propio bat principal y que el menu es estatico.

lo que yo necesito hacer y no se como es que el programa lea los nombres de los plugins almacenados en la carpeta y me muestre los nombres de esos plugins como un menu para elegir cuales quiero que se ejecuten junto con el programa al iniciar y cuales no.

Siento la confusion.


Eleкtro

Cita de: shadowhunter en  9 Octubre 2013, 17:06 PM
lo que yo necesito hacer y no se como es que el programa lea los nombres de los plugins almacenados en la carpeta y me muestre los nombres de esos plugins como un menu para elegir cuales quiero que se ejecuten junto con el programa al iniciar y cuales no.

Una última duda,
Quieres ejecutar solo 1 "plugin", ¿o puede ser una cantidad indefinida?.








shadowhunter

Una cantidad indefinida, el menu deberia ser como una lista con todos los plugins que se hayan instalado en la carpeta plugins, para que el usuario eligiera cual quiere activar y cual no.

Eleкtro

#7
Es dificil adaptar la CMD para realizar una selección múltiple, ya que es procesamiento por lotes, podrías hacer algo parecido a esto:

@Echo OFF & SETLOCAL EnableDelayedExpansion

Set "Directory=."
Set "FileExt=bat"

REM Seteo las variables.
For %%# in (
"%Directory%\*.%FileExt%"
) Do (
Set /A "FileCount+=1"
Set "File!FileCount!=%%~nx#"
)

:Select
REM Imprimo las variables.
For /L %%X in (1, 1, !FileCount!) Do (
Echo [%%X] !File%%X!| MORE
)

REM Seteo la seleccion de archivos para iniciar.
Set /P "SelectFiles=Elige los archivos que quieres iniciar >>"

REM Elimino el caracter "espacio" del String.
Set "SelectFiles=%SelectFiles: =%"

Rem Compruebo que el String sólamente contiene números y comas (Ej: 1,2,3).
Echo "%SelectFiles%" | FindStr "\""[^0-9,]\""" 1>NUL && (
CLS
Echo: [X] Error de sintaxis
Echo: Ejemplo de sintaxis correcta:
Echo: 1,2,3,8 | MORE
Goto :Select
)

:RUN
For %%# in (%SelectFiles%) Do (
Echo Start /B "" "!File%%#!"
)

:END
Pause&Exit




Saludos









shadowhunter

Gracias! lo intentare por este metodo si lo consigo colgare el codigo por si alguien tiene el mismo problema.