elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Scripting
| | |-+  Menú de selección en Batch
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Menú de selección en Batch  (Leído 4,756 veces)
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Menú de selección en Batch
« en: 5 Agosto 2010, 15:48 pm »

Pues... esto pertenecía a un proyecto que quedó bastante en el aire... y bueh, aquí lo dejo, a ver que tal, porque me parece un método interesante  :P

Código:
@ECHO OFF
@SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
@MODE CON COLS=80 LINES=25
@COLOR 0F
@TITLE BOOT
@REM CODED BY BINARY_DEATH
@REM DATA: LAST LINE: 12
:BIOS
CALL:LOAD_KEYBOARD
CALL:LOAD_GRAPHIC
CALL:GRAPHIC_LOAD "!LOGO!"
SET/A INDEX=0,LIMIT=2
:MENU
SET/A COUNT=0
FOR %%I IN (CHANGE,START,SETTINGS) DO (
IF !INDEX! EQU !COUNT! (
SET VAR=!%%I:@=F!&&SET VAR=!VAR:#=F0!
CALL:GRAPHIC_LOAD "!VAR!"
) ELSE (
SET VAR=!%%I:@=0!&&SET VAR=!VAR:#=0F!
CALL:GRAPHIC_LOAD "!VAR!")
SET/A COUNT+=1
)
CALL KEYBOARD.COM
IF %ERRORLEVEL% EQU 80 (
IF %INDEX% LSS %LIMIT% (
SET/A INDEX+=1
) ELSE (SET/A INDEX=0))
IF %ERRORLEVEL% EQU 72 (
IF %INDEX% GTR 0 (
SET/A INDEX-=1
) ELSE (SET/A INDEX=%LIMIT%))
IF %ERRORLEVEL% EQU 13 (
EXIT/B %INDEX%
)
GOTO:MENU
:GRAPHIC_LOAD
FOR %%S IN (%~1) DO (
FOR /F "TOKENS=1,2,3 DELIMS=$" %%K IN ("%%S") DO (
ECHO.EB800:%%K "%%L"%%M 1>>CSHOW.TMP
))
(TYPE CSHOW.TMP&ECHO.Q)|DEBUG>NUL
DEL/Q CSHOW.TMP
GOTO:EOF
:LOAD_GRAPHIC
SET CHANGE=642$C$#,644$H$#,646$A$#,648$N$#,^
64A$G$#,64C$E$#,64E$Û$@,650$B$#,652$O$#,654$S$#
SET START=6E2$S$#,6E4$T$#,6E6$A$#,6E8$R$#,^
6EA$T$#,6EC$Û$@,6EE$B$#,6F0$O$#,6F2$S$#
SET SETTINGS=782$S$#,784$E$#,786$T$#,^
788$T$#,78A$I$#,78C$N$#,78E$G$#,790$S$#
SET LOGO=500$±$F,A2$±$F,142$±$F,1E2$±$F,282$±$F,322$±$F,^
3C2$±$F,502$±$F,A4$±$F,3C4$±$F,504$±$F,A6$±$F,^
3C6$±$F,506$±$F,A8$±$F,1E8$±$F,3C8$±$F,508$±$F,^
AA$±$F,1EA$±$F,3CA$±$F,50A$±$F,14C$±$F,28C$±$F,^
32C$±$F,3CC$±$F,50C$±$F,50E$±$F,510$±$F,B2$±$F,^
3D2$±$F,512$±$F,B4$±$F,3D4$±$F,514$±$F,B6$±$F,^
156$±$F,1F6$±$F,296$±$F,336$±$F,3D6$±$F,516$±$F,^
B8$±$F,158$±$F,1F8$±$F,298$±$F,338$±$F,3D8$±$F,^
518$±$F,BA$±$F,3DA$±$F,51A$±$F,BC$±$F,3DC$±$F,^
51C$±$F,51E$±$F,520$±$F,C2$±$F,162$±$F,202$±$F,^
2A2$±$F,342$±$F,3E2$±$F,522$±$F,C4$±$F,3E4$±$F,^
524$±$F,C6$±$F,3E6$±$F,526$±$F,C8$±$F,3E8$±$F,^
528$±$F,CA$±$F,3EA$±$F,52A$±$F,CC$±$F,16C$±$F,^
20C$±$F,2AC$±$F,34C$±$F,3EC$±$F,52C$±$F,52E$±$F,^
530$±$F,D2$±$F,172$±$F,212$±$F,2B2$±$F,3F2$±$F,^
532$±$F,D4$±$F,2B4$±$F,3F4$±$F,534$±$F,D6$±$F,^
2B6$±$F,3F6$±$F,536$±$F,D8$±$F,2B8$±$F,3F8$±$F,^
538$±$F,DA$±$F,2BA$±$F,3FA$±$F,53A$±$F,DC$±$F,^
2BC$±$F,35C$±$F,3FC$±$F,53C$±$F,53E$±$F
GOTO:EOF
:LOAD_KEYBOARD
IF NOT EXIST KEYBOARD.COM ((
ECHO.N KEYBOARD.COM
ECHO.E 0000 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
ECHO.R CX
ECHO.000E
ECHO.W0
ECHO.Q)|DEBUG 1>NUL 2>&1
)
GOTO:EOF

No usa ni WBAT ni programas externos que MS-DOS no incluya, sólo se usa debug para acceder a la memoria de video.

Saludos!


En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Menú de selección en Batch
« Respuesta #1 en: 5 Agosto 2010, 18:34 pm »

Claro que sí usa programas externos, usa keyboard.com que no es nativo. Una cosa es crear los ejecutables y otra que sean comandos internos del intérprete.


En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: Menú de selección en Batch
« Respuesta #2 en: 5 Agosto 2010, 18:55 pm »

xDDD tienes razón, bueno, pues descontando eso (? xD
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Menú de selección en Batch
« Respuesta #3 en: 5 Agosto 2010, 22:07 pm »

Lo he probado, funciona bien, solo falta "anunciar" qué es lo que eligió el usuario.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: Menú de selección en Batch
« Respuesta #4 en: 5 Agosto 2010, 22:54 pm »

Sí... mira, en esta parte, que es la que comprueba que la tecla presionada sea ENTER, sólo es necesario redirigir hacia alguna parte del código.

Código:
IF %ERRORLEVEL% EQU 13 (
CALL:OPTION_%INDEX%
EXIT /B
)

Por ejemplo ^^
Saludos!
En línea

Ari Slash


Desconectado Desconectado

Mensajes: 1.783



Ver Perfil WWW
Re: Menú de selección en Batch
« Respuesta #5 en: 5 Agosto 2010, 23:05 pm »

muy bueno binary  ;)
En línea

leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: Menú de selección en Batch
« Respuesta #6 en: 5 Agosto 2010, 23:24 pm »

Bueno, usando keyboard.com, yo también he creado mi menú selectivo:

Código
  1. @echo off
  2. setlocal enableextensions enabledelayedexpansion
  3. set /a counter=0
  4. :: Opciones
  5. for /f "tokens=*" %%_ in ('dir /b .') do (
  6. set "choices[!counter!]=% style="color: #448888;">%_"
  7. set /a counter+=1
  8. )
  9.  
  10. set /a n_choices=%counter%
  11.  
  12. set /a luz=1
  13. set /a choice=0
  14.  
  15. call:print !luz! % style="color: #448888;">n_choices%
  16.  
  17. :loop
  18. call keyboard.com
  19.  
  20. if !errorlevel! equ 72 (
  21. if !luz! equ 1 (
  22. set /a luz=!n_choices!
  23. ) else (
  24. set /a luz-=1
  25. )
  26. )
  27.  
  28. if !errorlevel! equ 80 (
  29. if !luz! equ !n_choices! (
  30. set /a luz=1
  31. ) else (
  32. set /a luz+=1
  33. )
  34. )
  35.  
  36. if !errorlevel! equ 13 (
  37. set /a choice=!luz!
  38. )
  39.  
  40. call:print !luz! !n_choices!
  41. if !choice! neq 0 (goto:eleccion)
  42.  
  43. goto:loop
  44.  
  45. :eleccion
  46. set /a choice-=1
  47. echo Elegiste la opción : !choices[% style="color: #448888;">choice%]!
  48. set /p "="
  49. exit /b 0
  50.  
  51. :print
  52. cls
  53. set /a limit=%2 - 1
  54. for /l %%_ in (0, 1, %limit%) do (
  55. set /a local=%%_ + 1
  56. if %1 equ !local! (
  57. echo -^>  !choices[% style="color: #448888;">%_]!
  58. ) else (
  59. echo !choices[% style="color: #448888;">%_]!
  60. )
  61. )
  62. goto:eof

Código:
Archivos de programa
->  ares
code.bat
CONFIG.SYS
cplusplus
cpps
c_codes
Documents and Settings
dudas.bat
escuela.rar
file.txt
Intel
KEYBOARD.COM
log_1.txt
log_2.txt
log_3.txt
log_4.txt
log_5.txt
log_6.txt
MinGW
Perl
Program Files
Qt
reporte_porno.rar
revistas
test.bat
Usb
WINDOWS
_Corel
_foster.rar

Elegiste la opci¾n : ares


C:\>
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
Ari Slash


Desconectado Desconectado

Mensajes: 1.783



Ver Perfil WWW
Re: Menú de selección en Batch
« Respuesta #7 en: 5 Agosto 2010, 23:27 pm »

wau!
voi a buscar un tuto de keryborad.com me estoy perdiendo de algo parece  :xD
En línea

Binary_Death

Desconectado Desconectado

Mensajes: 214



Ver Perfil
Re: Menú de selección en Batch
« Respuesta #8 en: 5 Agosto 2010, 23:31 pm »

Muy bueno leo! ^^
Trabajaré la forma de poder automatizar el estilo del mío... para no tener que diseñar las opciones manualmente. Igual, por el método empleado correría muy lento, así que no se si vale la pena =/ mejor que de ese tipo de menú sólo hayan cortitos  :xD

En fin, saludos =)

Por cierto, Ari-Slash... el menu selectivo podría hacerse igual con set junto con /p, pero habría que presionar una tecla y además no aceptaría laexas flechas de dirección... igualmente, en cuanto al funcionamiento, el keyboard es lo de menos, solo es como un set /p al cual le das una entrada de un solo caracter y almacena en errorlevel el número en ascii de la tecla pulsada... así que de ahí compruebas.
« Última modificación: 5 Agosto 2010, 23:34 pm por Binary_Death » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH] Creando un menu
Scripting
barnix456 7 6,120 Último mensaje 24 Febrero 2011, 19:40 pm
por juanbass
[Batch] ayuda con menu bat
Scripting
shadowhunter 8 3,895 Último mensaje 9 Octubre 2013, 17:44 pm
por shadowhunter
[Batch] Menu batch dinamico
Scripting
shadowhunter 9 8,158 Último mensaje 3 Noviembre 2013, 09:13 am
por Almapa
Menú avanzado en Batch
Scripting
RTN-House 1 6,583 Último mensaje 27 Diciembre 2014, 21:24 pm
por Eleкtro
Ayudaa Tengo Problemas Con Mi Menu En Batch « 1 2 »
Scripting
YoUz 11 7,679 Último mensaje 8 Octubre 2016, 16:54 pm
por Eleкtro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines