Ejercicios Proceso por Lotes
1. Realiza un archivo por lotes (.bat) que realice un listado del
directorio recibido como primer parámetro (dir), lo guarde en un
fichero llamado según segundo parámetro y busque en él la palabra
recibida como tercer parámetro.
Ejemplo Listado.bat c:\windows Temp.txt vol
El fichero según el segundo parámetro debe ser eliminado al terminar
correctamente la macro.
@echo off
echo esto es un archivo por lotes
dir %1 > %2.txt
find "%3" %2.txt
del %2.txt
2. Realiza una macro que busca el fichero recibido como primer
argumento en todo el subárbol del directorio dado como segundo
argumento e indica si existe o no.
Ejemplo Busca.bat leo.txt c:\windows
Únicamente debe especificar “Si existe” o “no existe”.
@echo off
echo esto es un archivo por lotes
dir /s %2 > texto.txt
find "%1.txt" texto.txt
if %errorlevel% equ 0 goto OKEY
echo no se ha podido encontrar el archivo
goto fin
:OKEY
echo se ha encontrado con exito
:fin
3. Realiza una macro que lea dos cadenas, las compare e indique si son
distintas o no. La macro debe indicar errores si alguna de las dos
cadenas está vacía y debe eliminar las variables una vez terminada.
@echo off
echo esto es un archivo por lotes
echo escribe la primera cadena
set /p cadena1=
if “cadena1” equ “” goto error
echo escribe la segunda cadena
Set /p cadena2=
if “cadena2” equ “” goto error
if %cadena1% equ %cadena2% goto OKEY
echo No son iguales
goto fin
:error
echo escriba una cadena
:OKEY
echo son iguales
:fin
4. Realiza una macro que lea dos números, los compara y devuelve si
son iguales o no. La macro debe indicar errores si alguna de los dos
números está vacío y debe eliminar las variables una vez terminada.
@echo off
echo esto es un archivo por lotes
echo escribe un numero
set /p cadena1=
echo escribe un numero
Set /p cadena2=
if %cadena1% equ %cadena2% goto OKEY
echo No son iguales
goto fin
:OKEY
echo son iguales
:fin
5. Realiza una macro que reciba como primer argumento un número y a
continuación el usuario debe acertarlo. Para ello la macro preguntará
al usuario números mientras el número introducido no sea el
correcto.
@echo off
echo esto es un archivo por lotes
:nuevo
echo escribe un numero
set /p numero=
if %1 equ %numero% goto okey
echo has fallado intentelo de nuevo
goto nuevo
:okey
echo Has acertado enhorabuena
:fin
6. Realiza una macro que lea un número y a continuación imprima en
pantalla los diez siguientes números al introducido.
@echo off
echo esto es un archivo por lotes
echo escribe un numero
set /p numero=
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
set /a numero= 1+%numero%
echo %numero%
echo estos son los diez numeros siguientes
7. Realiza una macro que lea un número y escriba en pantalla todos los
números desde el introducido hasta cero.
@echo off
echo esto es un archivo por lotes
echo escribe un numero
set /p numero=
:sigue
set /a numero= %numero%-1
echo %numero%
if %numero% neq 0 goto sigue
if %numero% equ 0 goto fin
:fin
8. Se desea crear una macro para la consola, que muestre un menú con
5 opciones:
1.- Copiar ficheros.
2.- Renombrar ficheros.
3.- Mover ficheros.
4.- Borrar ficheros.
5.- Salir.
Cuando termine la opción seleccionada, debe volver a aparecer el
menú, y sólo se saldrá de éste cuando se pulse la opción 5.
Cuando se termine la ejecución de la macro, se deben eliminar
todas las variables creadas en ella.
Si alguno de los valores introducidos por teclado no es correcto
debe dar un error y no realizar la operación. (por ejemplo si no
nos dan nombre del fichero destino en la opción copiar ficheros,
debe indicar el error y no ejecutar “copy”).
@echo off
:inicio
echo elija una opcion
echo 1- copiar ficheros
echo 2- renombrar ficheros
echo 3- mover ficheros
echo 4- borrar ficheros
echo 5- salir
set /p opcion=
if %opcion% equ 1 goto copiar
if %opcion% equ 2 goto renombrar
if %opcion% equ 3 goto mover
if %opcion% equ 4 goto borrar
if %opcion% equ 5 goto fin
:copiar
echo copiar
echo Introduzca ruta origen
set /p rutaO=
dir %rutaO%
if %errorlevel% neq 0 goto error
echo Introduzca ruta destino
set /p rutaD=
dir %rutaD%
if %errorlevel% neq 0 goto error
echo Introduzca fichero a copiar
set /p rutaC=
cd %rutaO%
if exist %rutaC% copy %rutaO%\%rutaC% %rutaD%
if %errorlevel% neq 0 goto error
set rutaO=
set rutaD=
set rutaC=
goto inicio
:renombrar
echo renombrar
echo Introduzca ruta origen
set /p re1=
dir %re1%
if %errorlevel% neq 0 goto error
echo Introduzca fichero
set /p re2=
echo nuevo nombre del fichero
set /p renombrar=
cd %re1%
if exist %re2% rename %re2% %renombrar%
if %errorlevel% neq 0 goto error
set re1=
set re2=
set renombrar=
goto inicio
:mover
echo mover
echo ruta origen
set /p mover1=
dir %mover1%
if %errorlevel% neq 0 goto error
echo ruta destino
set /p mover2=
dir %mover2%
if %errorlevel% neq 0 goto error
echo fichero a mover
set /p mover=
cd %mover1%
if exist %mover% move %mover1%\%mover% %mover2%
if %errorlevel% neq 0 goto error
set mover1=
set mover2=
set mover=
goto inicio
:borrar
echo borrar
echo ruta origen
set /p bo1=
dir %bo1%
if %errorlevel% neq 0 goto error
echo fichero a borrar
set /p borrar=
cd %bo1%
if exist %borrar% del %borrar%
if %errorlevel% neq 0 goto error
set bo1=
set bo2=
set borrar=
goto inicio
:error
echo dato erroneo, vuelva al menu inicio
pause
cls
goto inicio
:fin
9. Realiza una macro que lea de un fichero llamado “alumnos.txt” y
para cada alumno cree un directorio con su nombre en el directorio
que reciba como primer parámetro.
10.Realiza una macro que añada a la variable PATH el directorio
recibido como primer parámetro.
11.Realiza una macro que pregunte una dirección IP al usuario e indique
si la máquina está encendida o apagada.
@echo off
echo Introduzca una dirección ip
set /p direccion=
ping %direccion%
if %errorlevel% equ 0 goto encendida
if %errorlevel% neq 0 goto apagada
:encendida
echo esta maquina esta encendida
goto fin
:apagada
echo esta maquina esta apagada
goto fin
:fin
12.Realiza una macro que lea de un fichero un conjunto de direcciones
IP y vaya indicando si cada una de esas máquinas está encendida o
está apagada.
13.Realiza una macro que muestre un menú con 4 opciones: Sumar,
restar, multiplicar y dividir. Para cada una de estas opciones, la
macro debe solicitar al usuario 2 números y realizar la operación
seleccionada.
@echo off
:inicio
echo elija una opcion
echo 1- sumar
echo 2- restar
echo 3- multiplicar
echo 4- dividir
echo 5- salir
set /p opcion=
if %opcion% equ 1 goto sumar
if %opcion% equ 2 goto restar
if %opcion% equ 3 goto multiplicar
if %opcion% equ 4 goto dividir
if %opcion% equ 5 goto fin
:sumar
echo SUMAR
echo Introduzca primer digito
set /p S1=
echo Introduzca segundo digito
set /p S2=
echo resultado
set /a resultado= %S1% + %S2%
echo %resultado%
goto inicio
:restar
echo RESTAR
echo Introduzca primer digito
set /p R1=
echo Introduzca segundo digito
set /p R2=
echo Resultado
set /a resta= %R1% - %R2%
echo %resta%
goto inicio
:Multiplicar
echo MULTIPLICAR
echo introduzca primer digito
set /p M1=
echo introduzca segundo digito
set /p M2=
echo Resultado
set /a multiplica= %M1% * %M2%
echo %multiplica%
goto inicio
:Dividir
echo DIVIDIR
echo introduzca primer digito
set /p D1=
echo Introduzca segundo digito
set /p D2=
echo resultado
set /a Divide= %D1%/%D2%
echo %divide%
goto inicio
:fin
14.Realiza una macro que genere otra macro que ejecute el fichero
recibido como primer argumento en la primera macro.
Ejemplo: macro.bat c:\windows\system32\calc.exe
Generaría la macro llamada ejecuta.bat con lo siguiente:
@echo off
echo lanzando el comando....
.......