Está en la página 1de 56

Ficheros por lotes

FICHEROS POR LOTES

Implantación de Sistemas Operativos


IES Armando Cotarelo Valledor
Profesor: Angel Alonso
1
Ficheros por lotes

FICHEROS POR LOTES

En muchas ocasiones los usuarios de MS-DOS 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.

Concepto de fichero por lotes:


Un fichero por lotes es un fichero ASCII
que contiene una serie de órdenes

2
Ficheros por lotes

FICHEROS POR LOTES

Creación C:\BATH>copy con tiempo.bat


date
time
^Z
1 archivo(s) copiado(s)

Ejecución C:\BATH>tiempo
C:\BATH>date
La fecha actual es Mar 15/08/1995
Escriba la nueva fecha (dd-mm-aa):
C:\BATH>time
La hora actual es 0:53:54,12
Escriba la nueva hora:

C:\BATH>
3
Ficheros por lotes

FICHEROS POR LOTES


Todos los ficheros por lotes poseen unas características comunes:
• Extensión. Todos deben llevar obligatoriamente la extensión BAT o
CMD (también en windows).

• Contenido. Son ficheros de texto ASCII y, por consiguiente, pueden


ser creados por Copy, Edit o cualquier editor de texto (Wordpad, Bloc
de notas en Windows). Cada línea debe poseer una orden.

• Ejecución. Para hacerlo funcionar simplemente debemos teclear su


nombre a continuación del símbolo del sistema. El fichero por lotes
tomará entonces el control del ordenador.

• Pausar. Podemos pausar el procesamiento del fichero por lotes en


cualquier momento presionando Pausa (y cualquier tecla para continuar).

• Interrupción. Podemos detener el procesamiento del fichero por lotes


en cualquier momento presionando Ctrl+Pausa o Ctrl+C
4
Ficheros por lotes

FICHEROS POR LOTES

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:
Orden Breve descripción
Echo Controla el eco de las órdenes y visualiza mensajes.
Rem Introduce comentarios.
Pause Detiene temporalmente el desarrollo de un programa.
Goto Desvía incondicionalmente el desarrollo de un
programa.
If Desvía condicionalmente el desarrollo de un
programa.
Choice Permite elegir entre unas opciones establecidas.
For Repite una misma orden en un conjunto de ficheros.
Call Llama a un fichero por lotes desde otro.
Shift Desplaza el valor de los parámetros.
5
Ficheros por lotes

FICHEROS POR LOTES

La siguiente tabla muestra aquellos símbolos empleados


exclusivamente en los ficheros por lotes:

Símbolo Significado
:etiqueta Nombre de una etiqueta.
%número Parámetro del fichero por lotes.
%variable% Variable del entorno.
%%variable Variable de la orden For.

6
Ficheros por lotes

La orden ECHO

Se puede utilizar de cinco formas:


Indica si está activado o desactivado el eco de las
ECHO
órdenes.
ECHO ON Activa el eco
ECHO OFF Desactiva el eco
ECHO mensaje Visualiza un mensaje en pantalla.
ECHO. Visualiza una línea en blanco en pantalla.

El eco de una orden es el propio nombre de aquella escrito en la


pantalla.
Para eliminar el eco de la propia orden ECHO OFF se antepone
el símbolo arroba “@” al nombre de la orden.
7
Ficheros por lotes

La orden ECHO
Creación
C:\BATH>copy con tiempo.bat
echo off @echo off
date
time
^Z
1 archivo(s) copiado(s)
Ejecución
C:\BATH>tiempo C:\BATH>tiempo
La fecha actual es Mar 15/0
C:\BATH>echo off
Escriba la nueva fecha (
La fecha actual es Mar 15/08/1995
La hora actual es 0:53:54,1
Escriba la nueva fecha (dd-mm-aa):
Escriba la nueva hora:
La hora actual es 0:53:54,12
Escriba la nueva hora: C:\BATH>
C:\BATH>
8
Ficheros por lotes

La orden ECHO
Creación C:\BATH>copy con tiempo.bat
@echo off
echo Este es el fichero TIEMPO.BAT
date
time
^Z
1 archivo(s) copiado(s)

Ejecución C:\BATH>tiempo
Este es el fichero TIEMPO.BAT
La fecha actual es Mar 15/08/1995
Escriba la nueva fecha (dd-mm-aa):
La hora actual es 0:53:54,12
Escriba la nueva hora:
C:\BATH>
9
Ficheros por lotes

La orden ECHO

Se puede utilizar para crear un archivo de forma rápida:

C:\BATH>echo HOLA COMO ESTAS > saludo.txt

Si ahora vemos el contenido de saludo.txt mostrará:

C:\BATH>type saludo.txt
HOLA COMO ESTAS
C:\BATH>

10
Ficheros por lotes

La orden REM

Permite introducir comentarios internos en el código de un


fichero por lotes. 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 La fecha y la hora del
rem sistema y la oportunidad de modificarla.
date
time
11
Ficheros por lotes

Actividades

Ejercicio 4A

12
Ficheros por lotes

Diferencias Windows
Gestión de directorios y ficheros
Se puede crear varios directorios en un solo comando md
md uno dos tres
Se puede crear un directorio con sus subdirectorios con un solo md
md cuatro\cuatro1\cuatro11
Se puede borrar varios directorios en el mismo comando md
rd uno dos tres
rd /s cuatro
Recuerda que se puede renombrar directorios con el comando move

Se pueden borrar varios ficheros en un solo comando del


del fichero1 fichero2 ficheroX
13
Ficheros por lotes

Gestión de PARÁMETROS

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 de MS-DOS
admiten parámetros, también será posible gestionar parámetros en
los ficheros por lotes.
@echo off
rem Programa: BORRA2.BAT
del %1
del %2

C:\>borra2 juan.txt maria.txt

Para referirnos a un parámetro introducido en la línea de órdenes del


programa, debemos escribir el signo de porcentaje (%) seguido del
número de parámetro, hasta nueve de ellos (del %1 al %9).
14
Ficheros por lotes

Gestión de PARÁMETROS

El siguiente ejemplo copia los ficheros introducidos como los 2


primeros parámetros al disquete de la unidad B:

@echo off
rem Programa: COPIAB.BAT
echo Se están copiando los ficheros %1 y %2 a B:
copy %1 b:\
copy %2 b:\

C:\>copiab juan.bak alberto.bmp marta.dbf

No se copiaría
15
Ficheros por lotes

Gestión de PARÁMETROS

Hay ciertas expansiones muy interesantes que podemos


hacer con los parámetros de entrada.

@echo off
echo El fichero es %~n1
echo La extensión es %~x1
echo El path es %~p1
echo La unidad es %~d1
Una ejecución de ejemplo sería esta:
C:\>parametros.cmd "c:\path1\path2\fichero.txt“
El fichero es fichero
La extensión es .txt
El path es \path1\path2\
La unidad es c:
16
Ficheros por lotes

Las variables de entorno


El MS-DOS permite utilizar variables para almacenar temporalmente
información. Estas variables se borran cada vez que apagamos el
ordenador y deben cargarse cuando se inicia el sistema (habitualmente
en el autoexec.bat). Hay dos tipos de variables de entorno: del sistema
(carga automáticamente el sistema) y de usuario (utilizadas para
almacenar información). Para crear, modificar o borrar variables de
entorno se utiliza el comando SET.
SET VARI=uno Crea una nueva variable llamada VARI con el valor uno.
SET VARI=otro Cambia el valor de VARI a otro.
SET VARI= Elimina la variable de entorno VARI.
SET Muestra las variables de entorno existentes.

Se puede recuperar el valor de una determinada variable del entorno


introduciendo ésta entre signos de porcentajes (%NombreVariable%).
Echo El valor de la variable PATH es %PATH%
17
Ficheros por lotes

Las variables de entorno


VARIABLES WINDOWS

Ahora aprendamos a declarar variables. Para crear una se escribe:


set NOMBREVARIABLE = VALOR
Para llamarla debemos escribir su nombre entre los signos %%
@echo off
set Nombre= Javier Letelier Ruiz Ojo con los espacios en blanco
echo %Nombre%
pause
La pantalla nos mostrará algo así:

Si queremos mostrar parte de una variable utilizaremos : ~ y nº de posiciones


echo %Nombre:~8,4%

Posición en la que empieza Cantidad de posiciones


(la primera es el 0) Si no se indica es hasta el final
Con el signo – por el final 18
Ficheros por lotes

Las variables de entorno


VARIABLES WINDOWS
Para cambiar el valor solo debemos hacer esto:
set Nombre= Nuevo Valor
Si quieres que tu Variable sea dinámica, o sea que el Usuario la elija antepones /p:
set /p Nombre=Escriba su Nombre:
El Batch se pausará mostrando el Mensaje que va luego de "=" dejando que se escriba algo.

También podemos multiplicarlas, sumarlas, etc... con /a:


set numero1=2
set numero2=43
set /a suma= %numero1% + %numero2%
echo %suma%
Si ejecutamos, nos devolverá la suma de 2 + 43, es decir, 45

Para calcular el resto de una división se utiliza el símbolo %


set /a resto=%numero2%%%numero1%  en este caso resto sería 1

Tiene que ir junto 19


Ficheros por lotes

Las variables de entorno


@echo off
echo Fecha actual %DATE%
echo Hora actual %TIME%
echo Nombre del PC %COMPUTERNAME%
echo Nombre del usuario %USERNAME%
echo Directorio en que te encuentras %CD%
echo Numero de procesadores %NUMBER_OF_PROCESSORS%
Fecha actual 01/02/2011
Hora actual 22:24:45,56
Nombre del PC WINDOWSX-DC877E
Nombre del usuario winxp
Directorio en que te encuentras E:\probassistema
Numero de procesadores 2

Ejemplo:
Crear un directorio con la fecha del sistema (con formato aaaa_mm_dd):
md %date:~-4%_%date:~3,2%_%date:~0,2%
20
Ficheros por lotes

Las variables de entorno


Listados de Variables Pre-definidas en Windows:
1. %ALLUSERSPROFILE%  Esta variable devuelve la localización del perfil de todos los usuarios.
2. %APPDATA%  Devuelve el lugar donde las aplicaciones guardan los datos por defecto (Normalmente carpeta Archivos de Programa).
3. %CD%  Devuelve el directorio en el que estás en ese momento.
4. %CMDCMDLINE%  Muestra el comando exacto empleado para acceder al intérprete de comandos (cmd.exe).
5. %CMDEXTVERSION%  Devuelve la extensión de nuestro intérprete de comandos.
6. %COMPUTERNAME%  Devuelve el nombre del equipo.
7. %COMSPEC%  Devuelve la ruta de la shell de comandos.
8. %DATE%  Devuelve la fecha actual.
9. %ERRORLEVEL%  Devuelve el código de error del último comando ejecutado.
10. %HOMEDRIVE%  Devuelve la unidad en la que está el directorio en el que estás actualmente.
11. %HOMEPATH%  Devuelve la ruta completa a dicho directorio.
12. %LOGONSERVER%  Devuelve el nombre de nuestro servidor.
13. %NUMBER_OF_PROCESSORS%  Devuelve el número de procesadores instalados en el equipo.
14. %OS%  Devuelve nuestro sistema operativo, con la excepción de Windows 2000 y XP que lo devuelven como Windows_NT.
15. %PATH%  Devuelve la ruta a la carpeta de los ejecutables más importantes del sistema.
16. %PATHEXT%  Devuelve las extensiones de archivos que nuestro sistema considera ejecutables.
17. %PROCESSOR_ARCHITECTURE%  Devuelve la arquitectura del procesador.
18. %PROCESSOR_IDENTIFIER%  Devuelve la descripción del procesador.
19. %PROCESSOR_LEVEL%  Devuelve el número de modelo de procesador.
20. %PROCESSOR_REVISION%  Devuelve el número de revisión del procesador.
21. %PROGRAMFILES%  Devuelve la carpeta donde se guardan los programas (normalmente Archivos de Programa).
22. %RANDOM%  Devuelve un número al azar entre 0 y 32767.
23. %SYSTEMDRIVE%  Devuelve la unidad que contiene el directorio raíz del sistema.
24. %SYSTEMROOT%  Devuelve la carpeta de administración, que suele ser C://Windows
25. %TEMP%  Devuelve el directorio donde están los archivos temporales.
26. %TMP%  Igual que el anterior.
27. %TIME%  Devuelve la hora actual.
28. %USERNAME%  Devuelve el nombre del usuario actual.
29. %USERPROFILE%  Devuelve la ruta del directorio donde están los archivos del usuario actual.
30. %WINDIR%  Devuelve la ruta de la carpeta del sistema operativo. 21
Ficheros por lotes

Ruta de ejecutables

%PATH%
Devuelve la ruta de las carpetas de los ejecutables más importantes del
sistema por orden de búsqueda y ejecución.
Todos los ficheros que están en esas carpetas se pueden ejecutar sin
necesidad de indicarle su ruta.
En Windows suelen estar en C:\windows\system32.

Si queremos mostrar esa ruta:


echo %path%

Si queremos añadir un directorio de ejecutables deberíamos de hacer:

set path=%path%;nuevarutaejecutables

22
Ficheros por lotes

Crea un programa bat que realice lo siguiente:


Programa que calcula la media
Actividades Tu nombre? Juan
Variables Primera nota? 4
Segunda nota? 6

***************************
La media de Juan es 5
***************************

Por supuesto Juan, 4 y 6 son datos que nos tiene que pedir el programa
Existen líneas en blanco y líneas de asteriscos

23
Ficheros por lotes

La orden PAUSE
Detiene temporalmente el desarrollo de un programa. Cuando el DOS
encuentra una orden Pause en un fichero por lotes visualiza un
mensaje en pantalla y espera una tecla para proseguir. Podemos
presionar Ctrl+Pausa y así, interrumpir el desarrollo del fichero.

Presione una tecla para continuar . . .


Para mejorar la presentación, podemos insertar un mensaje indicando el
motivo de la detención del programa gracias a la orden Echo.
echo Inserte un disquete en la unidad B:
pause

Si no deseamos ver el mensaje de Pause, podemos redireccionarlo al


dispositivo ficticio NUL.
echo Inserte un disquete en B: y pulse Enter
pause >nul
24
Ficheros por lotes

Encadenar comandos
Recordemos que ejecutar también en los batch más de un comando en
una sola línea, utilizando los operadores:
& - Ejecuta todos los comandos de la línea
&& - Ejecuta comandos secuencialmente hasta que uno fracasa
| | - Ejecuta comandos secuencialmente hasta que uno tiene éxito

Crea el directorio uno y nos posiciona en el:


md uno & cd uno
Sólo borra el fichero.txt si contiene dentro la palabra "BORRAME"
find "BORRAME" fichero.txt && DEL fichero.txt
Intentamos copiar en docs, si no existe, copiamos en el raíz
copy fichero.txt c:\docs\ || copy fichero.txt c:\
Podemos agrupar todos los comandos encerrándolos entre paréntesis,
Por ejemplo para redireccionar la salida de todos ellos con un > :
(date /t & echo ---- & type m.txt & type j.txt) > mj.txt
25
Ficheros por lotes

La orden GOTO
Normalmente un fichero por lotes se desarrolla secuencialmente,
desde la primera línea hasta la última. Sin embargo, la orden Goto
permite desviar la ejecución del programa hasta una etiqueta
especificada como parámetro.
GOTO [:]etiqueta
Las etiquetas deben ir precedidas de dos puntos (:) para diferenciarse
de las órdenes. Admiten hasta ocho caracteres significativos.

@echo off
ver
goto Final
vol
:Final

Versión MS-DOS 6.22


26
Ficheros por lotes

La orden GOTO
Vamos a crear un programa para copiar varios disquetes desde
la unidad A: al directorio actual.

@echo off
rem Programa: DEMO.BAT
echo ********************************************
echo ** Este programa copia todos los ficheros **
echo ** de la unidad A: al directorio actual **
echo ********************************************
pause
:Proceso
copy a:\*.* .
echo Introduzca siguiente disquete en A: y pulse Enter
pause >nul
goto Proceso

27
Ficheros por lotes

La orden IF
Desvía condicionalmente el proceso de ejecución de un fichero
por lotes. Admite 6 sintaxis diferentes:
IF EXIST fichero orden Si existe el fichero se ejecuta la orden.

IF NOT EXIST fichero orden Si no existe el fichero se ejecuta la orden.

IF cadena1==cadena2 orden Si ambas cadenas son iguales se ejecuta la orden.

IF NOT cadena1==cadena2 orden Si ambas cadenas son diferentes se ejecuta la orden.

Si el código de salida del último programa es igual


IF ERRORLEVEL número orden
o superior al número, se ejecuta la orden.
Si el código de salida del último programa es
IF NOT ERRORLEVEL número orden
inferior al número, se ejecuta la orden.

Windows
If exist archivo (del archivo) else echo el fichero no existe

& echo Ya está


El & concatena comandos
28
Ficheros por lotes

La orden IF
Windows
No solo se puede utilizar el signo == para hacer comparaciones
EQU, que es el equivalente a ==
NEQ, Sirve para cuando queremos ver Desigualdad
LSS, Para verificar si el numero es Menor
LEQ, Para verificar si es menor o igual
GTR, Si es mayor
GEQ, Si es Mayor o igual

Ejemplo:

if %a% GTR %b% (echo El mayor es %a%) else echo El mayor es %b%

29
Ficheros por lotes

La orden IF
IF EXIST
Un programador debe considerar todas y cada una de las situaciones
posibles al ejecutarse su programa y, por tanto, debe evitar la aparición de
mensajes de error inesperados en la pantalla.
@echo off
del %1
Si ahora lo hacemos funcionar introduciendo como parámetro un fichero
inexistente, el MS-DOS tomará el control y dará su correspondiente
mensaje de error. Se podría poner:
@echo off
if not exist %1 echo ¡Es imposible borrar fichero que no existe!
if exist %1 del %1
Para comprobar la existencia de un directorio se utilizará el dispositivo NUL:
if not exist C:\DOC\NUL echo el directorio DOC no existe
En windows no haría falta el nul 30
Ficheros por lotes

La orden IF
IF cadena1==cadena2
En un fichero por lotes para borrar dos ficheros, hemos
supuesto que el usuario siempre introduce dos parámetros. Sin
embargo, se producirá un error si el usuario sólo introduce uno
de ellos: la orden DEL %2 quedará transformada en DEL a
secas y como DEL no funciona sin parámetros, MS-DOS
mostrará una advertencia. Este problema se soluciona con lo
siguiente:

@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
31
@echo off
Ficheros por lotes
Title Manejo de Escritorio
:ini
La orden IF cls
echo Opciones de menu
echo 1-Apagar el sistema
Ejemplo: echo 2-Abrir Paint
echo 3-Abrir Firefox
echo.
set /P op= Escoge una opcion de las anteriores:
if %op%==1 goto uno
if %op%==2 goto dos
if %op%==3 (goto tres) else goto fin
:uno
echo Has elegido apagar el sistema
shutdown -s -t30 -c “Hora de dormir”
pause
goto ini
:dos
echo Has elegido abrir paint
start mspaint.exe
pause
goto ini
:tres
echo Has elegido abrir el firefox
start firefox.exe
:fin
echo “Se acabó” 32
Ficheros por lotes

La orden IF
IF ERRORLEVEL
Cada orden externa de MS-DOS genera un código de salida a su
término indicando si pudo realizarse satisfactoriamente y lo
almacena en una variable llamada ERRORLEVEL.
Generalmente un código de salida 0 indica que no hubo ningún
problema y un código de salida superior hace referencia a
diferentes errores.
Muchos ficheros por lotes necesitan saber si la orden anterior
cumplió su cometido correctamente: para ello utilizan la orden IF
ERRORLEVEL.
Es muy importante recordar que la orden se ejecutará si el código
de salida es igual o superior al especificado detrás de
ERRORLEVEL. Por eso conviene hacer los if de mayor a menor.
33
Ficheros por lotes

La orden IF
@echo off
rem Programa: COPIA-AB.BAT
xcopy a:\ b:\ > nul
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

En muchas ocasiones puede ser fuente de complicaciones que


If errorlevel número se cumpla si el número es igual o mayor. Para
cumplirse exclusivamente si el código de salida es 5:

if errorlevel 5 if not errorlevel 6 dir


34
Ficheros por lotes

La orden IF
Si tenemos que poner varios comandos se puede estructurar de la
manera siguiente:
@echo off
rem Programa: IGUALES.BAT
if %1 == %2 (
echo Muy bien !!!
echo Son Iguales
Obligatorio junto  ) else (
echo Son distintos
)
echo SE ACABO
35
Ficheros por lotes

Actividades

Ejercicio 4B

36
Ficheros por lotes

Actividades
Repaso

Realiza los siguientes ficheros batch:


numeros1.bat  lista los números del 1 al 20
numeros2.bat  lista los números del 1 a un numero que nos pide
numeros3.bat  lista los números de un número hasta otro que nos pide
numeros4.bat  lista los números pares o impares de un número hasta otro
que nos pide

37
Ficheros por lotes

Realiza un fichero tabla.bat que realice lo siguiente:


1º Se abra en una ventana nueva y con un titulo
2º Nos pida un nº
3º Nos limpie la pantalla y muestre la tabla de ese nº
Actividades 4º Nos pregunte si queremos otra tabla o acabar y cerrar la
ventana.
Repaso

Valores ascii para realizar los marcos

38
Ficheros por lotes

La orden CHOICE

Permite escoger una opción entre varias y, dependiendo de la


opción elegida, devuelve un código de salida.
CHOICE [mensaje][/C:opciones][/N][/S][/T:opción,segundos]

@echo off
rem Programa: DEMOB.BAT
choice ¿Desea continuar?
if errorlevel 2 goto Final
:Proceso
copy a:\ .
choice Para continuar pulse C y para finalizar F /C:FC
if errorlevel 2 goto proceso
:Final
39
Ficheros por lotes

La orden CHOICE
@echo off
rem Programa: UTIL.BAT
:Menu
cls
echo UTILIDADES DE MS-DOS
echo --------------------
echo.
echo A. Anti-Virus
echo B. Backup
echo D. Defragmentar
echo E. Editor :Anti
echo S. Salir MSAV
echo. goto Menu
choice ¿Qué utilidad desea? /c:abdes /n /t:s,15 :Backup
if errorlevel 5 goto Salir MSBACKUP
if errorlevel 4 goto Editor goto Menu
if errorlevel 3 goto Defrag :Defrag
if errorlevel 2 goto Backup DEFRAG
if errorlevel 1 goto Anti goto Menu
if errorlevel 0 goto Menu :Editor
EDIT
goto Menu
:Salir
echo.
40
Ficheros por lotes

La orden FOR

Esta orden repite la orden especificada para cada valor del


conjunto. Conjunto es una lista de nombres de ficheros. Si se
utiliza fuera de un bat se pondrá un solo %. En ella, se pueden
establecer varios nombres separados por espacios y también,
utilizar comodines.

FOR %%variable IN (conjunto) DO orden

En el ejemplo siguiente, 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.

for %%I in (juan.txt maria.txt *.dat) do type %%I


41
Ficheros por lotes

La orden FOR
Las comas no son obligatorias
Ejemplo: Windows
FOR /L %%x IN (1,2,10) DO echo %%x
En donde /L es para especificar que nuestro for se basará en un conteo
de números. 1 el nº en que empieza, 2 es el nº de salto y 10 el nº hasta
el que hay que llegar.
Mostrará los números impares del 1 al 10 (1,3,5,7 y 9).
Si no especifico el parámetro /L me mostraría el 1 el 2 y el 10.
Ejemplo:
FOR %%C IN (cls dir chkdsk) DO %%C

NOTA: Los Batch en algunos casos SI reconoce entre mayúsculas y


minúsculas, como en el caso de la variable %%x si esta se llamara
%%X no sería reconocida como la misma.
42
Ficheros por lotes

La orden FOR
Listado de Carpetas: Windows

FOR /D %%x IN (*) do echo %%x

Al indicar /D solo se aplica a directorios.

Si quisiéramos que se listaran los directorios, juntos a los directorios que


tienen estos dentro se usaría /R

FOR /R /D %%x IN (*) DO echo %%x

Si quisiéramos listar todos los documentos que están dentro de una


carpeta contando los que están dentro de carpetas se usa solamente /R

FOR /R %%x IN (*) DO echo %%x


43
Ficheros por lotes

La orden SHIFT FICHEROS POR LOTES

Se traduce al español por desplazamiento. Mueve el valor de


cada parámetro a la variable anterior. 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. De este modo podremos utilizar más de 10
parámetros en un fichero por lotes.
shift
@echo off
rem Programa: DEMO2.BAT
echo El parámetro 1 es %1
shift C:\BATH>demo2 juan rosa ana
echo El parámetro 2 es %1 El parámetro 1 es juan
shift El parámetro 2 es rosa
echo El parámetro 3 es %1 El parámetro 3 es ana
44
Ficheros por lotes

La orden CALL

Se utiliza para llamar a un fichero por lotes desde el interior de


otro.
CALL fichero [ParámetrosDelFichero]

Programa PRG1.BAT Programa PRG2.BAT Ejecución

@echo off @echo off C:\BATH>prg1


echo línea 1 echo línea 2 línea 1
call prg2.bat echo línea 3 línea 2
echo línea 4 línea 3
echo línea 5 línea 4
línea 5

45
Ficheros por lotes

Creación de MACROS

Una macro es un conjunto de una o más órdenes que se


ejecutarán de manera automática. Son similares, por tanto, a los
ficheros por lotes. Sin embargo, cada macro debe caber en una
sola línea y además, se almacenan en la memoria con un
nombre identificativo.
Para ejecutar una macro se introduce su nombre a continuación
del símbolo del sistema seguido de los posibles parámetros.

Nota: No se puede ejecutar una macro desde un fichero por lotes.

DOSKEY [[NombreMacro=]valor] [/MACROS]

46
Ficheros por lotes

Creación de MACROS
Crear una macro para formatear rápidamente el disquete en A:
C:\>doskey rapid=format a: /q
( Introducida esta macro, escribir rapid será igual que escribir format a: /q )

Crear una macro para crear un directorio y entrar en él:


C:\>doskey mc $1=md $1$Tcd $1

Borrar una macro: C:\>doskey mc=

Ver todas las macros: C:\>doskey /macros

Crear un fichero con C:\>doskey /macros > macros.txt


todas las macros:

47
Ficheros por lotes

Retardar la ejecución dentro de un BAT

Una forma de hacer que el programa espere unos segundos es


mediante este truco con el comando ping redireccionado al
dispositivo NUL:

C:\>ping –n 5 localhost > nul

En este ejemplo esperará 5 segundos.

48
Ficheros por lotes

El fichero AUTOEXEC.BAT
Como cualquier fichero por lotes, el AUTOEXEC.BAT posee las
mismas características que los demás: lleva extensión BAT,
contiene órdenes, se puede ejecutar introduciendo su nombre
después del símbolo del sistema y se interrumpe su
funcionamiento si pulsamos Ctrl+Pausa.
• Tiene un nombre y extensión obligatorias: siempre debe
llamarse AUTOEXEC.BAT
• Se ejecuta cada vez que arranca el ordenador. Si no existe,
MS-DOS hace funcionar a tres órdenes en su lugar: Date,
Time y Ver.
• Debe residir en el directorio raíz de la unidad de arranque. Por
ejemplo, si arrancamos con el disco duro (es lo más normal) se
buscará el fichero AUTOEXEC.BAT en su directorio raíz y
luego, se ejecutará.
49
Ficheros por lotes

El fichero CONFIG CONFIGURACIÓN DEL SISTEMA

El fichero CONFIG.SYS es un fichero de texto ASCII situado en


el directorio raíz de la unidad de arranque (generalmente la C:).
Contiene una serie de órdenes especiales -una en cada línea-
con el siguiente formato:

NombreOrden=ParámetrosOrden

Se encarga, como su nombre indica, de la configuración del


sistema.
Cada vez que arranca el sistema operativo, MS-DOS busca los
ficheros CONFIG.SYS y AUTOEXEC.BAT en el directorio raíz de
la unidad de arranque y los ejecuta.

50
Ficheros por lotes

Resumen comandos para ficheros por lotes

Comando Descripción
@ Evita que la línea aparezca por pantalla.
REM Introduce un comentario y anula una línea de ordenes.
ECHO Muestra en pantalla una cadena de caracteres.
PAUSE Detiene momentáneamente la ejecución de un archivo por lotes.
SET permite manejar variables.
IF Esta orden se utiliza para dar saltos condicionales.
CHOICE permite escoger entre varias opciones.
FOR Repite un número determinado de veces un mismo proceso.
SHIFT Modifica los parámetros de un archivo por lotes.
CALL Llama a otro archivo BATCH.
GOTO Salta y ejecuta una nueva línea de ordenes indicada por :
:ETIQUETA Identifica una posición de salto.
%NUM Introduce parámetros al archivo por lotes.
51
Ficheros por lotes

Actividades

Ejercicio 4C

Ejercicio 4D

Ejercicio 4E

52
Recuerda Ficheros por lotes

Aplicaciones Windows
Como comandos externos también podríamos considerar las aplicaciones
Windows que se encuentren en algún directorio incluido en PATH:

NOTEPAD [/P] [fichero ASCII] /P imprime el documento


WRITE [/P] [fichero ASCII]
MSPAINT [/P] [archivo gráfico .jpg, .gif, .bmp]
EXPLORER [/N, ] [/E, ] [/select, ] recurso
/n, (new): muestra la página en una nueva ventana, aunque ya esté abierta
/e, (expanded): muestra el árbol de directorios a la izquierda del explorador.
/select, : Muestra el archivo en modo seleccionado (color azul).

Ejemplos:
Z:\>EXPLORER file://c:/fotos/paisaje.jpg
Z:\>EXPLORER c:\fotos\
Z:\>CALC  la calculadora
Z:\>CLIPBRD  el portapapeles
Z:\>REGEDIT  el editor de registro
Z:\>CHARMAP  mapa de caracteres
53
Recuerda Ficheros por lotes

Aplicaciones Windows
También es capaz de "lanzar" archivos no ejecutables, arrancando de forma
automática para ello la aplicación que tenga asociada según su extensión :

Ejemplos:
Z:\>clock.avi
Z:\>hola.txt
Z:\>C:\pagWeb\index.html

NOTA: Las aplicaciones Windows no suelen informar del éxito o fracaso de la


ejecución con un ERRORLEVEL.

Ejemplo: En una sola línea abrir el Explorer para visualizar la página de


google sólo si el servidor responde después de hacerle un ping.

ping www.google.es -n 1 && explorer http://www.google.es


54
Ficheros por lotes
Actividades

REPASO

1. Crea cuentaatras.bat que nos cree un fichero llamado fichNUM con


los números desde un número que nos pide al 0. (NUM será el número
dado). Controla errores (Si existe el fichero que lo cree de nuevo).
2. Crea diadelasemana.bat que nos de el nombre del día de la semana
pidiéndonos un número y dándole los días como parámetros. Controla
errores (Tiene que haber 7 parámetros / Que nos vuelva a preguntar si
no metes un número entre 1 y 7).
3. Crea diccionario.bat que nos permita mediante un menú introducir
palabras y su traducción al inglés, consultar una palabra que nos pide
en ese diccionario y hacer un listado por orden alfabético de todo el
diccionario. Controla errores (Que no existe la palabra).

55
Ficheros por lotes
Actividades

REPASO

4. Crea saludar.bat que nos muestre por pantalla 20 veces la palabra


HOLA seguida de un nombre que nos pide (utiliza el comando for).
5. Crea aprobado.bat que nos pida tres notas y nos diga si aprobó o no.
6. Crea aplicaciones.bat que nos permita mediante un menú abrir con
el notepad un documento que nos pide, abrir la calculadora, ejecutar
un bat que nos pide o salir. (Controlar errores)
MENU
1. Abrir archivo con Notepad
2. Abrir la Calculadora
3. Ejecutar un bat
4. Salir
56

También podría gustarte