Como crear un menú de selección multiple en Batch .bat .cmd

Hola amigos esta vez les traigo un ejemplo de como crear un menú de selección multiple en la consola de comandos de Windows, esto sirve para lanzar ilimitada cantidad de comandos o pequeñas aplicaciones creadas en Batch en archivos ejecutables con extensiones .bat y/o .cmd en el la consola de comados de Windows.


Este es un ejemplo de como podemos crear un menú con la carácteristica de realizar una acción a travéz
de la selección de un número en la consola de comandos CMD.exe en Windows, sencillo de usar, editar
y adaptar a tus necesidades, por ahora este menú nos hace cambios de colores del texto para entender el funcionamiento del código. Por ahora solamente este ejemplo lo que hace es cambiar el color del texto pero sirve para hacerte una idea de como se hace para llamar una función desde el menú.

@echo off
TITLE Bienvenid@ %USERNAME% a @lm_blog menu
MODE con:cols=80 lines=40

:inicio
SET var=0
cls
echo ------------------------------------------------------------------------------
echo  %DATE% ^| %TIME%
echo ------------------------------------------------------------------------------
echo  1    Opcion 1  
echo  2    Opcion 2  
echo  3    Opcion 3  
echo  4    Opcion 4  
echo  5    Opcion 5  
echo  6    Salir
echo ------------------------------------------------------------------------------
echo.

SET /p var= ^> Seleccione una opcion [1-6]:

if "%var%"=="0" goto inicio
if "%var%"=="1" goto op1
if "%var%"=="2" goto op2
if "%var%"=="3" goto op3
if "%var%"=="4" goto op4
if "%var%"=="5" goto op5
if "%var%"=="6" goto salir

::Mensaje de error, validación cuando se selecciona una opción fuera de rango
echo. El numero "%var%" no es una opcion valida, por favor intente de nuevo.
echo.
pause
echo.
goto:inicio

:op1
    echo.
    echo. Has elegido la opcion No. 1
    echo.
        ::Aquí van las líneas de comando de tu opción
        color 08
    echo.
    pause
    goto:inicio

:op2
    echo.
    echo. Has elegido la opcion No. 2
    echo.
        ::Aquí van las líneas de comando de tu opción
        color 09
    echo.
    pause
    goto:inicio

:op3
    echo.
    echo. Has elegido la opcion No. 3
    echo.
        ::Aquí van las líneas de comando de tu opción
        color 0A
    echo.
    pause
    goto:inicio
  
:op4
    echo.
    echo. Has elegido la opcion No. 4
    echo.
        ::Aquí van las líneas de comando de tu opción
        color 0B
    echo.
    pause
    goto:inicio

:op5
    echo.
    echo. Has elegido la opcion No. 5
    echo.
        ::Aquí van las líneas de comando de tu opción
        color 0C
    echo.
    pause
    goto:inicio

:salir
    @cls&exit


Los atributos de color están especificados con dos dígitos hex (el primero corresponde al segundo plano; el segundo al primer plano). Los dígitos pueden ser cualquiera de los siguientes valores:
 
0 = Negro       8 = Gris
1 = Azul        9 = Azul claro
2 = Verde       A = Verde claro
3 = Aguamarina  B = Aguamarina claro
4 = Rojo        C = Rojo claro
5 = Púrpura     D = Púrpura claro
6 = Amarillo    E = Amarillo claro
7 = Blanco      F = Blanco brillante

INSTRUCCIONES:
  1. Abrir tu editor de texto favorito se recomienda Notepad.exe, Notepad++ entre otros.
  2. Copiar y pegar el código anterior.
  3. Editar y adaptar a tus necesidades.
  4. Guardar el archivo con la extensión .bat ó .cmd
 Sí necesitas más comando puedes consultar la lista que posee este ENLACE

Gracias por tu tiempo y lectura te invito a dejar un comentario en esta publicación y compartir mis contenidos en tus redes sociales o bien puedes seguirme a travéz de mi Twitter @lm_blog y nuestra página en Facebook Libertad Máxima Weblog (LMW) También puedes suscribirte a nuestra Noticias RSS por correo electrónico para no perderte ninguna noticia de este blog. Hasta pronto!

17 comentarios:

  1. Muchas gracias... Se que con el goto se pueden hacer mas cosas, pero recién estoy aprendiendo...

    ResponderEliminar
    Respuestas
    1. Seguro que si mi estimado, hay muchas otras acciones que se pueden lograr, simpre hay algo nuevo que aprender :) que bien que ha sido de probecho este post!!

      Saludos!

      Eliminar
  2. Buen post me a ayudado...
    Estoy aprendiendo

    ResponderEliminar
  3. Hola a mi me gustaria saber si podeis ayudarme con un ".bat"

    cls @Echo OFF
    title Folder Private
    if EXIST "HTG Locker" goto UNLOCK
    if NOT EXIST Private goto MDLOCKER
    :CONFIRM
    echo Are you sure you want to lock the folder(Y/N)
    set/p "cho=>"
    if %cho%==Y goto LOCK
    if %cho%==y goto LOCK
    if %cho%==n goto END
    if %cho%==N goto END
    echo Invalid choice.
    goto CONFIRM
    :LOCK
    ren Private "HTG Locker"
    attrib +h +s "HTG Locker"
    echo Folder locked
    goto End
    :UNLOCK
    echo Enter password to unlock folder
    set/p "pass=>"
    if NOT %pass%== ""CLAVE"" goto FAIL
    attrib -h -s "HTG Locker"
    ren "HTG Locker" Private
    echo Folder Unlocked successfully
    goto End
    :FAIL
    echo Invalid password
    goto end
    :MDLOCKER
    md Private
    echo Private created successfully
    goto End
    :End

    Con ese ocultas la carpeta que desees pero al ejecutarlo la clave es visible, sabriais de alguna manera para ponerla oculta??

    ResponderEliminar
    Respuestas
    1. Hola Ivan, ya e visto cual es el origen de este código pero de tal cual lo copiaste aquí no funciona del todo bien... :) necesita correcciones!

      Una manera de asegurarte de que no puedan ver tu contraseña dentro de este código dentro de un archivo .bat .cmd los cuales son fáciles de modificar se me ocurre rápidamente que busques (Google) y descargues "Quick Batch File Compiler" dentro de esta aplicación puedes compilar en un archivo .exe el cual no se puede ver el código una vez compilado.-

      Saludos!!

      Eliminar
  4. Buenas Carlos Soza.

    Muy buen aporte.

    Tienes alguna idea de como hacer para que luego de esto:

    set /p OPP=Elija una opcion (1 al 3):
    cls
    If "%OPP%"=="1" goto OP1
    If "%OPP%"=="2" goto OP2
    If "%OPP%"=="3" goto OP3
    If "%OPP%"=="4" goto OP4
    If "%OPP%"=="5" goto EXIT
    If "%OPP%"==""

    El valor de la variable [INTRODUCIDO POR EL USUARIO] se borre sin tener que cerrar la consola (CMD) una vez terminado el proceso. Sucede que despues que el usuario hace todo el proceso de lo que esta dentro de una de las opciones, al volver al INICIO, se puede presionar ENTER sin introducir ningun valor y simplemente se asume el valor que se introdujo la primera vez en ese paso.

    ResponderEliminar
    Respuestas
    1. Buenas Soluciones Prácticas!! y a quién lea :)

      Efectivamente, siempre se conserva el último valor introducido hasta cerrar completamente la consola CMD...

      Se me cocurre que al final de cada Subproceso re-asignes un nuevo valor de la variable OPP

      Es decir:

      @ECHO OFF
      :Menu
      cls
      echo ------------------------------------------------------------------------------
      echo 1 OP1
      echo 2 OP2
      echo 3 OP3
      echo S Cancelar
      echo ------------------------------------------------------------------------------
      echo %USERNAME%
      SET /p OPP=Elija un numero:

      If "%OPP%"=="1" goto OP1
      If "%OPP%"=="2" goto OP2
      If "%OPP%"=="3" goto OP3
      If "%OPP%"=="0" goto Menu
      If "%OPP%"=="S" goto Exit
      If "%OPP%"=="s" goto Exit

      echo.
      echo ERROR!
      echo Has introducido "%OPP%" comando desconocido . . .
      echo.
      SET OPP=0
      pause
      CLS
      goto:Menu

      :OP1
      echo.
      echo Esta es la opcion 1
      echo.

      SET OPP=0
      pause
      CLS
      goto:Menu

      :OP2
      echo.
      echo Esta es la opcion 2
      echo.

      SET OPP=0
      pause
      CLS
      goto:Menu

      :OP3
      echo.
      echo Esta es la opcion 3
      echo.

      SET OPP=0
      pause
      CLS
      goto:Menu

      Espero te sea útil a ti y a otros lectores, hasta pronto!

      Eliminar
  5. hola buenos Dias, tardes, o Noches
    sin querer molestar quiciera perdirles algo urgentemente necesito un el codigo para un menu con 8 paginas, con 8 items por cada pagina, y con retorno a menu prinsipal... si alguien pudiera ayudarme...

    de ante mano muchas gracias...

    ResponderEliminar
  6. quisiera saber si puedo selecionar multiples opciones para que se ejecuten una tras otra

    ResponderEliminar
  7. Hola consulta...
    En el codigo hay 1 parte cerca del inicio que menciona la utilizacion de fecha y hora, pero en la imagen no se muestra, o me equivoco o interprete de gorma incorrecta...
    De todas formas excelente aporta, desde ya muchas gracias.

    ResponderEliminar
    Respuestas
    1. Hola Pablo,

      Hace un tiempo se actualizó el código pero no la imágen... :)

      Eliminar
  8. Hola soy nuevo en esto, mi duda es que quisiera poder ocultar las opciones para que no se vean, solo que me de l as ociones del 1-6 pero donde dice opciones dejarlas ocultas, no se si me explique bien, agradeceria una respuesta, gracias.

    ResponderEliminar
    Respuestas
    1. Buenas.

      Solo tienes que quitar la instrucción [ECHO] lo que significa imprimir o mostrar en pantalla.

      Saludos.

      Cualquier duda deja tus lineas de codigo y te ayudamos a corregir los errores.

      Eliminar