Este documento presenta 15 ejercicios para crear archivos batch que realicen diferentes tareas como generar listados de archivos, ordenar ficheros, buscar cadenas de texto, copiar archivos, eliminar archivos, y más. Cada ejercicio describe la funcionalidad requerida y en algunos casos proporciona sugerencias sobre cómo implementarla mediante órdenes batch.
Este documento presenta 15 ejercicios para crear archivos batch que realicen diferentes tareas como generar listados de archivos, ordenar ficheros, buscar cadenas de texto, copiar archivos, eliminar archivos, y más. Cada ejercicio describe la funcionalidad requerida y en algunos casos proporciona sugerencias sobre cómo implementarla mediante órdenes batch.
Este documento presenta 15 ejercicios para crear archivos batch que realicen diferentes tareas como generar listados de archivos, ordenar ficheros, buscar cadenas de texto, copiar archivos, eliminar archivos, y más. Cada ejercicio describe la funcionalidad requerida y en algunos casos proporciona sugerencias sobre cómo implementarla mediante órdenes batch.
llamadoARBOL.DAT, el cual contenga de forma gráfica la estructura de carpetas de la unidad C.@echo offtree /A c:/ > arbol.datexit /bEjercicio 2. Crea un fichero por lotes SIGNAT.BAT que muestre en pantalla un “mensaje de presentación personalizada".@echo offcall:nombreecho.&pause&goto:eof:nombreecho "Indique nombre"set /p nombre=echo Hola %nombre%goto:EOFEjercicio 3. Crea un fichero por lotes TODOS.BAT, en el se listen todos los archivos deextensión .bmp de la unidad C, ordenados por nombre.@echo offcd C:\DIR *.bmp /s /onEjercicio 4. Crea un fichero por lotes llamado COPIAME.BAT, de manera que tengamos quesuministrarle un parámetro que será el nombre de un archivo. Se debe comprobar si el archivoexiste, en caso de que exista lo debe copiar en la carpeta [directorio de trabajo]\papelera (queya debe existir previamente) y salir. En caso que no exista debe salir un mensaje indicando “El archivo no existe” y quedar pausado. @echo offIF EXIST %1 (COPY %1 papelera/%1)IF NOT EXIST %1 (ECHO "El archivo no existe")pause
Ejercicio 5. Crear un fichero por lotes ORDENA.BAT que muestre en
pantalla el contenidode un fichero de texto pasado como parámetro ordenado, con las siguientes especificaciones:a. En caso de que no exista dicho fichero, debe mostrar un mensaje de error.b. Si se ejecuta la macro sin ningún parámetro, mostrará en pantalla un mensaje deayuda en el que se detallará cómo funciona ORDENA.BAT@echo off
GOTO PARAMETROFALTAIF NOT EXIST %parametro% GOTO NOEXISTEIF EXIST %parametro% GOTO EXISTE:NOEXISTEECHO "El archivo no existe"pauseGOTO FINAL:PARAMETROFALTAecho "Debe introducir un nombre de archivo a la vez que inicia el archivo por lotes"pauseGOTO FINAL:EXISTEFOR /F %%A IN (%parametro%) DO @ECHO Linea: %%ApauseGOTO FINAL:FINALexit /bEjercicio 6. Crea un fichero por lotes DIRESP.BAT que liste de forma paginada todos losarchivos .BAT, .EXE, .COM – realizando una pausa entre listado y listado? del directorioactual. Si se introduce un parámetro, hará exactamente lo mismo pero sólo listará los archivoscon nombre igual al parámetro introducido.@echo offset parametro=%1IF "%parametro%"=="" GOTO MOSTRARTODOdir /s "%parametro%".BATpausedir /s "%parametro%".EXEpausedir /s "%parametro%".COMpauseexit:MOSTRARTODOdir /s *.BATpausedir /s *.EXEpausedir /s *.COMpauseexitEjercicio 7. Realiza un fichero por lotes llamado DONDE.BAT, que busque todos losarchivos que contengan la extensión .exe en el directorio C:\Windows y el resultado de esabúsqueda se almacene en un archivo llamado SOLUCION.TXT. Sugerencia: utilizar la ordenfor@echo offFOR %%f IN (C:\Windows\*.*) DO FIND "*.exe" %%f >> solucion.txt
Ejercicio 8. Realizar un archivo por lotes llamado COPIAJPG.BAT que al
ejecutarse copietodos los archivos .jpg del disco en el directorio [directorio de trabajo]\losjpg. Sugerencia:utilizar la orden for.@echo offMkdir %userprofile%\Losjpg\for /R C:\ %%f in ("*.jpg") do copy "%%f" %userprofile%\Losjpg\Ejercicio 9. Crear un fichero por lotes PRACT4.BAT que: a. Modifique el PROMPT a ” [nombre alumno][trayecto actual]>”
b. Muestre vuestra “Bienvenida”, invocando el fichero SIGNAT.BAT.
c. Muestre en pantalla (CON) un mensaje que indique la última vez que se ejecutó dicha macro. El mensaje tendrá que tener el siguiente formato “La última vez que se ejecutó esta macro fue: [fecha de última vez ej ecutada]”. Lógicamente, cada vez que se ejecute hay que actualizar la fecha.@echo offprompt [%username%][$P]$Gecho "%~t0"SIGNAL.BAT nombre %~1Ejercicio 10. Crear un fichero por lotes BUSCA.BAT el cual busque en la unidad activa undeterminado archivo y muestre el directorio en el que se encuentra. La especificación es lasiguiente:a. Si no se introduce ningún parámetro, muestra la ayuda de BUSCA.BAT ( indicael formato de llamada)b. En caso de que se introduzca un parámetro, procedemos a buscarlo.Sugerencia: crear un archivo DIREC.DAT en el que se liste el contenido del TODOS losarchivos y directorios de la unidad activa.@echo offset parametro=%1IF "%parametro%"=="" GOTO PARAMETROFALTAcd C:\DIR %parametro% /s /onpauseGOTO FINAL:PARAMETROFALTAecho "Cuando ejecute el archivo por lotes debera indicar el fichero a buscar, ejemplo: busca.batejemplo.txt"pauseGOTO FINAL:FINALexit /b
Adrián Serrano Benavente 2º ASIREjercicio 11.- Crea un fichero por lotes
que mediante un menú y utilizando funciones permitarealizar las siguientes accionesa) Mostrar el fichero CRONICA.TXT con pausa en cada pantalla.b) Mostrar el fichero AVISO.TXT con pausa en cada pantalla.c) Ordenar el fichero NUMEROS.TXT alfabéticamente.d) Ordenar el fichero LISTIN.TXT alfabéticamente a partir de la columna 30.e) Ordenar el fichero AMIGOS.TXT inversamente.f) Buscar la cadena "IGNACIO" en el fichero PERSONAL.TXTNota: Debes crear los ficheros previamente de manera manual@echo off:INICIOclsecho "Menu seleccion"echo "1) Fichero Cronica.txt"echo "2) Fichero Aviso.txt"echo "3) Fichero Numeros.txt"echo "4) Fichero Listin.txt"echo "5) Fichero Amigos.txtecho "6) Fichero Personal.txt"echo "7) SALIR"echo "Marque el numero de opcion"set /p opcion=if %opcion%==1 GOTO CRONICAif %opcion%==2 GOTO AVISOif %opcion%==3 GOTO NUMEROSif %opcion%==4 GOTO LISTINif %opcion%==5 GOTO AMIGOSif %opcion%==6 GOTO PERSONALif %opcion%==7 GOTO SALIRGOTO ERROR:CRONICATYPE ficheros\Cronica.txt | morepauseGOTO INICIO:AVISOTYPE ficheros\aviso.txt | morepauseGOTO INICIO:NUMEROSTYPE ficheros\numeros.txt | sortpauseGOTO INICIO:LISTINTYPE ficheros\listin.txt | sort /+30pauseGOTO INICIO:AMIGOSTYPE ficheros\amigos.txt | sort /RpauseGOTO INICIO:PERSONALfind "ignacio" ficheros\personal.txt
Adrián Serrano Benavente 2º ASIREjercicio 12.- Crea un fichero por lotes
que mediante un menú y utilizando funciones permitarealizar las siguientes accionesa) Mostrar el fichero INFORME.TXT con pausa en cada pantalla.b) Imprimir el fichero INFORME.TXT en la impresora. (simular la impresora obien con una impresora virtual o más fácil, con un fichero)c) Enviar el texto introducido por el teclado en la impresora.d) Añadir la etiqueta y el número de serie de la unidad actual (orden Vol) alfichero VARIOS.TXTe) Añadir el directorio actual al fichero VARIOS.TXT@echo off:INICIOclsecho "Menu seleccion"echo "1) Mostrar Fichero"echo "2) Imprimir Fichero"echo "3) Imprimir Texto"echo "4) Incluir Datos del Volumen"echo "5) Incluir Ruta Actual al Fichero"echo "6) SALIR"echo "Marque el numero de opcion"set /p opcion=if %opcion%==1 GOTO MOSTRARif %opcion%==2 GOTO IMPRIMIRif %opcion%==3 GOTO TEXTOif %opcion%==4 GOTO VOLUMENif %opcion%==5 GOTO DIRECTORIOif %opcion%==6 GOTO SALIRGOTO ERROR:MOSTRARType informe.txt | morepauseGOTO INICIO:IMPRIMIRprint informe.txtpauseGOTO INICIO:TEXTOecho "Inserte texto:"set /p testi=echo %testi% > impresion.txtprint impresion.txtdel impresion.txtpauseGOTO INICIO:VOLUMENVol >> varios.txtpauseGOTO INICIO:DIRECTORIOcd >> varios.txtpauseGOTO INICIO
INICIO:SALIRexit /b Adrián Serrano Benavente 2º ASIREjercicio 13.-Crear un fichero llamado AMIGOS1.TXT que contenga los siguientes datos.Ismael Caballero Valladolid 7986821María López Córdoba 4568756Sonia Aguilar Valladolid 1239083Juan Ramírez Córdoba 7643434Laura Díaz Córdoba 4221336Enrique Ortiz Burgos 3423444Mónica Carrasco Madrid 1234123Cristina Reyes Madrid 3344334Conocer todos los amigos de Córdoba.Conocer el número de teléfono de Cristina.Realiza un fichero batch que mediante un menú permita realizar las siguientes opcionesa) Ordenar alfabéticamente el fichero basándonos en la ciudad.b)Ordenar alfabéticamente el fichero basándonos en el apellido.La salida de la orden debe guardarse en otro fichero y posteriormente visualizarlo en lapantalla con las correspondientes pausas.@echo off:INICIOclsecho "Menu seleccion"echo "1) Conocer todos los amigos de Córdoba"echo "2) Conocer el número de teléfono de Cristina."echo "3) Ordenar alfabéticamente el fichero basándonos en la ciudad"echo "4) Ordenar alfabéticamente el fichero basándonos en el apellido"echo "5) SALIR"echo "Marque el numero de opcion"set /p opcion=if %opcion%==1 GOTO CORDOBAif %opcion%==2 GOTO CRISTINAif %opcion%==3 GOTO CIUDADif %opcion%==4 GOTO APELLIDOif %opcion%==5 GOTO SALIRGOTO ERROR:CORDOBAfind "Cordoba" amigos1.txt | sort /+9 > amigos2.txttype amigos2.txt | morepauseGOTO INICIO:CRISTINAfind "Cristina" amigos1.txt > amigos3.txttype amigos3.txt | morepauseGOTO INICIO:CIUDADtype amigos1.txt | sort /+19 > amigos4.txttype amigos4.txt | morepauseGOTO INICIO:APELLIDOtype amigos1.txt | sort /+9 > amigos5.txttype amigos5.txt | more
INICIO:SALIRexit /bEjercicio 14.- Escriba un fichero de procesamiento por lotes para borrar el ficherointroducido como parámetro. El programa debe comprobar previamente si se ha introducidoalgún parámetro y si el fichero existe.@echo offset parametro=%1IF "%parametro%"=="" GOTO PARAMETROFALTAIF NOT EXIST %parametro% GOTO NOEXISTEIF EXIST %parametro% GOTO EXISTE:NOEXISTEECHO "El archivo no existe"pauseGOTO FINAL:PARAMETROFALTAecho "Debe introducir un nombre de archivo a la vez que inicia el archivo por lotes"pauseGOTO FINAL:EXISTEdel %parametro%pauseGOTO FINAL:FINALexit /bEjercicio 15.- Crea un archivo de procesamiento por lotes que se denomine listado.bat el cualrealice las siguientes operaciones:a. Limpie la pantalla.b. Muestre por pantalla un listado del directorio Windows del disco duro en forma decolumnas y que se pare cuando se llene la pantalla.@echo off:INICIOclsecho "Menu seleccion"echo "1) Limpiar pantalla"echo "2) Listar carpeta windows por columnas."echo "3) SALIR"echo "Marque el numero de opcion"set /p opcion=if %opcion%==1 GOTO LIMPIARif %opcion%==2 GOTO LISTARif %opcion%==3 GOTO SALIRGOTO ERROR:LIMPIARclspause
/PpauseGOTO INICIO:ERRORecho "Opcion Incorrecta"pauseGOTO INICIO:SALIRexit /bEjercicio 16.- Crea un archivo de procesamiento por lotes que se denomine info.bat el cualrealice las siguientes operaciones:a. Limpie la pantalla.b. Muestre la hora del sistema.c. Muestre la fecha del sistema.d. Muestre la etiqueta del disco de prácticas.e. Antes de realizar una operación se mostrará un mensaje por pantalla que indicarálo que se va a realizar.f. Debe realizar una pausa cada vez que muestre un tipo de información.@echo off:INICIOclsecho "Menu seleccion"echo "1) Limpiar pantalla"echo "2) Muestre la hora del sistema."echo "3) Muestre la fecha del sistema."echo "4) Muestre la etiqueta del disco de prácticas."echo "5) SALIR"echo "Marque el numero de opcion"set /p opcion=if %opcion%==1 GOTO LIMPIARif %opcion%==2 GOTO HORAif %opcion%==3 GOTO FECHAif %opcion%==4 GOTO VOLUMENif %opcion%==5 GOTO SALIRGOTO ERROR:LIMPIARclspauseGOTO INICIO:HORAtime /TpauseGOTO INICIO:FECHAdate /TpauseGOTO INICIO:VOLUMENVol >> varios.txt
pauseGOTO INICIO:SALIRexit /bEjercicio 17.- Crea un archivo
de procesamiento por lotes que se denomine info2.bat el cualrealice las siguientes operaciones:a. Limpie la pantalla.b. Cree un directorio llamado prueba en C:\c. Cree un listado de C:\ y almacene la salida en un archivo llamado list.txt en C:\.d. Copie el archivo list.txt en el directorio prueba.e. Muestre el contenido del archivo lista.txt por pantalla de forma ordenada.f. Antes de realizar una operación se mostrará un mensaje por pantalla que indicarálo que se va a realizar.g. Debe realizar una pausa después de cada operación@echo off:INICIOclsecho "Menu seleccion"echo "1) Limpiar pantalla"echo "2) Crear carpeta prueba en C:\."echo "3) Listado de c: guardado en c:\list.txt."echo "4) Copiar el archivo list.txt en el directorio prueba."echo "5) SALIR"echo "Marque el numero de opcion"set /p opcion=if %opcion%==1 GOTO LIMPIARif %opcion%==2 GOTO PRUEBAif %opcion%==3 GOTO LISTADOif %opcion%==4 GOTO COPIARif %opcion%==5 GOTO SALIRGOTO ERROR:LIMPIARclspauseGOTO INICIO:PRUEBAecho "Creamos la carpeta c:\prueba"mkdir c:\pruebapauseGOTO INICIO:LISTADOecho "Se guardara el resultado de lista c: en c:\list.txt"dir c: > c:\list.txtpauseGOTO INICIO:COPIARecho "Se copiara list.txt a c:\pruebacopy c:\list.txt c:\prueba\list.txtpauseGOTO INICIO:SALIR Adrián Serrano Benavente 2º ASIRexit /bEjercicio 18.-. Realizar un fichero BAT llamado PRACTICA.BAT que haga lo siguiente:- Desactivar la visualización de órdenes.- Borrar pantalla- Indicar un mensaje en pantalla que diga “VISUALIZACIÓN DE DISCO C” - Hacer una pausa- Ver el directorio del disco C por columnas.- Hacer una pausa- Borrar pantalla- Indicar un mensaje en pantalla que diga “VISUALIZACIÓN DE DISCO D” - Hacer una pausa- Ver el directorio del disco D por páginas.- Hacer una pausa- Borrar pantalla- Mensaje que indique “FIN DEL ARCHIVO BAT”. @echo offclsecho "Disco C"pausedir c:\pauseclsecho "Disco D"pausedir d:\ | morepauseclsecho "FIN DEL BAT"exit /b
pauseGOTO INICIO:SALIRexit /bEjercicio 17.- Crea un archivo
de procesamiento por lotes que se denomine info2.bat el cualrealice las siguientes operaciones:a. Limpie la pantalla.b. Cree un directorio llamado prueba en C:\c. Cree un listado de C:\ y almacene la salida en un archivo llamado list.txt en C:\.d. Copie el archivo list.txt en el directorio prueba.e. Muestre el contenido del archivo lista.txt por pantalla de forma ordenada.f. Antes de realizar una operación se mostrará un mensaje por pantalla que indicarálo que se va a realizar.g. Debe realizar una pausa después de cada operación@echo off:INICIOclsecho "Menu seleccion"echo "1) Limpiar pantalla"echo "2) Crear carpeta prueba en C:\."echo "3) Listado de c: guardado en c:\list.txt."echo "4) Copiar el archivo list.txt en el directorio prueba."echo "5) SALIR"echo "Marque el numero de opcion"set /p opcion=if %opcion%==1 GOTO LIMPIARif %opcion%==2 GOTO PRUEBAif %opcion%==3 GOTO LISTADOif %opcion%==4 GOTO COPIARif %opcion%==5 GOTO SALIRGOTO ERROR:LIMPIARclspauseGOTO INICIO:PRUEBAecho "Creamos la carpeta c:\prueba"mkdir c:\pruebapauseGOTO INICIO:LISTADOecho "Se guardara el resultado de lista c: en c:\list.txt"dir c: > c:\list.txtpauseGOTO INICIO:COPIARecho "Se copiara list.txt a c:\pruebacopy c:\list.txt c:\prueba\list.txtpauseGOTO INICIO:SALIR
Adrián Serrano Benavente 2º ASIRexit /bEjercicio 18.-. Realizar un fichero
BAT llamado PRACTICA.BAT que haga lo siguiente:- Desactivar la visualización de órdenes.- Borrar pantalla- Indicar un mensaje en pantalla que diga “VISUALIZACIÓN DE DISCO C” - Hacer una pausa- Ver el directorio del disco C por columnas.- Hacer una pausa- Borrar pantalla- Indicar un mensaje en pantalla que diga “VISUALIZACIÓN DE DISCO D” - Hacer una pausa- Ver el directorio del disco D por páginas.- Hacer una pausa- Borrar pantalla- Mensaje que indique “FIN DEL ARCHIVO BAT”. @echo offclsecho "Disco C"pausedir c:\pauseclsecho "Disco D"pausedir d:\ | morepauseclsecho "FIN DEL BAT"exit /b
Ejercicio 20.- Crear una calculadora con opciones, es decir, el formato de
llamada a ésta serácalcula 3 + 4. Dando por pantalla Resultado: 7. Los parámetros del cálculo así como los de laoperación se pasan como parámetros. Debe controlar si se introduce una operación indebida.Solo serán válidos +, - , *, /@echo off:INICIOclsecho "Introduzca valor 1"set /P val1=echo "Introduzca valor 2"set /P val2=echo "Operacion"echo "+) SUMA"echo "-) RESTA"echo "*) MULTIPLICACION"echo "/) DIVISION"echo "5) SALIR"set /p opcion=if ("%opcion%"=="+" OR %opcion%==1) GOTO SUMAif ("%opcion%"=="-" OR %opcion%==2) GOTO RESTAif ("%opcion%"=="*" OR %opcion%==3) GOTO MULTIPLICACIONif ("%opcion%"=="/" OR %opcion%==4) GOTO DIVISIONif %opcion%==5 GOTO SALIR:SUMAset /A res=%val1% + %val2%GOTO RESUL:RESTAset /A res=%val1% - %val2%GOTO RESUL:MULTIPLICACIONset /A res=%val1% * %val2%GOTO RESUL:DIVISIONset /A res=%val1% / %val2%GOTO RESUL:RESULecho "El resultado es: %res%"pauseGOTO INICIO:SALIRexit /b
Ejercicio 21.- Inventar una papelera de reciclaje haciendo si es posible un
directorio oculto.Nota: usar el comando attrib. Para ello al ejecutar el programa debemos indicar y pasar comoparámetro el archivo que queremos enviar a esa papelera. Si el programa se ejecuta sincomandos debe aparecer un menú donde se nos de las siguientes opciones:a) Ver el contenido de la papelerab) Vaciar completamente la papelerac) Restaurar a un directorio seguro (siempre el mismo o por ejemplo el actual) unarchivo de la papelerad) SalirNOTA 1: en todos los ejercicios el ECHO está configurado como OFF.NOTA 2: cada ejercicio/s se guardará/n en un fichero independiente@echo off