Ficheros Por Lotes
Ficheros Por Lotes
Ficheros Por Lotes
Tabla de contenido
1. Introducción ............................................................................................................................................... 2
3. La orden ECHO.......................................................................................................................................... 3
8. La orden IF .................................................................................................................................................. 8
1. Introducción
En muchas ocasiones los usuarios repiten una determinada secuencia de órdenes día tras
día, suponiendo una tarea bastante molesta e incómoda.
Los ficheros por lotes pretenden automatizar una tarea rutinaria ejecutando una
serie de órdenes definidas con antelación.
Un fichero por lotes es un fichero ASCII que contiene una serie de órdenes
Como ejemplo, vamos a crear un fichero por lotes llamado TIEMPO.BAT. Para su
confección podemos utilizar la orden Copy o el programa Edit.
Si ahora ejecutamos el fichero recién creado, vemos como entran en funcionamiento las
órdenes Date y Time.
C:\>tiempo
C:\>date
La fecha actual es Mar 15/03/2018
Escriba la nueva fecha (dd-mm-aa):
C:\>time
La hora actual es 11:53:54,12
Escriba la nueva hora:
C:\>
Todas las órdenes admitidas después del símbolo del sistema pueden introducirse
también en un fichero por lotes. Además, existen una serie de órdenes diseñadas
específicamente para estos ficheros:
Símbolo Significado
3. La orden ECHO
Página 3
UT1. Uso de Scripts Windows. Ficheros por lotes
ECHO
Visualiza un mensaje en pantalla.
mensaje
Para eliminar el eco de la propia orden ECHO OFF se antepone el símbolo arroba (@) al
nombre de la orden. Veámoslo más claro en los ejemplos siguientes.
Programa:
echo off
date
time
Ejecución:
C:\>tiempo
C:\>echo off
La fecha actual es Mar 15/03/2018
Escriba la nueva fecha (dd-mm-aa):
La hora actual es 11:53:54,12
Escriba la nueva hora:
Programa:
@echo off
date
time
Ejecución:
C:\>tiempo
La fecha actual es Mar 15/03/2018
Escriba la nueva fecha (dd-mm-aa):
Página 4
UT1. Uso de Scripts Windows. Ficheros por lotes
Programa:
@echo off
echo Este es el fichero TIEMPO.BAT
date
time
Ejecución:
C:\>tiempo
Este es el fichero TIEMPO.BAT
La fecha actual es Mar 15/03/2018
Escriba la nueva fecha (dd-mm-aa):
La hora actual es 12:10:22,72
Escriba la nueva hora:
4. La orden REM
Las líneas precedidas por la palabra Rem serán ignoradas durante el funcionamiento del
fichero por lotes. Se suele utilizar esta orden para introducir aclaraciones en el código del
fichero. Objetivo: facilitar su lectura y corrección de errores.
@echo off
rem Programa: TIEMPO.BAT
rem Cometido: Mostrar al usuario la fecha y la hora del
rem sistema y ofrecerle la oportunidad de modificarla.
date
time
5. Gestión de parámetros
Los parámetros son informaciones adicionales colocadas detrás del nombre de una
orden. Si la mayoría de las órdenes WINDOWS admiten parámetros, también será
posible gestionar parámetros en los ficheros por lotes.
Vamos a confeccionar un fichero por lotes que borre dos ficheros introducidos como
parámetros.
Página 5
UT1. Uso de Scripts Windows. Ficheros por lotes
Programa:
@echo off
rem Programa: BORRA2.BAT
del %1
del %2
Ejecución:
En la línea de órdenes, cada parámetro debe estar separado con un espacio en blanco
del anterior.
Programa:
@echo off
rem Programa: COPIAB.BAT
echo Se están copiando los ficheros %1, %2 y %3 a la unidad B:
copy %1 b:\
copy %2 b:\
copy %3 b:\
Ejecución:
6. La orden PAUSE
Cuando CMD.EXE encuentra una orden Pause en un fichero por lotes, visualiza un
mensaje en pantalla y espera una tecla para proseguir. También podemos presionar
Ctrl+C y así, interrumpir el desarrollo del fichero.
Página 6
UT1. Uso de Scripts Windows. Ficheros por lotes
7. La orden GOTO
GOTO [:]etiqueta
Las etiquetas deben ir precedidas de dos puntos (:) para diferenciarse de las
órdenes. Admiten hasta ocho caracteres significativos. Esto último significa que la
etiqueta `BALANCE_DE_AGOSTO' es idéntica a `BALANCE_DE_ENERO'.
Programa:
@echo off
ver
goto Final
vol
:Final
Ejecución:
En este ejemplo, la orden Vol nunca se ejecutará: al llegar la orden GOTO FINAL,
CMD.EXE salta hasta la etiqueta :Final y termina el fichero porque no hay más líneas.
Página 7
UT1. Uso de Scripts Windows. Ficheros por lotes
8. La orden IF
IF NOT ERRORLEVEL número orden Si el código de salida del último programa es inferior
Página 8
UT1. Uso de Scripts Windows. Ficheros por lotes
@echo off
del %1
Hay que evitar esos mensajes de error, introduciendo nosotros mensajes personalizados.
Ese proceso por lotes resultaría más correcto con las siguientes líneas:
@echo off
if not exist %1 echo ¡Es imposible borrar un fichero que no existe!
if exist %1 del %1
Página 9
UT1. Uso de Scripts Windows. Ficheros por lotes
IF “cadena1”==”cadena2” orden
@echo off
rem Programa: BORRA2B.BAT
if "%1"=="" echo Debe introducir uno o dos ficheros como parámetros.
if not "%1"=="" del %1
if not "%2"=="" del %2
IF /I “cadena1”==”cadena2” orden
Ejercicio: crear un fichero por lotes llamado ordena.bat que reciba un fichero y una de
las palabras siguientes: ASC o DESC. El programa debe ordenar ese fichero dado
(comando SORT), en orden ascendente o descendente, según indique el usuario. Se
debe comprobar que exista el fichero y en caso contrario, informar al usuario.
Una mejora sería permitir también las palabras asc y desc (en minúsculas) y si se
introduce cualquier otra palabra, informar al usuario de las únicas palabras válidas.
• NEQ – no igual.
• LSS – menor
• GTR – mayor
Página 10
UT1. Uso de Scripts Windows. Ficheros por lotes
Muchos ficheros por lotes necesitan saber si la orden anterior cumplió su cometido
correctamente: para ello utilizan la orden If errorlevel.
Código Significado
Vamos a crear un fichero por lotes para copiar los ficheros de la unidad A: a la B: e
informar del resultado de la copia.
@echo off
rem Programa: COPIA-AB.BAT
xcopy a:\ b:\
if errorlevel 1 goto Error
if errorlevel 0 echo ¡La copia fue correcta!
goto Final
:Error
echo Se produjo un error durante la copia
:Final
Página 11
UT1. Uso de Scripts Windows. Ficheros por lotes
Esta compleja línea se traduce así: «Si el código de salida es 5 o superior pero inferior a 6
ejecutar orden», es decir, si el código es 5 ejecutar orden.
Ejemplo:
Como se puede ver en el ejemplo, se asigna valor a una variable de entorno con la
orden SET.
Este es otro uso de la orden set, que ya sabemos que también se usa para ver las
variables de entorno del sistema y para definirlas.
Página 12
UT1. Uso de Scripts Windows. Ficheros por lotes
Su sintaxis es:
Ejemplo: podemos mejorar mucho un programa si cambiamos las órdenes Pause por
órdenes SET /P.
@echo off
rem Programa: DEMOB.BAT
echo ********************************************
echo ** Este programa copia todos los ficheros **
echo ** de la unidad A: al directorio actual **
echo ********************************************
set /p opcion=”¿Desea continuar S-N?”
if “%opcion%”==”N” goto Final
:Proceso
copy a:\ .
set /p opcion=”Para continuar con otro disquete pulse C y para
finalizar, F “
if “%opcion%”==”C” goto proceso
:Final
Con la orden SET /P y de una forma muy sencilla podemos crear menús con diferentes
opciones:
@echo off
rem Programa: UTIL.BAT
:Menu
cls
echo UTILIDADES
echo ----------
echo.
echo C. Chequear
echo D. Defragmentar
echo E. Editor
echo S. Salir
echo.
Goto Salir
Página 13
UT1. Uso de Scripts Windows. Ficheros por lotes
:Chequear
chkdsk
goto Menu
:Defrag
DEFRAG c:
goto Menu
:Editor
EDIT
goto Menu
:Salir
echo.
Ejercicio: modificar el fichero por lotes ordena.bat para que se llame ordena2.bat y que
después de comprobar que el fichero a ordenar exista, pregunte al Usuario lo siguiente:
Su sintaxis es:
Esta orden repite la orden especificada para cada valor del conjunto. Conjunto es
una lista de valores. En ella, se pueden establecer varios valores separados por espacios
y también, utilizar comodines.
Ejemplo
La variable %%I va tomando cada uno de los valores del conjunto y se los envía a la
orden Type. En este ejemplo se visualizan en pantalla los ficheros JUAN.TXT, MARIA.TXT
y todos los que tengan extensión DAT.
Página 14
UT1. Uso de Scripts Windows. Ficheros por lotes
Hay una variante que permite que inicializar una variable y que se vaya incrementado
su valor hasta un límite dado. La sintaxis sería esta:
Ejercicio: crear un fichero por lotes llamado mostrar.bat que reciba una serie de
ficheros como parámetros y con un bucle FOR muestre el contenido de cada uno de
ellos.
Por ejemplo, si existen 3 parámetros (%1, %2 y %3) y se utiliza la orden Shift, el valor de
%1 lo tomará %0, el valor de %2 lo tomará %1 y el valor de %3 lo tomará %2.
Programa:
@echo off
rem Programa: DEMO2.BAT
echo El parámetro 1 es %1
shift
echo El parámetro 2 es %1
shift
echo El parámetro 3 es %1
Página 15
UT1. Uso de Scripts Windows. Ficheros por lotes
Ejecución:
Se utiliza para llamar a un fichero por lotes desde el interior de otro. Su sintaxis es:
Programa PRG1.BAT:
@echo off
echo línea 1
call prg2.bat
echo línea 4
echo línea 5
Programa PRG2.BAT:
@echo off
echo línea 2
echo línea 3
Ejecución:
C:\>prg1
línea 1
línea 2
línea 3
línea 4
línea 5
C:\>
1. Crear un fichero por lotes llamado cat.bat que reciba un fichero como parámetro
y muestre su contenido por pantalla. Este fichero por lotes se usará a
continuación.
Página 16
UT1. Uso de Scripts Windows. Ficheros por lotes
2. Crear un fichero por lotes llamado menu.bat que reciba un fichero como
parámetro y que muestre el siguiente menú:
MENU
1. Listar
2. Ordenar
Página 17