Cómo crear un menú interactivo en un script batch de Windows

Última actualización:
Autor:

Cómo hacer un menú en un script de batch

Cada vez que necesitas automatizar tareas en Windows o facilitar el uso de ciertas funciones a otros usuarios, los scripts batch se convierten en una herramienta insustituible. Sin embargo, muchas veces pueden ser poco amigables si solo requieren introducir comandos complejos. Crear un menú dentro de un script batch los transforma en herramientas mucho más intuitivas y versátiles, permitiendo elegir opciones en pantalla y ejecutando distintas acciones sin apenas esfuerzo.

En el mundo de los scripts por lotes o batch, contar con menús interactivos es clave para mejorar la experiencia tanto de usuarios avanzados como de quienes no dominan la consola de comandos. Saber cómo diseñar un menú en un archivo batch no solo automatiza el trabajo, sino que también lo hace más seguro y menos propenso a errores humanos, unificando rutinas cotidianas bajo un mismo documento ejecutable.

¿Qué es un menú en un script batch y para qué sirve?

Cuando hablamos de un menú en un script batch, nos referimos a un listado de opciones en pantalla que permite al usuario seleccionar la acción que desea ejecutar. Estas acciones pueden ir desde tareas tan simples como crear directorios, ejecutar otros programas, cambiar configuraciones, hasta tareas más complejas como automatizar compilaciones o despliegues en proyectos de desarrollo.

Las ventajas de los menús batch radican en que permiten una interacción más sencilla con usuarios que no están acostumbrados a escribir comandos manualmente. Así, cualquier persona puede elegir una opción simplemente introduciendo un número o una letra, dejándose guiar por instrucciones claras.

Componentes principales de un menú en batch: etiquetas, condicionales y flujos

Para construir un menú en batch es fundamental conocer algunos comandos básicos:

  • Etiquetas: Usadas con el signo dos puntos (:), funcionan como marcadores o puntos de salto dentro del script. Por ejemplo, :menu marca el inicio del menú principal.
  • goto: Redirige la ejecución del script a la etiqueta especificada, determinando qué parte del código se ejecutará a continuación.
  • if: Permite tomar decisiones basadas en condiciones, como saber qué opción ha seleccionado el usuario.
  • set /p: Solicita al usuario que introduzca un valor y lo almacena en una variable.
  • echo: Muestra información en pantalla, clave para crear menús claros y guiar al usuario.
  Cómo solucionar el error 0x8007000e en Windows y otros entornos

La combinación de estos comandos permite estructurar scripts que presentan opciones, reciben la entrada del usuario y ejecutan la lógica correspondiente a cada elección.

Ejemplo básico de menú en batch explicado paso a paso

Veamos cómo se estructura un menú sencillo para que el usuario pueda elegir entre realizar diferentes tareas, siguiendo los ejemplos más representativos de los tutoriales mejor posicionados:

@echo off
title Menú de opciones
:menu
echo Elige una de las siguientes opciones:
echo.
echo 1) Acertijo
echo 2) Crear directorio
echo 3) Salir
echo.
set /p opcion=
if %opcion%==1 goto acertijo
if %opcion%==2 goto carpetanueva
if %opcion%==3 goto salir
:acertijo
echo ¿Qué es lo que es algo y a la vez nada?
pause
goto menu
:carpetanueva
echo Creando carpeta nueva...
sleep 2
mkdir acertijo
pause
cls
goto menu
:salir
echo Cerrando programa...
sleep 2
pause

Cada bloque de código responde a una opción del menú. Tras ejecutar la acción, el script vuelve al menú principal, salvo que se elija salir. Este modelo es fácilmente ampliable; basta con añadir nuevas etiquetas y opciones para ofrecer más funcionalidades.

Ejemplo avanzado: menú para tareas de desarrollo y automatización

Más allá de los menús sencillos, algunos desarrolladores implementan menús para gestionar proyectos de desarrollo, especialmente en contextos empresariales o de equipos grandes. Por ejemplo, en un entorno donde se usa Maven, se puede crear un menu.bat en la raíz del proyecto para facilitar operaciones como compilar, probar, ejecutar servidores o limpiar el entorno.

Este tipo de menú permite:

  • Reducir errores repetitivos al unificar tareas en un solo archivo.
  • Facilitar la incorporación de nuevos miembros al equipo, al documentar de forma práctica los flujos principales.
  • Integrar comandos personalizados como mvn clean install o el arranque de servidores embebidos.
  • Ejecutar partes específicas mediante subcomandos.

Este ejemplo muestra cómo un menu.bat avanzado puede facilitar el trabajo en entornos de desarrollo:

@echo off
echo ###############################
echo . Menú de Tareas Rápidas
echo ###############################
:menu_inicio
echo 1. Compilar proyecto
echo 2. Ejecutar aplicación
echo 3. Abrir navegador
echo 4. Limpiar entorno
echo 5. Salir
set /p opcion=
if "%opcion%"=="1" goto compilar
if "%opcion%"=="2" goto ejecutar
if "%opcion%"=="3" goto navegador
if "%opcion%"=="4" goto limpiar
if "%opcion%"=="5" goto salir
:compilar
echo Compilando...
call mvn clean install
pause
goto menu_inicio
:ejecutar
echo Ejecutando aplicación...
rem Aquí puedes lanzar tu app o servidor
pause
goto menu_inicio
:navegador
echo Abriendo navegador...
start iexplore.exe http://localhost:8080/miapp/
pause
goto menu_inicio
:limpiar
echo Limpiando entorno...
rem Borra directorios, reinicia servicios, etc.
pause
goto menu_inicio
:salir
exit

Esta estructura permite gestionar diferentes tareas en un solo script, facilitando la automatización y el control del flujo de trabajo en proyectos complejos.

  el iPhone se desconecta del WiFi cuando está bloqueado o en modo de reposo

Trucos y consejos para mejorar la experiencia del usuario

Más allá de presentar opciones, es vital que un menú batch sea intuitivo y evite errores comunes. Aquí recopilamos algunos consejos esenciales para scripts batch eficientes:

  • Validar la entrada del usuario: Es recomendable comprobar que la opción introducida es válida y, si no lo es, mostrar un mensaje de error y volver al menú.
  • Usar colores y formatos: Puedes cambiar los colores del texto y fondo con el comando color para destacar secciones importantes o diferenciar tipos de mensajes.
  • Limpiar la pantalla antes de mostrar el menú: Usa cls para mantener la consola ordenada y facilitar la lectura.
  • Incluir títulos y cabeceras: Usa title para dar un nombre descriptivo a la ventana de comandos y mejorar la interfaz.
  • Incluir pausas: El comando pause ayuda a que el usuario lea los mensajes antes de continuar.

Implementar validaciones y utilizar las funciones del sistema puede hacer que el menú sea más robusto y amigable.

Técnicas avanzadas: menús con múltiples niveles y subcomandos

En entornos profesionales, es común tener menús con múltiples niveles, donde desde el menú principal se accede a submenús específicos para diferentes áreas de trabajo. Por ejemplo, un menú principal para seleccionar entre compilación, pruebas y despliegue, y dentro de cada uno, submenús con opciones adicionales.

Gestionar variables de entorno y llamar a scripts externos con call permite controlar el flujo incluso en estructuras complejas, facilitando la escalabilidad del sistema. Esto resulta útil en proyectos grandes con módulos variados y diferentes dependencias.

El control del flujo mediante if, goto y call permite crear menús escalables y bien estructurados, integrándolos con otras herramientas si es necesario.

Personalización de colores en el menú batch

Para mejorar la apariencia visual, puedes modificar los colores de texto y fondo usando el comando color. La sintaxis es color XY, donde X representa el color de fondo y Y el del texto, con valores hexadecimales del 0 al F. Algunos ejemplos útiles:

  • 0: Negro
  • 7: Blanco
  • F: Blanco brillante
  • 8: Gris
  Cómo buscar y encontrar imágenes guardadas de WhatsApp

Por ejemplo, para un fondo negro con texto gris, usarías color 08. Esto ayuda a distinguir visualmente las diferentes partes del menú y hacer que la interfaz sea más atractiva.

Deja un comentario