Enunciados y soluciones de ejercicios de ficheros por lotes

0) VARIOS EJERCICIOS DE PARÁMETROS
EJ1_PARA.BAT

Muestra los 10 primeros parámetros (0 al 9)

@ECHO OFF
CLS
ECHO EL PARAMETRO CERO ES %0
ECHO EL PARAMETRO UNO ES %1
ECHO EL PARAMETRO DOS ES %2
ECHO EL PARAMETRO TRES ES %3
ECHO EL PARAMETRO CUATRO ES %4
ECHO EL PARAMETRO CINCO ES %5
ECHO EL PARAMETRO SEIS ES %6
ECHO EL PARAMETRO SIETE ES %7
ECHO EL PARAMETRO OCHO ES %8
ECHO EL PARAMETRO NUEVE ES %9

EJ2_PARA.BAT

Muestra el listado de archivos cuya extensión coincida con el primer parámetro, crea un directorio con el segundo y copia todos los archivos al mismo, mostrando al final un listado en formato árbol

@ECHO OFF
CLS
DIR *.%1
MD %2
COPY *.* %2
TREE /F

EJ3_PARA.BAT

Crea un directorio con el primer parámetro, copia los archivos que empiecen con el segundo a dicho directorio y crea un archivo con el tercero con contenido la fecha actual, mostrando finalmente dicho contenido

@ECHO OFF
CLS
MD %1
COPY %2*.* %1
DATE /T>%3
TYPE %3

EJ4_PARA.BAT

Muestra los 3 primeros parámetros, crea 2 directorios con los 2 primeros y un archivo con la hora actual con el tercero

@ECHO OFF
CLS
ECHO LOS PARAMETROS SON %1 - %2 - %3
MD %1 %2
TIME /T>%3.TXT

1) EJ1_PARAMETROS.BAT
Muestra un mensaje con los primeros 15 parámetros

El primer parámetro es asfdasf
El segundo parámetro es xxxxx

@ECHO OFF
CLS
ECHO EL PARAMETRO 1 ES %1
ECHO EL PARAMETRO 2 ES %2
ECHO EL PARAMETRO 3 ES %3
ECHO EL PARAMETRO 4 ES %4
ECHO EL PARAMETRO 5 ES %5
ECHO EL PARAMETRO 6 ES %6
ECHO EL PARAMETRO 7 ES %7
ECHO EL PARAMETRO 8 ES %8
ECHO EL PARAMETRO 9 ES %9
SHIFT
ECHO EL PARAMETRO 10 ES %9
SHIFT
ECHO EL PARAMETRO 11 ES %9
SHIFT
ECHO EL PARAMETRO 12 ES %9
SHIFT
ECHO EL PARAMETRO 13 ES %9
SHIFT
ECHO EL PARAMETRO 14 ES %9
SHIFT
ECHO EL PARAMETRO 15 ES %9

2) EJ2_UNIR.BAT
Admite 3 parámetros que son 3 ficheros de texto
y une los dos primeros en el último

EJEMPLO: EJ2_UNIR.BAT FI1.TXT FI2.TXT UNION.TXT

@ECHO OFF
CLS
COPY %1 + %2 %3

3) EJ3_PARA.BAT

Copia el fichero introducido como primer parámetro al directorio pasado como segundo parámetro y muestra el contenido de dicho directorio

@ECHO OFF
CLS
COPY %1 %2

4) EJ4_PARA2.BAT

Cambia el nombre de los ficheros cuya extensión coincida con el primer parámetro a la extensión pasada como segundo parámetro.

Ej:  EJ4_PARA2.BAT    TXT    OPA

@ECHO OFF
CLS
REN *.%1 *.%2

 

5) EJ5_PARA3.BAT

Fichero que admite cinco parámetros

Cambia la etiqueta del sistema por el nombre introducido como primer parámetro

Muestra dicha etiqueta

Crea el directorio pasado como segundo parámetro y copia todos los archivos con extensión pasada como tercer parámetro a dicho directorio.

Finalmente copia el contenido de todos esos archivos pasados a un fichero llamado como el cuarto parámetro.

Finalmente crea un fichero llamado CONTE.TXT con el contenido pasado como quinto parámetro y finalmente muestra dicho archivo.

@ECHO OFF
CLS
LABEL C: %1
VOL
MD %2
COPY *.%3 %2
TYPE *.%3>>%4 
ECHO %5>CONTE.TXT
TYPE CONTE.TXT

 

6) EJ6_EXISTE.BAT

 

Comprueba que existe el fichero que introducimos como primer parámetro.

  • Si existe

muestra el mensaje correspondiente

muestra también su contenido

muestra sus atributos

  • Si no existe muestra el mensaje correspondiente

@ECHO OFF
CLS
IF EXIST %1 GOTO EXISTE
IF NOT EXIST %1 GOTO NOEXISTE

:EXISTE
ECHO %1 EXISTE
TYPE %1
ATTRIB %1
GOTO END

:NOEXISTE
ECHO %1 NO EXISTE

:END

 

7) EJ7_COMPARA.BAT

Comprueba que los 3 parámetros introducidos sean iguales o diferentes

Si son los 3 iguales

Si son los 3 diferentes

Si son iguales tal y tal

@ECHO OFF
CLS
IF "%1"=="%2" GOTO 1Y2IGUALES
IF NOT "%1"=="%2" GOTO 1Y2NOIGUALES

:1Y2IGUALES
IF "%1"=="%3" GOTO 3IGUALES
IF NOT "%1"=="%3" GOTO 1Y2IGUALES3NO

:1Y2IGUALES3NO
ECHO P1 %1 Y P2 %2 SON IGUALES PERO P3 %3 NO
GOTO FIN

:3IGUALES
ECHO P1 %1, P2 %2 Y P3 %3 SON IGUALES
GOTO FIN

:1Y2NOIGUALES
IF "%1"=="%3" GOTO 1Y2DIF1Y3IGUALES
IF NOT "%1"=="%3" GOTO 1Y2DIF1Y3DIF


:1Y2DIF1Y3IGUALES
ECHO P1 %1 Y P2 %2 SON DIFERENTES PERO P1 %1 Y P3 %3 SON IGUALES
GOTO FIN

:1Y2DIF1Y3DIF
IF "%2"=="%3" GOTO 1Y2DIF2Y3IGUALES
IF NOT "%2"=="%3" GOTO 3DIFE

:1Y2DIF2Y3IGUALES
ECHO P1 %1 Y P2 %2 SON DIFERENTES PERO P2 %2  Y P3 %3 SON IGUALES
GOTO FIN

:3DIFE
ECHO P1 %1, P2 %2 Y P3 %3 SON DIFERENTES

:FIN

(nota: como ejercicio para casa, debéis optimizar el código anterior, eliminando las órdenes innecesarias tal y cómo hemos visto en clase)

8) EJ8_NUMPARA.BAT

Admite 3 parámetros exactos, e indica en su caso el mensaje correspondiente.

Ha introducido 0 parámetro(s), debe introducir 3

Ha introducido 1 parámetro(s), debe introducir 3

Ha introducido más de 3 parámetros, debe introducir solo 3

@ECHO OFF
CLS
IF "%1"=="" GOTO 0PARA
IF "%2"=="" GOTO 1PARA
IF "%3"=="" GOTO 2PARA
IF "%4"=="" GOTO 3PARA

ECHO HA INTRODUCIDO MAS DE 3 PARAMETROS, DEBE INTRODUCIR SOLO3
GOTO FIN

:0PARA
ECHO HA INTRODUCIDO 0 PARAMETRO(S) DEBE INTRODUCIR 3
GOTO FIN

:1PARA
ECHO HA INTRODUCIDO 1 PARAMETRO(S) DEBE INTRODUCIR 3
GOTO FIN

:2PARA
ECHO HA INTRODUCIDO 2 PARAMETRO(S) DEBE INTRODUCIR 3
GOTO FIN


:3PARA
ECHO CORRECTO! HA INTRODUCIDO 3 PARAMETROS

:FIN

9) EJ9_COMPRUEBAYEXISTE.BAT

Pide 1 parámetro que es el nombre de un directorio y solo 1 (mostrando el mensaje correspondiente.

En caso de introducir 1, comprueba si existe

Si existe muestra su contenido

Si no existe lo crea

@ECHO OFF
CLS
IF "%1"=="" GOTO 0PARA
IF "%2"=="" GOTO 1PARA

ECHO HA INTRODUCIDO MAS DE 1 PARAMETROS, DEBE INTRODUCIR SOLO 1
GOTO FIN

:0PARA
ECHO HA INTRODUCIDO 0 PARAMETRO(S) DEBE INTRODUCIR 1
GOTO FIN

:1PARA
IF EXIST %1 DIR %1
MD %1

:FIN

10) EJ10_FICHEROS.BAT

Muestra el nombre de todos los ficheros que tengan la extensión introducida como primer parámetro

@ECHO OFF
CLS
REM UTILIZAMOS EL /R PARA QUE SEA RECURSIVO (DENTRO DE CADA CARPETA)
FOR /R %%F IN (*.%1) DO ECHO %%F

11) EJ11_CUENTAINVERSA.BAT

Muestra los números del 100 al 0 de 2 en 2

@ECHO OFF
CLS
FOR /L %%N IN (100,-2,0) DO ECHO %%N

12) EJ12_CUENTA.BAT

Muestra los números desde el primer parámetro hasta el segundo parámetro, contando de “n” en “n”, donde “n” es el tercer parámetro

@ECHO OFF
CLS
FOR /L %%N IN (%1,%3,%2) DO ECHO %%N

13) EJ13_CHOICEUENTA.BAT

Ejemplo de CHOICE con 3 opciones utilizando IF ERRORLEVEL

@ECHO OFF
@ECHO OFF
CLS
ECHO MENU DE OPCIONES
ECHO A.OPCIONA
ECHO B.OPCIONB
ECHO C.OPCIONC
CHOICE /C:ABC /M "Selecciona una opcion: "


IF ERRORLEVEL 3 GOTO OPCC
IF ERRORLEVEL 2 GOTO OPCB
IF ERRORLEVEL 1 GOTO OPCA

:OPCA
ECHO HA SELECCIONADO LA OPCION A
GOTO FIN

:OPCB
ECHO HA SELECCIONADO LA OPCION B
GOTO FIN

:OPCC
ECHO HA SELECCIONADO LA OPCION C
:FIN

14) EJ14_AGENDA.BAT
Utilizando el fichero AMIGOS.TXT (listado de nombres, localidad y teléfonos) de ejercicios anteriores Muestra el siguiente menu:

AMIGOS.TXT

Ismael     Caballero     Valladolid     7986821
María      López         Córdoba        4568756
Sonia      Aguilar       Valladolid     1239083
Juan       Ramírez       Córdoba        7643434
Laura      Díaz          Córdoba        4221336
Enrique    Ortiz         Burgos         3423444
Mónica     Carrasco      Madrid         1234123
Cristina   Reyes         Madrid         3344334

 

AGENDA
V. Ver agenda (normal)
L. Ordenada por localidad
A. Ordenada por apellidos
S. Salir

Mostrando una pausa en cada pantalla y un mensaje de agradecimiento al salir (en PRINCIPIO SOLO SE VA A EJECUTAR UNA VEZ)

@ECHO OFF
CLS
ECHO AGENDA
ECHO.
ECHO V.VER AGENDA (NORMAL)
ECHO L.ORDENADO POR LOCALIDAD
ECHO A.ORDENADO POR APELLIDOS
ECHO S.SALIR
CHOICE /C:VLAS /M "Selecciona una opcion: "

IF ERRORLEVEL 4 GOTO SALIR
IF ERRORLEVEL 3 GOTO APELL
IF ERRORLEVEL 2 GOTO LOCAL
IF ERRORLEVEL 1 GOTO NORMA

:NORMA
ECHO.
ECHO Ver agenda
ECHO.
TYPE AMIGOS.TXT
PAUSE
GOTO SALIR

:LOCAL
ECHO.
ECHO Ordenada por localidad
ECHO.
TYPE AMIGOS.TXT |SORT /+26
PAUSE
GOTO SALIR

:APELL
ECHO.
ECHO Ordenada por apellido
ECHO.
TYPE AMIGOS.TXT |SORT /+12
PAUSE
GOTO SALIR

:SALIR
ECHO.
ECHO Gracias por utilizarnos ;)

Y si queremos que se EJECUTE SIEMPRE EL MENÚ HASTA QUE NO PULSEMOS LA TECLA SALIR SERÍA:

@ECHO OFF
:INICIO
CLS
ECHO AGENDA
ECHO.
ECHO V.VER AGENDA (NORMAL)
ECHO L.ORDENADO POR LOCALIDAD
ECHO A.ORDENADO POR APELLIDOS
ECHO S.SALIR
CHOICE /C:VLAS /M "Selecciona una opcion: "

IF ERRORLEVEL 4 GOTO SALIR
IF ERRORLEVEL 3 GOTO APELL
IF ERRORLEVEL 2 GOTO LOCAL
IF ERRORLEVEL 1 GOTO NORMA

:NORMA
ECHO.
ECHO Ver agenda
ECHO.
TYPE AMIGOS.TXT
PAUSE
GOTO INICIO

:LOCAL
ECHO.
ECHO Ordenada por localidad
ECHO.
TYPE AMIGOS.TXT |SORT /+26
PAUSE
GOTO INICIO

:APELL
ECHO.
ECHO Ordenada por apellido
ECHO.
TYPE AMIGOS.TXT |SORT /+12
PAUSE
GOTO INICIO

:SALIR

ECHO.
ECHO Gracias por utilizarnos ;)

15) EJ15_AGENDACALL.BAT
Igual que el 14 (con etiqueta inicio) pero utilizando además del archivo principal los archivos
VERNORMAL.BAT
ORDENAPE.BAT
ORDENLOC.BAT
que hay que llamarlos OBLIGATORIAMENTE CON LA ORDEN CALL

EJ15_AGENDACALL.BAT

@ECHO OFF
:INICIO
CLS
ECHO AGENDA
ECHO.
ECHO V.VER AGENDA (NORMAL)
ECHO L.ORDENADO POR LOCALIDAD
ECHO A.ORDENADO POR APELLIDOS
ECHO S.SALIR
CHOICE /C:VLAS /M "Selecciona una opcion: "

IF ERRORLEVEL 4 GOTO SALIR
IF ERRORLEVEL 3 GOTO APELL
IF ERRORLEVEL 2 GOTO LOCAL
IF ERRORLEVEL 1 GOTO NORMA

:NORMA
CALL VERNORMAL.BAT
GOTO INICIO

:LOCAL
CALL ORDENLOC.BAT
GOTO INICIO

:APELL
CALL ORDENAPE.BAT
GOTO INICIO

:SALIR

ECHO.
ECHO Gracias por utilizarnos ;)

VERNORMAL.BAT

@ECHO OFF
CLS
ECHO.
ECHO Ver agenda
ECHO.
TYPE AMIGOS.TXT
PAUSE

ORDENAPE.BAT

@ECHO OFF
CLS
ECHO.
ECHO Ordenada por Apellido
ECHO.
TYPE AMIGOS.TXT |SORT /+12
PAUSE

ORDENLOC.BAT

@ECHO OFF
CLS
ECHO.
ECHO Ordenada por localidad
ECHO.
TYPE AMIGOS.TXT |SORT /+26
PAUSE

16) EJ16_AGENDASINCALL.BAT
Igual que el 15 (con etiqueta inicio) pero utilizando además del archivo principal los archivos
VERNORMAL2.BAT
ORDENAPE2.BAT
ORDENLOC2.BAT
que hay que llamarlos OBLIGATORIAMENTE SIN LA ORDEN CALL

EJ16_AGENDASINCALL.BAT

@ECHO OFF
:INICIO
CLS
ECHO AGENDA
ECHO.
ECHO V.VER AGENDA (NORMAL)
ECHO L.ORDENADO POR LOCALIDAD
ECHO A.ORDENADO POR APELLIDOS
ECHO S.SALIR
CHOICE /C:VLAS /M "Selecciona una opcion: "

IF ERRORLEVEL 4 GOTO SALIR
IF ERRORLEVEL 3 GOTO APELL
IF ERRORLEVEL 2 GOTO LOCAL
IF ERRORLEVEL 1 GOTO NORMA

REM YA NO HARÍAN FALTA LAS ETIQUETAS ":INICIO" NI TAMPOCO "GOTO INICIO" PERO
REN LAS DEJAMOS PARA VER LA SIMILITUD CON EL ANTERIOR

:NORMA
VERNORMAL2.BAT
GOTO INICIO  

:LOCAL
ORDENLOC2.BAT
GOTO INICIO

:APELL
ORDENAPE2.BAT
GOTO INICIO

:SALIR

ECHO.
ECHO Gracias por utilizarnos ;)

VERNORMAL2.BAT

@ECHO OFF
CLS
ECHO.
ECHO Ver agenda
ECHO.
TYPE AMIGOS.TXT
PAUSE
EJ16_AGENDASINCALL.BAT

ORDENAPE2.BAT

@ECHO OFF
CLS
ECHO.
ECHO Ordenada por Apellido
ECHO.
TYPE AMIGOS.TXT |SORT /+12
PAUSE
EJ16_AGENDASINCALL.BAT

ORDENLOC2.BAT

@ECHO OFF
CLS
ECHO.
ECHO Ordenada por localidad
ECHO.
TYPE AMIGOS.TXT |SORT /+26
PAUSE
EJ16_AGENDASINCALL.BAT

17) EJ17_AGENDAconSET.BAT

Igual que el EJ15_AGENDACALL.BAT, pero sin utilizar la orden CHOICE, es decir, utilizando la orden SET
(solo modificamos el fichero principal, el resto son iguales)

@ECHO OFF
:INICIO
CLS
ECHO AGENDA
ECHO.
ECHO V.VER AGENDA (NORMAL)
ECHO L.ORDENADO POR LOCALIDAD
ECHO A.ORDENADO POR APELLIDOS
ECHO S.SALIR
SET /P OPCION=Selecciona una opcion: 

IF "%OPCION%"=="V" GOTO SALIR
IF "%OPCION%"=="L" GOTO APELL
IF "%OPCION%"=="A" GOTO LOCAL
IF "%OPCION%"=="S" GOTO NORMA

:NORMA
CALL VERNORMAL.BAT
GOTO INICIO

:LOCAL
CALL ORDENLOC.BAT
GOTO INICIO

:APELL
CALL ORDENAPE.BAT
GOTO INICIO

:SALIR

ECHO.
ECHO Gracias por utilizarnos ;)

18) EJ18_BUSCA.BAT
Pide el nombre de un archivo y comprueba si existe o no en el directorio actual

@ECHO OFF
CLS
SET /P ARCHIVO=Introduzca archivo: 
IF EXIST %ARCHIVO% ECHO EL ARCHIVO %ARCHIVO% Existe
IF NOT EXIST %ARCHIVO% ECHO EL ARCHIVO %ARCHIVO% no Existe

19) EJ19_CALCULA.BAT
Pide 2 números y muestra el mensaje, Tipo de operación (+,-,*,/)?:
y realiza la operación correspondiente

@ECHO OFF
CLS
SET /P NUM1=Numero 1: 
SET /P NUM2=Numero 2: 
SET /P OPER=Selecciona operación (+,-,*,/)? 

REM MODO 1
SET /A RESULTADO=%NUM1% %OPER% %NUM2%
ECHO %NUM1% %OPER% %NUM2% = %RESULTADO%

REM MODO2

IF "%OPER%"=="+" GOTO SUMA
IF "%OPER%"=="-" GOTO RESTA
IF "%OPER%"=="*" GOTO MULTI
IF "%OPER%"=="/" GOTO DIVI

:SUMA
SET /A RESULTADO=%NUM1% + %NUM2%
ECHO %NUM1% + %NUM2% = %RESULTADO%
GOTO FIN

REM Y ASI CON EL RESTO DE OPERACIONES

20) EJ20_CUENTANUMEROS.BAT
– Pide números indefinidamente hasta que introduzcamos el 999
– Al final me cuenta el total de números introducidos (sin contar el 999)
– También me muestra la suma total (sin contar con el 999) y la media

@ECHO OFF
CLS

SET /A CONTADOR=0
SET /A ACUMULADOR=0

:REPITE
SET /P NUM=Numero: 
IF "%NUM%"=="999" GOTO FIN

SET /A CONTADOR=%CONTADOR%+1
SET /A ACUMULADOR=%ACUMULADOR%+%NUM%

GOTO REPITE
:FIN
REM HABRIA QUE COMPROBAR QUE CONTADOR ES DISTINTO DE 0
REM PERO LO VAMOS A OBVIAR (SE HARÍA CON IF)
SET /A MEDIA=%ACUMULADOR%/%CONTADOR%

ECHO HA INTRODUCIDO %CONTADOR% NUMEROS
ECHO LA SUMA DE TODOS ES %ACUMULADOR% 
ECHO Y LA MEDIA %MEDIA%

21) EJ21_CONCURSO1.BAT
Hace la pregunta ¿2+2? y tenemos 3 intentos para acertar.
Cuando acierta, indicamos un mensaje
CORRECTO! ha acertado en el intento tal
Si pasan los 3 y no acierta, indica mensaje
GAME OVER

@ECHO OFF
CLS
SET /A INTENTO=1
:REPITE
SET /P RESP=2+2? 

IF "%RESP%"=="4" GOTO ACIERTO
SET /A INTENTO=%INTENTO%+1
IF "%INTENTO%"=="4" GOTO GAMEOVER
GOTO REPITE

:ACIERTO
ECHO CORRECTO! HA ACERTADO EN EL INTENTO %INTENTO%
GOTO FIN

:GAMEOVER
ECHO GAME OVER, HAN ACABADO SUS INTENTOS

:FIN

Ejemplo de CÓMO NO HACER EL PROGRAMA OS DEJO EL SIGUIENTE

@ECHO OFF
CLS

SET /P RESP=2+2? 
IF "%RESP%"=="4" GOTO UNO

SET /P RESP=2+2? 
IF "%RESP%"=="4" GOTO DOS

SET /P RESP=2+2? 
IF "%RESP%"=="4" GOTO TRES

ECHO GAME OVER
GOTO FIN

:UNO
ECHO HA ACERTADO EN EL INTENTO 1
GOTO FIN

:DOS
ECHO HA ACERTADO EN EL INTENTO 2
GOTO FIN


:TRES
ECHO HA ACERTADO EN EL INTENTO 3
GOTO FIN


:FIN

22) EJ22_CONCURSO2.BAT
Pide un nombre de jugador al inicio,  comprueba que el jugador no ha jugado otra vez, si ya ha jugado, le indica un mensaje y termina, si no ha jugado antes, realiza 3 preguntas, 2+2,3+3 y 4+4, y cuenta el número de aciertos.
Finalmente guarda el número de aciertos, un espacio, y el nombre del jugador en un fichero llamado CONCURSANTES.TXT.

Me pregunta al final si quiero ver le fichero de concursantes y si indico que sí me vuelve a preguntar si lo quiere ordenado por puntos o por nombre, y visualizo la opción correspondiente.
Para terminar, pregunta si quiere jugar con otro jugador, y si contesta afirmativamente, le vuelve a pedir el nombre y continua todo el proceso

@ECHO OFF
:INICIO
CLS
SET /A ACIERTOS=0
SET /A RESP=0

SET /P Jugador=Introduce jugador: 
FIND "%Jugador%" /i CONCURSANTES.TXT>NUL

IF ERRORLEVEL 1 GOTO NOHAJUGADO
IF ERRORLEVEL 0 GOTO HAJUGADO

:NOHAJUGADO
SET /P RESP=2+2? 
IF "%RESP%"=="4" SET /A ACIERTOS=%ACIERTOS%+1

SET /P RESP=3+3? 
IF "%RESP%"=="6" SET /A ACIERTOS=%ACIERTOS%+1

SET /P RESP=4+4? 
IF "%RESP%"=="8" SET /A ACIERTOS=%ACIERTOS%+1

ECHO HA TENIDO %ACIERTOS% ACIERTOS
ECHO %ACIERTOS% %JUGADOR%>>CONCURSANTES.TXT

SET /P VERFIC=Desea ver el fichero concursantes (s)? 
IF "%VERFIC%"=="s" goto VERF
GOTO FIN

:VERF
SET /P ORDE=Ordenado por aciertos (a) o nombre (n)? 
IF "%ORDE%"=="a" TYPE CONCURSANTES.TXT | SORT /R
IF "%ORDE%"=="n" TYPE CONCURSANTES.TXT | SORT /+3
GOTO FIN

:HAJUGADO
ECHO Lo siento, %JUGADOR% YA HA JUGADO

:FIN
SET /P SIGUE=Otro jugador(s/n)? 
IF "%SIGUE%"=="s" GOTO INICIO

23) EJ23_INFORME.BAT
Muestra el siguiente menú:
1. Versión del S.O.
2. Etiqueta de volumen
3. Bytes libre libres
4. Crear/Ver informe
5. Salir

CREARYVER.BAT
Desea crear informe o visualizarlo?
El Informe contiene
—————–
fecha y hora
etiqueta de volumen
bytes libres
—————–
y se va añadiendo cada vez que lo vayamos creando

Una vez visualizado o creado, pregunta si quiere volver al menu principal, y o bien vuelve o bien pregunta nuevamente
Desea crear informe o visualizarlo?
EJ23_INFORME.BAT

@ECHO OFF
:INICIO
CLS
ECHO MENU
ECHO 1. Version S.O.
ECHO 2. Etiqueta
ECHO 3. Bytes libres
ECHO 4. Ver/Crear informe
ECHO 5. Salir
SET /P OPC=Seleccione opcion: 

IF "%OPC%"=="1" VER
IF "%OPC%"=="2" VOL
IF "%OPC%"=="3" DIR C:\ | FIND "bytes libres"
IF "%OPC%"=="4" CALL VERCREAR.BAT
IF "%OPC%"=="5" GOTO FIN
PAUSE
GOTO INICIO
:FIN
ECHO Gracias por utilizarnos ;)

VERCREAR.BAT

@ECHO OFF
:INICIO
CLS
SET /P INFORME=Desea crear (c) informe o visualizarlo (v)? 

IF "%INFORME%"=="v" GOTO VERINF
IF "%INFORME%"=="c" GOTO CREAR
ECHO OPCION NO VALIDA, solo (c) o (v) 
PAUSE
GOTO INICIO

:VERINF
type INFORME_EJ23.TXT
GOTO FIN


:CREAR
DATE /T>>INFORME_EJ23.TXT
TIME /T>>INFORME_EJ23.TXT
DIR C:\ | FIND "bytes libres" >>INFORME_EJ23.TXT
ECHO ============================= >>INFORME_EJ23.TXT

:fIN
SET /P VOLVER=Desea volver al menu ppal (s/n) ?

IF "%VOLVER%"=="n" GOTO INICIO

EJ23->GESTSOCIOS.BAT y GESTIONAR.BAT
Con los menús dados en clase, realizar la gestión de socios requerida.
GESTSOCIOS.BAT

@ECHO OFF
:INICIO
CLS
ECHO MENU DE GESTION
ECHO.
ECHO 1. VER TODOS
ECHO 2. BUSCAR SOCIO
ECHO 3. GESTIONAR
ECHO 4. SALIR
SET /P OPC=Seleccione opcion: 
IF "%OPC%"=="1" TYPE SOCIOS.TXT
IF "%OPC%"=="2" GOTO BUSCAR
IF "%OPC%"=="3" CALL GESTIONAR.BAT
IF "%OPC%"=="4" GOTO FIN
PAUSE
GOTO INICIO


:BUSCAR
SET /P DNI=Dni a buscar: 
TYPE SOCIOS.TXT |FIND "%DNI%"
PAUSE
GOTO FIN

:FIN
ECHO Gracias por todo ;)

GESTIONAR.BAT

@ECHO OFF
:INICIO
CLS
ECHO A. ALTAS
ECHO B. BAJAS
ECHO C. MODIFICACIONES
ECHO V. VOLVER
SET /P OPCION=Selecciones opcion: 
IF "%OPCION%"=="A" GOTO ALTAS
IF "%OPCION%"=="B" GOTO BAJAS
IF "%OPCION%"=="C" GOTO MODIFI
IF "%OPCION%"=="V" GOTO FIN
PAUSE
GOTO INICIO

:ALTAS
SET /P DNI=Introduzca DNI: 
TYPE SOCIOS.TXT | FIND "%DNI%">NUL
IF ERRORLEVEL 1 GOTO ALTANOENCONTRADO
ECHO EL %DNI% YA PERTENECE A SOCIOS.TXT
PAUSE
GOTO INICIO

:ALTANOENCONTRADO
SET /P NOM=Introduzca nombre: 
SET /P LOCAL=Introduzca localidad: 
ECHO %DNI% %NOM% %LOCAL% >> SOCIOS.TXT
GOTO INICIO


:BAJAS
SET /P DNI=Introduzca DNI: 
TYPE SOCIOS.TXT | FIND "%DNI%">NUL
IF ERRORLEVEL 1 GOTO BAJANOENCONTRADO

SET /P BORRAR=Va a eliminar un socio, esta seguro (s/n)?
IF "%BORRAR%"=="n" GOTO INICIO

TYPE SOCIOS.TXT | FIND "%DNI%" /V >SOCIOS.TEMP

DEL SOCIOS.TXT
REN SOCIOS.TEMP SOCIOS.TXT

GOTO INICIO

:BAJANOENCONTRADO
ECHO EL %DNI% NO PERTENECE A SOCIOS.TXT
PAUSE
GOTO INICIO

:MODIFI
SET /P DNI=Introduzca DNI: 
TYPE SOCIOS.TXT | FIND "%DNI%">NUL
IF ERRORLEVEL 1 GOTO BAJANOENCONTRADO

TYPE SOCIOS.TXT | FIND "%DNI%" /V >SOCIOS.TEMP

DEL SOCIOS.TXT
REN SOCIOS.TEMP SOCIOS.TXT

SET /P NOM=Introduzca nombre: 
SET /P LOCAL=Introduzca localidad: 
ECHO %DNI% %NOM% %LOCAL% >> SOCIOS.TXT
PAUSE
GOTO INICIO

:FIN

EJ24_IPCONECTADA.BAT
Pide una IP dentro del rango dónde se encuentra el equipo y muestra si hay o no un equipo conectado a la misma
(probando)

@ECHO OFF
CLS
SET /P IP=Introduzcas ip: 
PING %IP% | FIND "Respuesta desde" > NUL
IF ERRORLEVEL 1 GOTO NO

ECHO IP %IP% CONECTADA
GOTO FIN

:NO
ECHO IP %IP% NO CONECTADA


:FIN

EJ26_NUMERITOS.BAT

@ECHO OFF

@ECHO OFF
CLS
REM SI EMPIEZA A CONTAR EN CADA EJECUCIÓN
IF EXIST EJ26NUMERITOS.TXT DEL EJ26NUMERITOS.TXT 
SET CONTADOR=0
SET ACUMULADOR=0
:INICIO
SET /P NUMERO=Introduzca numero:
IF "%NUMERO%"=="999" GOTO FIN
SET /A CONTADOR=%CONTADOR% + 1
SET /A ACUMULADOR=%ACUMULADOR% + %NUMERO%
ECHO %NUMERO% >> EJ26NUMERITOS.TXT

GOTO INICIO

:FIN
ECHO HAS INTRODUCIDO %CONTADOR% NUMEROS
ECHO LA SUMA DE LOS NUMEROS INTRODUCIDOS ES %ACUMULADOR%
SET /A MEDIA=%ACUMULADOR% / %CONTADOR%
ECHO LA MEDIA ES %MEDIA%
ECHO.
SET /P PREGUNTA="Quieres ver los numeros introducidos:? (S/N) "

IF "%PREGUNTA%"=="N" GOTO FIN

SET /P ORDEN="Orden (I)ntroducido/(A)scencente/(D)escendente? "

IF "%ORDEN%"=="I" TYPE EJ26NUMERITOS.TXT
IF "%ORDEN%"=="A" TYPE EJ26NUMERITOS.TXT | SORT
IF "%ORDEN%"=="D" TYPE EJ26NUMERITOS.TXT | SORT /R


:FIN

EJ27_CABECERA.BAT
@ECHO OFF
:INICIO
CLS
SET /P FICHERO="Introduzca fichero: "
SET /P CABECERA="Introduzca cabecera: "
ECHO %CABECERA%>EJ27.TMP
ECHO ==================== >> EJ27.TMP
TYPE %FICHERO% >> EJ27.TMP
DEL %FICHERO%
REN EJ27.TMP %FICHERO%
SET /P OTRO="Quiere introducir otro fichero?: "
IF "%OTRO%"=="S" GOTO INICIO

EJ28_CUADRADO.BAT

@ECHO OFF

@ECHO OFF
CLS
IF "%1"=="" GOTO NOINTRODUCIDO
IF NOT "%1"=="" GOTO INTRODUCIDO

:INTRODUCIDO
SET /A CUADRADO=%1 * %1
ECHO EL CUADRADO DEL NUMERO %1 ES %CUADRADO%
PAUSE
GOTO SALIR

:NOINTRODUCIDO
SET /P PARAMETRO= "NO HAS INTRODUCIDO NINGUN PARAMETROS QUIERES HACERLO AHORA? (S/N): ?"
IF "%PARAMETRO%"=="S" GOTO CUADRADO
IF NOT "%PARAMETRO%"=="S" GOTO SALIR

:CUADRADO
SET /P NUMERO= "INTRODUZCA EL NUMERO: "
SET /A CUADRADO=%NUMERO% * %NUMERO%
ECHO EL CUADRADO DEL NUMERO %NUMERO% ES %CUADRADO%
PAUSE
GOTO SALIR

:SALIR
ECHO GRACIAS POR UTILIZARNOS :)

EJ29_COPIA.BAT

@ECHO OFF

@ECHO OFF
CLS
SET /P FICHERO="fICHERO: "
IF EXIST "%FICHERO%" GOTO FICEXISTE
ECHO EL FICHERO %FICHERO% NO EXISTE
GOTO FIN



:FICEXISTE
SET /P DIRE="Directorio: "

IF EXIST "%DIRE%" GOTO CORRECTO
MKDIR %DIRE%

:CORRECTO
COPY %FICHERO% %DIRE%
DIR %DIRE%


:FIN

EJ30_EVALUA.BAT

@ECHO OFF

@echo off
:inicio
cls
echo Rellene los siguientes datos: 
set /p modulo="Nombre de modulo:"

if exist %modulo%.txt (
	goto existe 
	) else (
		goto noexiste
	)
:noexiste
echo El fichero que ha nombrado no existe
pause
goto inicio
:existe 
set /p alumno="Nombre del alumno:"
type %modulo%.txt | find /i "%alumno%" >nul
if errorlevel 1 goto noencontrado
if errorlevel 0 goto encontrado
:encontrado 
echo Este alumno ya esta registrado.
pause 
goto inicio
:noencontrado
set /p nota="Nota del alumno:"
echo %nota% %alumno% >> %modulo%.txt 
set /p ver="Desea ver el fichero?"
if "%ver%"=="s" goto ver
if "%ver%"=="n" goto final
:ver
type %modulo%.txt 
goto final
:final

EJ_REPASO1.BAT
Estamos configurando el campeonato nacional de ficheros por lotes, para ello existen una serie de equipos y las puntuaciones obtenidas, que se gestionan a través del siguiente menú:

EQUIPOS POR LOTES
V) VER EQUIPOS (Muestra equipos.txt)
C) CONSULTAR EQUIPO (Pide equipo y muestra equipo y puntuación de equipos.txt)
A) INSERTAR EQUIPOS (Pide equipo y puntuación y lo inserta en equipos.txt
E) ELIMINAR EQUIPOS (Pide equipo y elimina dicho equipo de equipos.txt
M) MODIFICAR EQUIPOS (Pide equipo y modifica puntuación)
S) Salir

NOTAS:
– Debéis comprobar en insertar que no exista ya el equipo
– ” ” en consultar,eliminar y modificar que ya exista el equipo
– Siempre se muestra el mensaje correspondiente
– El fichero equipos.txt es de la forma:
puntuación equipo

@ECHO OFF

:INICIO
CLS

ECHO EQUIPOS
ECHO V) VER EQUIPOS
ECHO C) CONSULTAR EQUIPOS
ECHO A) INSERTAR EQUIPOS
ECHO E) ELIMINAR EQUIPOS
ECHO M) MODIFICAR EQUIPOS
ECHO S) SALIR 

SET /P OPCION=ELIGE UNA OPCION: 

IF "%OPCION%"=="V" GOTO VER
IF "%OPCION%"=="C" GOTO CONSULTAR
IF "%OPCION%"=="A" GOTO INSERTAR
IF "%OPCION%"=="E" GOTO ELIMINAR
IF "%OPCION%"=="M" GOTO MODIFICAR
IF "%OPCION%"=="S" GOTO :SALIR

:VER 
TYPE EQUIPOS.TXT
PAUSE
GOTO INICIO

:CONSULTAR
SET /P NOMBRE=INTRODUCE EL NOMBRE: 
TYPE EQUIPOS.TXT | FIND "%NOMBRE%" > NUL
IF ERRORLEVEL 1 GOTO MAL
TYPE EQUIPOS.TXT | FIND "%NOMBRE%" 
PAUSE
GOTO INICIO

:INSERTAR
SET /P NOMBRE=INTRODUCE EL NOMBRE: 
TYPE EQUIPOS.TXT | FIND "%NOMBRE%" > NUL
IF ERRORLEVEL 1 GOTO SEGUIRINSERTAR
ECHO %NOMBRE% YA EXISTE 
PAUSE
GOTO INICIO

:SEGUIRINSERTAR
SET /P PUNTUACION=INTRODUCE LA PUNTUACION:
ECHO %NOMBRE% %PUNTUACION% >> EQUIPOS.TXT
ECHO REALIZADO CORRECTAMENTE
GOTO INICIO 

:ELIMINAR
SET /P NOMBRE=INTRODUCE EL NOMBRE: 
TYPE EQUIPOS.TXT | FIND "%NOMBRE%" > NUL
IF ERRORLEVEL 1 GOTO MAL
IF ERRORLEVEL 0 GOTO SEGUIRELIMINAR

:SEGUIRELIMINAR
TYPE EQUIPOS.TXT | FIND /V "%NOMBRE%" > EQUIPOS.TMP
DEL EQUIPOS.TXT
REN EQUIPOS.TMP EQUIPOS.TXT
ECHO %NOMBRE% HA SIDO ELIMINADO CORRECTAMENTE
PAUSE
GOTO INICIO

:MODIFICAR
SET /P NOMBRE=INTRODUCE EL NOMBRE: 
TYPE EQUIPOS.TXT | FIND "%NOMBRE%" > NUL
IF ERRORLEVEL 1 GOTO MAL
IF ERRORLEVEL 0 GOTO SEGUIRMODIFICAR

:SEGUIRMODIFICAR
SET /P PUNTUACION=INTRODUCE LA NUEVA PUNTUACION:
TYPE EQUIPOS.TXT | FIND /V "%NOMBRE%" > EQUIPOS.TMP
DEL EQUIPOS.TXT
REN EQUIPOS.TMP EQUIPOS.TXT

ECHO %NOMBRE% %PUNTUACION% >> EQUIPOS.TXT
ECHO MODIFICADO CORRECTAMENTE
PAUSE
GOTO INICIO

:MAL
ECHO EL EQUIPO NO EXISTE
PAUSE
GOTO INICIO

:SALIR
ECHO GRACIAS!

(Aunque podríamos reducir algunas líneas de código, por ejemplo
goto etiqueta
:etiqueta
justo cuando van una detrás de la otra)

Sé el primero en comentar

Deja un comentario