Parametros:
Código:
Call:Menu
|_1_ Items separados por Puntos ( ejemplo.de.items. )
|_2_ Espacio entre borde Isq y menu ( " " )
|_3_ Icono de NO seleccionado ( "[-]" )
|_4_ Icono de SI seleccionado ( "[+]" )
|_5_ Variable que contenga una cabezera para el menu, sin %% (Cabezera)
|_6_ Variable donde se almacenara el item seleccionado
[i]Call:Menu "ejemplo.de.items" " " "[-]" "[+]" Cabezera Resultado[/i]
( Lo pongo entre (Code)(/Code) porque sino se deforma... )
Ejemplos:
Codigo:
Código:
:MenuCreator
SetLocal EnableDelayedExpansion
If NOT exist "keyboard.exe" (Call:..kybrd Echo)
Set ..p6=%6
Set ..c=0
set ..p1=%~1
set ..p1=%..p1:.=,%
For %%_ in (%..p1%) Do (Set /A ..c+=1&Set ..itm!..c!=%%_)
Set ..s=1
:..MnGn
CLS&Echo.&!%5!&Echo.
For /L %%_ in (1,1,!..c!) Do (
If ["%%_"]==["!..s!"] (Echo%~2%~4 !..itm%%_!) Else (Echo%~2%~3 !..itm%%_!)
)
keyboard
If ["%ErrorLevel%"]==["72"] (IF not ["!..s!"]==["1"] (Set /A ..s-=1))
If ["%ErrorLevel%"]==["80"] (IF not ["!..s!"]==["!..c!"] (Set /A ..s+=1))
If ["%ErrorLevel%"]==["13"] (Set %..p6%=!..itm%..s%!&CLS&GOTO:EOF)
GoTo:..MnGn
:..kybrd
(%1 n keyboard.dat
%1 e 0000 4D 5A 2E 00 01 00 00 00 02 00 00 10 FF FF F0 FF
%1 e 0010 FE FF 00 00 00 01 F0 FF 1C 00 00 00 00 00 00 00
%1 e 0020 B4 08 CD 21 3C 00 75 02 CD 21 B4 4C CD 21
%1 rcx&%1 002E&%1 w0&%1 q&%1.)>keyboard.dat
type keyboard.dat|debug>NUL 2>&1
del /f/q/a "keyboard.exe">NUL 2>&1
rename "keyboard.dat" "keyboard.exe"
GoTo:EOF
Código:
Set Cabezera=Echo \_/\ [ MenuByPony ] /\_/
Call:Menu "Menu.By.Pony.Magic" " " "[-]" " [+]" Cabezera resultado
Echo.
Echo %resultado%
Pause
Código:
Set Cabezera=Echo -:01010011.. P0NYM4GIK ..11001010:-
Call:Menu "Menu.By.Pony.Magic" " " "o" " o" Cabezera resultado
Echo.
Echo %resultado%
Pause