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ú.
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
1 = Azul
2 = Verde
3 = Aguamarina
4 = Rojo
5 = Púrpura
6 = Amarillo
7 = Blanco
8 = Gris
9 = Azul claro
A = Verde claro
B = Aguamarina claro
C = Rojo claro
D = Púrpura claro
E = Amarillo claro
F = Blanco brillanteINSTRUCCIONES:
- Abrir tu editor de texto favorito se recomienda Notepad.exe, Notepad++ entre otros.
- Copiar y pegar el código anterior.
- Editar y adaptar a tus necesidades.
- Guardar el archivo con la extensión .bat ó .cmd
Muchas gracias... Se que con el goto se pueden hacer mas cosas, pero recién estoy aprendiendo...
ResponderEliminarSeguro 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!!
EliminarSaludos!
EXCELENTE POST ME SSIRVIO MUCHO :D
ResponderEliminargenia muchas gracias
ResponderEliminargenia muchas gracias
ResponderEliminarGracias
ResponderEliminarBuen post me a ayudado...
ResponderEliminarEstoy aprendiendo
Hola a mi me gustaria saber si podeis ayudarme con un ".bat"
ResponderEliminarcls @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??
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!
EliminarUna 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!!
Buenas Carlos Soza.
ResponderEliminarMuy 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.
Buenas Soluciones Prácticas!! y a quién lea :)
EliminarEfectivamente, 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!
hola buenos Dias, tardes, o Noches
ResponderEliminarsin 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...
quisiera saber si puedo selecionar multiples opciones para que se ejecuten una tras otra
ResponderEliminarHola consulta...
ResponderEliminarEn 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.
Hola Pablo,
EliminarHace un tiempo se actualizó el código pero no la imágen... :)
ayudeme con el ejercicio q puse
EliminarHola 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.
ResponderEliminarBuenas.
EliminarSolo 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.
Hola, que buenos aportes.
ResponderEliminarQuisiera realizar la consulta si puedo realizar un bat para realizar la copia de archivos desde una pc a varias terminales, y que copie solo archivos que se actualicen.
Hola Eder, un gusto saludarte por ahora tengo solamente referencia a mano en inglés aqui: https://ss64.com/nt/xcopy.html
Eliminartodo lo que necesitas en saber todo sobre el comando XCOPY
mi ejemplo de bat sería!
ECHO Respaldando Arqueos De Caja ...
XCOPY "\\192.168.1.xxx\Arqueos de caja\" "D:\Mis documentos\Arqueos\" /A /E /K /D /Y /I /C
PING LocalHost -n 3 -w 1000 >Nul rem espera 3 seg.
@CLS&EXIT
Recuerda tener los directorios compartidos con permisos correspondientes en tu red...
Con esto me funciona muy bien a mi saludos!
Carlos, muchas gracias por tu respuesta.
EliminarTengo una inquietud, con xcopy reconocerá los archivos que se actualicen y solo copiara solo esos?, o copiara y chancara todos los archivos que tenga la carpeta. Obviamente lo que quiero es agilizar el copiado en red
Este comentario ha sido eliminado por el autor.
ResponderEliminarDesarrolle un script para el sistema operativo windows que automatice lo siguiente:
ResponderEliminarEl script debe visualizar un menu con las siguientes opciones:
1. crear estructura de directorio
2. visualizar estructura de directorios
3. Buscar en la estructura de directorios
4. Operaciones de Eliminacion
5. salir del menu de opciones
si el usuario ingresa a la opcion 1 debe crear la siguiente estructura de directorios y archivos:
d:\parcial2
p1
p11
p12
p121
p122
p1221
p1222
p1223
p1224
parcial.txt
p13
El archivo parcial.txt debe tener de contenido una breve explicacion de que son los archivos .bat y cual es la utilidad en windows.
La opcion 2 debe visualizar toda la estructura de directorio completa.
la opcion 3 de mostrar el siguiente submenu:
3.1 listar todas las carpetas y subcarpetas de la carpeta principal "parcial2"
3.2 listar de forma ordenada por nombre de archivo/directorio la carpeta principal "parcial2"
3.3 listar de forma ordenada descendente por fecha de creacion archivo/directorio la carpeta principal "parcial2"
3.4 Salir del submenu y volver al menu principal.
la opcion 4 debe permitir eliminar un directorio que usted selecione.
la opcion 5 debe terminar el programa.
Debe tener en cuenta que no se puede ingresar una opcion que no este en las opciones validas del menu.
debe entregar el codigo del script y pantallaso de la ejecucion.
Exitos.
Toca leer y prácticar :)
Eliminar1.- usar comando mkdir C:\mkdir parcial2\p1\p12\121\122 asi se crearan las carpetas que designes
Eliminar2.- usar comando cd C:\parcial2 para ingresar el directorio y usar el comando dir para listar los directorios y sub directorios
3.- No sé que necesitas buscar?
4.- para eliminar usar el comando rmdir /s C:\parcial2
5.- usar el comando exit para cerrar la consola.
ayudenme por favor a resolver eso
ResponderEliminarya te estoy ayudando yo :P
ResponderEliminarbuenas tardes
ResponderEliminarpor favor me puedes ayudar como puedo hacer para que el programa de batch al abrir y darle la opción numero 1 me deje ingresar automáticamente al programa word
gracias por tu colaboracion
EliminarHola justo despues de la Opción 1 agrega el siguiente comando:
Eliminarwinword
hola me gustaria saber por que cuando quiero poner una opcion de "start https osea la pagina" no me inicia la pagina, al principio funciono pero despues de agregar la opcion dos no me dejo necesito ayuda por favor
ResponderEliminarHola!
ResponderEliminarAntes del menú hice que pidiera una contraseña, mi script es este:
@echo off
title Menu
color 0f
:security
set/p codigo= INGRESE EL CÓDIGO DE ACCESO
if %codigo%==124152125 (goto access_allowed) else goto access_dennied
:access_dennied
cls
color 0c
echo ACCESO DENEGADO
echo INTENTELO DE NUEVO
pause
goto security
:access_allowed
cls
color 0a
echo ACCESO PERMITIDO
pause
goto menu
¿Cómo le pongo límite de intentos? (si se requiere un programa específico (como Quick Batch File Compiler o similar) por favor diganme)
Declara una variable en 0 al inicio , luego en acces_dennied incrementa la variable en +1 y con un if else verifica si la variable es más grande que el número de intentos, de ser así lo envías a otro goto que de mensaje de error o cierre el script
EliminarGracias Nicolás, no sé cómo no se me había ocurrido. Fuiste de gran ayuda.
EliminarSi quiero ejecutar programas de c++ como los agrego
ResponderEliminarMuchas gracias, lo utilice para iniciar o detener la cola de impresion
ResponderEliminarBuenas, necesitaría ayuda con un menú.
ResponderEliminarSi pulsas 1, irá a op1.
Si pulsas 5, irá a op5. Pero al volver a pulsar 1 en la primera parte del menu, irá a info1, en vez de a op1.
Hay alguna forma?
Muchas gracias
Miraaaa!! años que no me pongo a hacer cosas con los .bat. cuando eramos chicos, con mi hermano haciamos archivos con esto y el comando choice, que era basicamentte lo mismo. terminamos haciendo un archivazo para jugar a los banqueros jaja. y mas adelante hice una agenda para archivar telefonos y direcciones todo en D.O.S. Una locura era eso, dias y dias escribiendo comandos. muy divertido. un tiempo lo usaba para escribir comandos simples para no tener que escribirlos, como los scaneos de discos, limpieza y mantenimiento, clonar discos y eso. perdi todo cuando se me quemo el disco. ahora me da paja escribir todo eso de nuevo. pero al ver esto ya me dieron ganas de empezar otra vez jaja. saludos, excelente post. a medida que vaya escribiendo todo lo voy a estar compartiendo. suerteee
ResponderEliminarMuchas Gracias, intentaré adaptarlo a mis necesidades pero el trabajo ya está casi hecho!
ResponderEliminarbuenas tardes, gracias por el aporte lo adapte a las necesidades y funciona perfectamente, pero tengo una duda. Como puedo poner la ruta para que entre a una carpeta y ejecute el .exe
ResponderEliminarSi no mal recuerdo, podes usar el comando goto "ruta" y el comando start "programa.exe"
EliminarLas dos opciones son válidas, igualmente te recomiendo que abras la consola de comandos y escribas "goto /?" para saber con detalle cómo funciona cada comando, la explicación está en el idioma que esté configurado tu pc.
Hola tu menu me sirvió al 100% y lo modifique un poco para usarlo
ResponderEliminarHola buenos días no se si en este blog puedo dejar links para que visiten, como por ejemplo de mi blog y de mi canal de Youtube. Que serian estos,
ResponderEliminarlink de mi blog:
https://caquitosp.blogspot.com/2022/12/chocobananos-trabajos-de-computadoras-y.html
link de mi Canal
https://www.youtube.com/@ricardo_huezo./videos