Se me ocurrió postear esto, que justamente ayer, lo "ideamos" iobh y yo... Se trata de mejorar un poco los menus de un programa .bat
Para hacerlos más vistosos, como bien se explica en un post de Saok, podemos utilizar Tablas, con las letras: É,Í,È,¼,»,º.
Imaginemos que hacemos un generador de viruses (es mi casoo que llevo codeandolo hace unos meses)...:
----------------------
:menu
@echo off
cls
echo
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - PRIMERA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼecho
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - SEGUNDA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼecho
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - TERCERA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼset /p opcion= Que opcion escojes? -
if %opcion%==1 (goto primera)
if %opcion%==2 (goto segunda)
if %opcion%==3 (goto tercera) else (goto menu)
--------------------------------
Con lo señalado en rojo, consegimos entablar las opciones, cosa que hara de nuestro menu principal, algo mucho mas bonito visualmente.
Para hacerlo mas claro aun, el que se puede presionar, podriamos emmarcar el numero de lo que se debe teclear para ir a esa opcion, como si fues eun indice:
echo ÉÍÍÍÍÍÍ» ÉÍÍÍ»
echo º yop º º 1 º
echo ÈÍÍÍÍÍͼ ÈÍÍͼ
Con lo que aclarariamos que para ir a la opcion o seccion "yop" tendriamos que teclear "1".
--------------
Tenemos un menu facil de entender y mas o menos agradable visualmente. El problema es que si pone algo con espacios, por ejemplo: "2 3" se cerraria el programa. Esto es algo muy comun en los menus de los programas en .bat
Deemos hacer lo siguiente:
------------------
:menu
@echo off
cls
echo
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - PRIMERA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼecho
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - SEGUNDA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼecho
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - TERCERA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼset /p opcion= Que opcion escojes? -
set opcion=%opcion: =_%if %opcion%==1 (goto primera)
if %opcion%==2 (goto segunda)
if %opcion%==3 (goto tercera) else (goto menu)
--------------------
Lo marcado en amarillo es lo que acabamos de actualizar, con esto, creamos otra variable, "opcion" que a partir de la variable "opcion" cambia tdos los " " por "_" de tal manera que si tecleamos: "hola tio" el programa lo entendera como: "hola_tio". Esto se puede utilizar para no dejar espacios entre operaciones... Si no hiciesemos esto, al escribir una frase con espacios, cerraria el programa con esto, lo coje sin espacios y lo califica en "else" por lo que vuelve al menu...
-----------------------
Por ultimo, lo que conseguimos (mas el k yo xD) es que sin escribir nada, solo pulsando "enter", se nos iva el programa...
Estuvimos provando los dos como solucionarlo y al final, con ayuda mutua, conseguimos el resultado:
------------------------
:menu
@echo off
cls
echo
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - PRIMERA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼecho
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - SEGUNDA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼecho
ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»echo º - TERCERA OPCION º
echo
ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼset /p opcion= Que opcion escojes? -
if "opcion"=="" (goto menu)set opcion=%opcion: =_%if %opcion%==1 (goto primera)
if %opcion%==2 (goto segunda)
if %opcion%==3 (goto tercera) else (goto menu)
-----------------------
(Lo actualizado esta en amarillo). Con esta linea añadida, analizamos si el valor es vacio, empty; por eso mismo se convierte en una "if" normal, solo con la diferencia de la variable que comprovamos (%opcion%) deve ir entre comillas: ("%opcion%"). Luego, comparamos si opcion es "" (es decir, resultado vacio, empty) volvera a goto menu.
Con esto hemos conseguido que por mucho que apretemos enter, no saldremos del programa. Otra buena utilidad

Esto ltimo es muy util si es un programa con muchos menus dentro de otros menus... que sin querer presionamos "enter" sin haver escrito nada y se nos cierra el programa. Con esto NO pasa.
Espero que lo hayan entendido, cualquier duda aquí

Bytes, Espectro Infernal.