Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: shadowhunter en 9 Octubre 2013, 13:12 pm



Título: [Batch] ayuda con menu bat
Publicado por: shadowhunter en 9 Octubre 2013, 13:12 pm
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!  ;-)


Título: Re: [Batch] ayuda con menu bat
Publicado por: Eleкtro en 9 Octubre 2013, 15:52 pm
¿Y donde está el código que has intentado por ti mismo?.

Saludos


Título: Re: [Batch] ayuda con menu bat
Publicado por: shadowhunter en 9 Octubre 2013, 16:09 pm
El problema es que no se ni por donde empezar XD me gustaria que alguien me pudiese dar alguna pista sobre como deberia hacerlo


Título: Re: [Batch] ayuda con menu bat
Publicado por: Eleкtro en 9 Octubre 2013, 16:48 pm
El 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
Código:
[1] Abrir directorio
[2] Abrir archivo
[3] Salir

Script.bat
Código
  1. @Echo OFF
  2.  
  3. Set /A "OptionsCount=" 2>NUL
  4. Set /A "ChoiceCount="  2>NUL
  5.  
  6. FOR /F "Usebackq Delims=" %%# IN (
  7. "Menu.txt"
  8. ) DO (
  9. Set /A "OptionsCount+=1"
  10. Echo %%#| MORE
  11. )
  12.  
  13. For /L %%X IN (
  14. 1, 1, %OptionsCount%
  15. ) DO (
  16. Call Set "ChoiceCount=%%ChoiceCount%%%%X"
  17. )
  18.  
  19. Choice /C %ChoiceCount% /M "elige una opcion"
  20. GOTO :%ERRORLEVEL%
  21.  
  22. :1
  23. Echo Elegiste la opcion 1
  24. GOTO :END
  25.  
  26. :2
  27. Echo Elegiste la opcion 2
  28. GOTO :END
  29.  
  30. :3
  31. Echo Elegiste la opcion 3
  32. GOTO :END
  33.  
  34. :END
  35. Pause&Exit

(http://img822.imageshack.us/img822/1149/tbii.png)

Saludos.


Título: Re: [Batch] ayuda con menu bat
Publicado por: shadowhunter en 9 Octubre 2013, 17:06 pm
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.



Título: Re: [Batch] ayuda con menu bat
Publicado por: Eleкtro en 9 Octubre 2013, 17:12 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?.


Título: Re: [Batch] ayuda con menu bat
Publicado por: shadowhunter en 9 Octubre 2013, 17:15 pm
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.


Título: Re: [Batch] ayuda con menu bat
Publicado por: Eleкtro en 9 Octubre 2013, 17:37 pm
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:

Código:
@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

(http://img34.imageshack.us/img34/668/1pcm.png)

Saludos



Título: Re: [Batch] ayuda con menu bat
Publicado por: shadowhunter en 9 Octubre 2013, 17:44 pm
Gracias! lo intentare por este metodo si lo consigo colgare el codigo por si alguien tiene el mismo problema.