Puedes ver todas las lecciones batch desde este enlace: Lecciones batch.
A día de hoy ya sabemos defendernos más o menos en la terminal batch con los comandos vistos además de poder realizar nuestros pequeños scripts. Hasta ahora solo sabíamos crear scripts puntuales para que hiciera una tarea u otra, pero que pasa si queremos hacer una aplicación más grande, y que realice varias funciones, para ello deberemos recurrir a la creación de menús.
En esta entrada intentaré explicar una metodología para crear un menú en batch, esto no quiere decir que sea la única forma o la mejor. Para la creación de estos menús nos centraremos en el uso del comando if, olvidándonos por el momento de choice.exe.
Bien lo primero que debemos hacer incluso antes de ponernos a programar es en qué consistirá nuestro menú, pensando en que partes tendrá y que tareas hará.
El menú que explicaré se utilizará para llamar a varias aplicaciones.
- Creando el esqueleto de la aplicación.
Ahora que ya sabemos cómo va a ser más o menos nuestra aplicación empezaremos por crear el “esqueleto”. El esqueleto de una aplicación es la parte de código que se utiliza para cualquier aplicación, es por decirlo así como una plantilla.
En las aplicaciones batch normalmente empiezo de la siguiente manera.
1 2 3 4 5 6 7 8 9 | @echo off cd \ & cls :: Creado por Comtecknet a 13-08-2010 title Mi primer menu color a :inicio |
Empiezo por dejar la ruta en la raíz y hacer un limpiado de pantalla. A continuación pongo una anotación con el nombre de quien lo ha creado junto con la fecha, después le doy un título a la aplicación y para acabar le doy un color.
* Falta una línea que sirve para poner un tamaño fijo en la terminal usando “mode con” pero aun no lo he explicado y prefiero centrarme en la creación del menú.
- Creación del diseño del menú.
El diseño del menú es lo que ve el usuario al abrir la aplicación.
Aquí es donde algunas personas no estén conmigo, ya que en otros lenguajes de programación, como por ejemplo java, lo último que se hace en una aplicación es la parte que ve el usuario (vista).
Para crear el diseño del menú, una forma muy habitual es usando “echo, # ó .(punto) y números“.
1 2 3 4 5 6 | echo # 1 Abrir cmd echo # 2 Abrir blog de notas echo # 3 Abrir administrador de tareas echo # 4 Abrir panel de control echo. echo # 5 Salir de la aplicacion |
Esto es lo que verían los usuarios:
- Creación de un marco para el menú.
Una parte que podemos hacer para crear un menús más bonitos y elegantes es ponerle un marco. Por ahora me limitaré a usar un marco básico, en la siguiente lección veremos caracteres especiales para crear marcos mucho más bonitos.
1 2 3 4 5 6 7 8 | echo ##################################### echo # # 1 Abrir cmd # echo # # 2 Abrir blog de notas # echo # # 3 Abrir administrador de tareas # echo # # 4 Abrir panel de control # echo # # echo # # 5 Salir de la aplicacion # echo ##################################### |
- Crear la variable de elección y usar el if para redireccionar.
Ahora que ya tenemos nuestro menú debemos crear una variable que guarde un némero que será comparado más tarde con if para saber a qué parte del código corresponde cada tarea.
Crearemos primero la variable:
1 | set /p opcion=Elige una opcion: |
A continuación pondremos mínimo tantos if como tareas tenga nuestro menú. Estos if tendrán como función comparar cada numero con el que hemos tecleado y redirigir el código a otra etiquita.
1 2 3 4 5 | if %opcion%==1 (goto terminal) if %opcion%==2 (goto txt) if %opcion%==3 (goto tareas) if %opcion%==4 (goto panelControl) if %opcion%==5 (goto EOF) |
También es posible obligar al usuario para que presione solamente los números que aparecen en el menú, para ello usaremos otra vez 5 if (en este caso) pero usando el operador NEQ.
1 2 3 4 5 | if %opcion% NEQ 1 (goto inicio) if %opcion% NEQ 2 (goto inicio) if %opcion% NEQ 3 (goto inicio) if %opcion% NEQ 4 (goto inicio) if %opcion% NEQ 5 (goto inicio) |
* Esto no es obligatorio, además de que ocupa bastantes líneas.
- Creando cada tarea en etiquetas.
Estamos llegando al final, y ahora toca crear todas las tareas que realizará el menú. Cada tarea deberá estar dentro de una etiqueta, (para programadores de otros lenguajes esto es como hacer los métodos de la parte de lógica de la aplicación).
En mi caso son 5 tareas (incluyendo la de salir) por lo que tendré que crear 5 etiquetas cuyo nombre será igual a la que pusimos en los if.
* Una recomendación que suelo hacer es poner al principio de cada etiqueta un cls para borrar todo el texto de la pantalla.
* Para llamar a las aplicaciones usaré el comando start (aún no explicado). Este comando puede ejecutar cualquier aplicación/proceso dando el nombre o la ruta.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | :terminal cls start cmd.exe goto inicio :txt cls start notepad goto inicio :tareas cls start taskmgr goto inicio :panelControl cls start control goto inicio :EOF |
- Probando la aplicación
La última parte que debemos hacer es comprobar de que todo funciona. Para ello executaremos nuestra aplicación y probaremos todo, teclear una letra o un número que no sea valido para conprobar que no hace nada, teclear cada del 1 al 5 para verificar que cada etiqueta esta bien puesta, etc.
vemos que todo va a la perfección, apretando “1″ automáticamente se inicia un terminal batch (cmd).
* Este menu en concreto se podría haber hecho sin nesesidad de usar las etiquetas, sino llamando a las aplicaciones desde los if además de ahorrarnos unas cuentas líneas más, pero he optado de esta forma más larga, para que se vea claramente como se debe hacer paso por paso un menu básico.
Para finalizar la entrada dejo aquí todo el cógido completo para que lo copiéis en un bat y lo ejecuteis:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | @echo off cd \ & cls :: Creado por Comtecknet a 13-08-2010 title Mi primer menu Color a :inicio cls echo ##################################### echo # # 1 Abrir cmd # echo # # 2 Abrir blog de notas # echo # # 3 Abrir administrador de tareas # echo # # 4 Abrir panel de control # echo # # echo # # 5 Salir de la aplicacion # echo ##################################### set /p opcion=Elige una opcion: if %opcion%==1 (goto terminal) if %opcion%==2 (goto txt) if %opcion%==3 (goto tareas) if %opcion%==4 (goto panelControl) if %opcion%==5 (goto EOF) if %opcion% NEQ 1 (goto inicio) if %opcion% NEQ 2 (goto inicio) if %opcion% NEQ 3 (goto inicio) if %opcion% NEQ 4 (goto inicio) if %opcion% NEQ 5 (goto inicio) :terminal cls start cmd.exe goto inicio :txt cls start notepad goto inicio :tareas cls start taskmgr goto inicio :panelControl cls start control goto inicio :EOF |
Entradas Relacinadas:








