Ficheros Bat
Ficheros Bat
Ficheros Bat
En muchas ocasiones los usuarios de ms-dos repiten una determinada secuencia de rdenes da tras da, suponiendo una tarea bastante molesta e incmoda. Los ficheros por lotes pretenden automatizar una tarea rutinaria ejecutando una serie de rdenes definidas con antelacin. En este captulo aprenderemos aquellas herramientas necesarias para crear un fichero por lotes. En el captulo siguiente, se exponen y estudian tiles ejemplos que abarcan la totalidad del temario estudiado.
Si ahora ejecutamos el fichero recin creado, vemos como entran en funcionamiento las rdenes Date y Time.
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>
Extensin. Todos deben llevar obligatoriamente la extensin BAT. Contenido. Son ficheros de texto ASCII y, por consiguiente, pueden ser creados por Copy o Edit. Cada lnea del fichero debe poseer una orden. Ejecucin. Para hacerlo funcionar simplemente debemos teclear su nombre a continuacin del smbolo del sistema. El fichero por lotes tomar entonces el control del ordenador.
Interrupcin. Podemos detener el procesamiento del fichero por lotes en cualquier momento presionando Ctrl+Pausa.
Todas las rdenes admitidas despus del smbolo del sistema pueden introducirse tambin en un fichero por lotes. Adems, existen una serie de rdenes diseadas especficamente para estos ficheros:
Breve descripcin Controla el eco de las rdenes y visualiza mensajes. Introduce comentarios. Detiene temporalmente el desarrollo de un programa. Desva incondicionalmente el desarrollo de un programa. Desva condicionalmente el desarrollo de un programa. Permite elegir entre unas opciones establecidas. Repite una misma orden en un conjunto de ficheros. Llama a un fichero por lotes desde otro. Desplaza el valor de los parmetros.
La siguiente tabla muestra aquellos smbolos empleados exclusivamente en los ficheros por lotes:
Significado Nombre de una etiqueta. Parmetro del fichero por lotes. Variable del entorno. Variable de la orden For.
Indica si est activado o desactivado el eco de las rdenes. Activa el eco Desactiva el eco Visualiza un mensaje en pantalla. Visualiza una lnea en blanco en pantalla.
El eco de una orden es el propio nombre de aquella escrito en la pantalla. Al poner en marcha el fichero anterior, observar como aparece el nombre de cada orden en pantalla antes de ejecutarse. Al fichero del ejemplo podemos aadirle la lnea ECHO OFF para desactivar el eco en lo sucesivo. Para eliminar el eco de la propia orden ECHO OFF se antepone el smbolo arroba (@) al nombre de la orden. Vemoslo ms claro en los ejemplos siguientes. Programa:
echo off date time
Ejecucin:
C:\BATH>tiempo C:\BATH>echo off 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:
Programa:
@echo off date time
Ejecucin:
C:\BATH>tiempo 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:
La orden Echo tambin permite mostrar mensajes al usuario del fichero. En el siguiente ejemplo se ha introducido el mensaje "Este es el fichero TIEMPO.BAT": Programa:
@echo off echo Este es el fichero TIEMPO.BAT date time
Ejecucin:
C:\BATH>tiempo Este es el fichero TIEMPO.BAT La fecha actual es Mar 15/08/1995 Escriba la nueva fecha (dd-mm-aa):
Ejercicios de autocomprobacin
1. Indique la diferencia entre las siguientes rdenes:
Ejecucin:
A:\>borra2 juan.txt maria.txt
En la lnea de rdenes, cada parmetro debe estar separado con un espacio en blanco del anterior. De la forma anteriormente explicada podemos gestionar hasta nueve de ellos (del %1 al %9).
Para referirnos a un parmetro introducido en la lnea de rdenes del programa, debemos escribir el signo de porcentaje (%) seguido del nmero de parmetro. El siguiente ejemplo copia los ficheros introducidos como parmetros al disquete de la unidad B: Programa:
@echo off rem Programa: COPIAB.BAT echo Se estn copiando los ficheros %1, %2 y %3 a la unidad B: copy %1 b:\ copy %2 b:\ copy %3 b:\
Ejecucin:
A:\>copiab juan.bak alberto.bmp marta.dbf
Para mejorar la presentacin, podemos insertar un mensaje indicando el motivo de la detencin del programa gracias a la orden Echo:
echo Inserte un disquete en la unidad B: pause
Ejercicios de autocomprobacin
2. Qu hace la orden PAUSE >NUL ? 3. Escriba un fichero de procesamiento por lotes que pida un disco en la unidad A: antes de mostrar su directorio raz.
Ejecucin:
Versin MS-DOS 6.22
En este ejemplo, la orden Vol nunca se ejecutar: al llegar la orden GOTO FINAL, msdos salta hasta la etiqueta :Final y termina el fichero porque no hay ms lneas. 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 el siguiente disquete en A: y pulse Enter pause >nul goto Proceso
En primer lugar el programa muestra en pantalla su cometido y as, el usuario decide entre continuar (Enter) o abandonar (Ctrl+Pausa). Si pulsa Enter se copian todos los ficheros del directorio raz de A: en el directorio actual. Luego, se ofrece la posibilidad de introducir otro disquete. Si pulsamos Enter se ejecuta la orden GOTO PROCESO, desviando la ejecucin del programa hasta la etiqueta
:Proceso. En cambio, si pulsamos Ctrl+Pausa el programa finaliza, apareciendo el smbolo del sistema.
Ejercicios de autocomprobacin
4. Qu hace el siguiente fichero por lotes?
@echo off dir c:\ goto etiqueta2 :etiqueta1 ver :etiqueta2
10-8 La orden IF
Desva condicionalmente el proceso de ejecucin de un fichero por lotes. Admite 6 sintaxis diferentes:
IF EXIST fichero orden IF NOT EXIST fichero orden IF cadena1==cadena2 orden IF NOT cadena1==cadena2 orden IF ERRORLEVEL nmero orden IF NOT ERRORLEVEL nmero orden
Si existe el fichero se ejecuta la orden. Si no existe el fichero se ejecuta la orden. Si ambas cadenas son iguales se ejecuta la orden. Si ambas cadenas son diferentes se ejecuta la orden. Si el cdigo de salida del ltimo programa es igual o superior al nme Si el cdigo de salida del ltimo programa es inferior al nmero, se ej
IF EXIST
Un programador debe considerar todas y cada una de las situaciones posibles al ejecutarse su programa y, por tanto, debe evitar la aparicin de mensajes de error inesperados en la pantalla. Suponga el siguiente fichero por lotes:
@echo off del %1
Si ahora lo hacemos funcionar introduciendo como parmetro un fichero inexistente, el ms-dos tomar el control y dar su correspondiente mensaje de error. Este fichero resulta ms correcto si contiene las siguientes lneas:
@echo off if not exist %1 echo Es imposible borrar un fichero que no existe! if exist %1 del %1 De esta forma, la orden Del slo funciona si el fichero existe.
IF cadena1==cadena2
Encuentra su utilidad al trabajar con parmetros en un fichero por lotes. En el fichero BORRA2.BAT hemos supuesto que el usuario siempre introduce dos parmetros. Sin embargo, se producir un error si el usuario slo introduce uno de ellos: la orden DEL %2 quedar transformada en DEL a secas y como Del no funciona sin parmetros, 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 parmetros. if not "%1"=="" del %1 if not "%2"=="" del %2
La primera lnea If avisa si no se ha introducido ningn parmetro. La segunda lnea nicamente borrar el primer parmetro si se ha introducido. La tercera lnea hace lo mismo pero con el segundo parmetro.
IF ERRORLEVEL
Cada orden externa de ms-dos genera un cdigo de salida a su trmino indicando si pudo realizarse satisfactoriamente. Generalmente un cdigo de salida 0 indica que no hubo ningn problema y un cdigo 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 cdigo de salida es igual o superior al especificado detrs de ERRORLEVEL. A modo de ejemplo tenemos a continuacin los cdigos de salida de Xcopy:
Cdigo 0 1 2 4
Significado Los ficheros fueron copiados sin error. No se encontraron ficheros para copiar. El usuario presion Ctrl+Pausa para suspender el proceso de Xcopy. Ocurri un error de inicio. No hay suficiente memoria o espacio en el disco, se introdujo un nombre de unidad no vlida o se utiliz una sintaxis incorrecta en la lnea de rdenes. 5 Ocurri un error de escritura de disco.
Vamos a crear un fichero por lotes para copiar los ficheros de la unidad A: a la B: e informe 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
En primer lugar, Xcopy intenta realizar la copia de ficheros y devolver un cdigo de salida. Si se ha producido algn error el cdigo ser 1 o superior y entonces, el programa se desva hasta la etiqueta :Error, muestra el mensaje y finaliza. Si la copia fue satisfactoria, el cdigo de salida es 0. La segunda lnea If mostrar el mensaje de xito, saltando despus a la etiqueta :Final y como no hay ms lneas, termina el proceso. En muchas ocasiones puede ser fuente de complicaciones que If errorlevel nmero se cumpla si el nmero es igual o mayor. Para cumplirse exclusivamente si el cdigo de salida es 5 -por ejemplo- podemos usar lo siguiente: if errorlevel 5 if not errorlevel 6 dir Esta compleja lnea se traduce as: Si el cdigo de salida es 5 o superior pero inferior a 6 ejecutar Dir, es decir, si el cdigo es 5 ejecutar Dir.
/C:opciones Especifica las opciones posibles. Si el usuario pulsa la primera de las opciones, Choice devolver un cdigo de salida 1; si pulsa la segunda opcin, Choice devuelve el cdigo 2 y as sucesivamente. Si no se especifica este parmetro se asumen las opciones por defecto (SN). /N No muestra las opciones admitidas detrs del mensaje. /S Hace distincin entre maysculas y minsculas. Si no se especifica este parmetro se toman como la misma opcin. /T:opcin,segs Toma la opcin indicada si no se pulsa ninguna otra tecla en los segundos especificados. mensaje Contiene el mensaje mostrado al usuario pidiendo que introduzca una de las opciones admitidas.
El programa DEMO.BAT podemos mejorarlo sensiblemente si cambiamos las rdenes Pause por rdenes Choice.
@echo off rem Programa: DEMOB.BAT echo ******************************************** echo ** Este programa copia todos los ficheros ** echo ** de la unidad A: al directorio actual ** echo ******************************************** choice Desea continuar? if errorlevel 2 goto Final :Proceso copy a:\ . choice Para continuar con otro disquete pulse C y para finalizar, F /C:FC if errorlevel 2 goto proceso :Final
En la primera orden Choice se toman las opciones por defecto S y N. `S' corresponde a un cdigo de salida 1 y `N' a un cdigo 2. En la segunda orden Choice se toman las opciones F y C. `F' corresponde a un cdigo 1 y `C' a un cdigo 2. Con la orden Choice y de una forma muy sencilla podemos crear mens con diferentes opciones:
@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 echo S. Salir echo. choice Qu utilidad if errorlevel 5 goto if errorlevel 4 goto if errorlevel 3 goto if errorlevel 2 goto if errorlevel 1 goto if errorlevel 0 goto :Anti MSAV goto Menu :Backup MSBACKUP goto Menu :Defrag DEFRAG goto Menu :Editor desea comenzar? /c:abdes /n /t:s,15 Salir Editor Defrag Backup Anti Menu
Observe la orden Choice: el modificador /C indica las opciones admitidas. Si se pulsa la `A' se generar un cdigo de salida 1 y as sucesivamente hasta la `S' que corresponde a un cdigo 5. Gracias al modificador /N Choice no muestra las teclas admitidas detrs del mensaje. El modificador /T toma como opcin por defecto la `S' si pasan 15 segundos sin pulsar ninguna tecla. Observe, asimismo, cmo se ha comenzado en las lneas If por el errorlevel ms alto: as se evitan conflictos. El cdigo de salida 0 se obtiene si el usuario responde con Ctrl+Pausa al mensaje de Choice.
Ejercicios de autocomprobacin
5. Escriba un fichero de procesamiento por lotes para borrar el fichero introducido como parmetro. El programa debe comprobar previamente si se ha introducido algn parmetro y si el fichero existe. 6. Para qu devuelven un cdigo de salida las rdenes externas? 7. Escriba un fichero por lotes que nos pregunte si deseamos ver el directorio de A: o el de B:
La orden FOR
Su sintaxis es: FOR %%variable IN (conjunto) DO orden
Esta orden repite la orden especificada para cada valor del conjunto. Conjunto es una lista de nombres de ficheros. En ella, se pueden establecer varios nombres separados por espacios y tambin, utilizar comodines. Ejemplo
for %%I in (juan.txt maria.txt *.dat) do type %%i
La variable %%I va tomando cada uno de los valores del conjunto y se los enva a la orden Type. En este ejemplo se visualizan en pantalla los ficheros JUAN.TXT, MARIA.TXT y todos los que tengan extensin DAT.
La orden SHIFT
Se traduce al espaol por desplazamiento. Mueve el valor de cada parmetro a la variable anterior. Por ejemplo, si existen 3 parmetros (%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 parmetro 1 es %1 shift echo El parmetro 2 es %1 shift echo El parmetro 3 es %1
Ejecucin:
C:\BATH>demo2 juan maria alberto El parmetro 1 es juan El parmetro 2 es maria El parmetro 3 es alberto C:\BATH>
La orden CALL Se utiliza para llamar a un fichero por lotes desde el interior de otro. Su sintaxis es: CALL fichero [ParmetrosDelFichero] En el siguiente ejemplo, el fichero PRG1.BAT llama a PRG2.BAT. Cuando la ejecucin de PRG2.BAT termina, continua PRG1.BAT en la siguiente lnea a Call. Programa PRG1.BAT:
@echo off echo lnea 1 call prg2.bat echo lnea 4 echo lnea 5
Programa PRG2.BAT:
@echo off echo lnea 2 echo lnea 3
Ejecucin:
C:\BATH>prg1 lnea 1 lnea 2 lnea 3 lnea 4 lnea 5 C:\BATH>
4. Muestra el directorio raz de la unidad C: y luego la versin del sistema operativo. Como el nombre de las etiquetas slo admite ocho caracteres significativos la orden GOTO ETIQUETA2 llevar a la primera etiqueta empezada por ETIQUETA, en este caso ETIQUETA1. 5.
@echo off if "%1"=="" goto Error1 if not exist %1 goto Error2 del %1 echo El fichero %1 se ha borrado goto Final :Error1 echo Debe especificar un fichero goto Final :Error2 echo El fichero %1 no existe :Final echo.
6. Las rdenes externas devuelven un cdigo de salida para ser utilizado en los ficheros por lotes. Posteriormente se podr evaluar este cdigo gracias a la orden If errorlevel. 7.
@echo off echo A. Ver el directorio de A: echo B. Ver el directorio de B: choice Elija opcin /c:ab if errorlevel 1 if not errorlevel 2 dir a:\ if errorlevel 2 if not errorlevel 3 dir b:\
Tiene un nombre y extensin 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 raz de la unidad de arranque. Por ejemplo, si arrancamos con el disco duro _es lo ms normal_ se buscar el fichero AUTOEXEC.BAT en su directorio raz y luego, se ejecutar.
En el captulo destinado a las variables del entorno, advertimos que estas variables se guardan en la memoria y se pierden al apagar el ordenador. La nica forma de tener unas variables del entorno fijas (PATH, PROMPT, TEMP...) es definindolas en cada arranque del ordenador. El fichero AUTOEXEC.BAT contiene adems rdenes para configurar el idioma del usuario.
Por ltimo, suele contener unas rdenes cuya misin es cargar programas residentes en memoria. Estos programas quedarn almacenados en memoria hasta el apagado del ordenador. Se suelen introducir como programas residentes un anti-virus, el programa Doskey y cualquier otro. Por tanto, el fichero AUTOEXEC.BAT debe contener estos tres mdulos indispensables:
rdenes para configurar las variables del entorno (Set, Path y Prompt). rdenes para seleccionar el idioma. rdenes para instalar programas residentes.
El primer grupo de rdenes contiene la definicin de variables del entorno. Recuerde que las variables PATH y PROMPT se pueden definir con la orden Set o con unas rdenes diseadas al efecto llamadas igualmente Path y Prompt. Orden SET PROMPT SET PATH SET TEMP SET DIRCMD Significado Define el smbolo del sistema. Define la va de acceso. Define el directorio para ficheros temporales. Define cmo queremos ver el directorio (ordenacin, formato...).
El segundo grupo de rdenes definen el espaol como idioma. El tercer grupo de rdenes cargan en memoria programas residentes. Aunque suele ser suficiente poner el nombre de la orden a secas, es habitual aadir la trayectoria del fichero delante de su nombre y la extensin detrs: de esta forma no hay confusin posible. A continuacin se colocan los parmetros.
Significado Carga un programa de cach de disco (ver Captulo 13). Carga el controlador del ratn (se suministra al adquirir un ratn). Controla la comparticin de ficheros. Es requerido por algunas aplicaciones. Instala el editor de rdenes y macros (ver Captulo 12). Carga el anti-virus residente de ms-dos (ver Captulo 17).
Ejecucin:
C:\BATH>buscar perdido.* C:\PERDIDO.TXT C:\PRUEBA\PERDIDO.DBF C:\TRABAJOS\PERDIDO.TXT C:\BATH>
Lo verdaderamente importante en este fichero es la orden Dir. El utilizar el smbolo de directorio raz `\' antes del parmetro es para comenzar la bsqueda desde el directorio raz a todos los subdirectorios. De esta forma no har falta cambiar al raz para hacer funcionar al programa. El parmetro %1 se sustituir automticamente por el fichero o grupo de ficheros a buscar. El parmetro /b presenta el resultado de la bsqueda en formato sencillo. El parmetro /s permite buscar el fichero en todos los subdirectorios y, finalmente, el parmetro /p muestra por pantallas el resultado de la bsqueda. En el ejemplo se han buscado todos los ficheros con nombre PERDIDO y se han encontrado tres.
Este problema se soluciona si redirigimos la entrada de la orden desde un fichero, llamado RELOJ.TXT que contiene nicamente 2 bytes: un retorno de carro (Enter) y un cdigo de fin de fichero (Ctrl+Z). Como la salida de la orden contiene dos lneas y slo nos interesa la primera, podemos filtrar la salida con la orden Find. Para funcionar el fichero RELOJ.BAT, se necesita crear el fichero RELOJ.TXT de la siguiente forma: escribimos COPY CON RELOJ.TXT, pulsamos Enter dos veces, pulsamos Ctrl+Z y pulsamos finalmente Enter.
C:\BATH>copy con reloj.txt ^Z 1 archivo(s) copiado(s) C:\BATH>
Ejecucin:
En primer lugar se comprueba la existencia del fichero RELOJ.TXT en el directorio C:\BATH. Si el directorio en el que reside es otro, debemos ajustar las rdenes convenientemente. Si el fichero RELOJ.TXT no existe, el programa no funcionar correctamente y, con el fin de evitarlo, se muestra un aviso y termina. Si el fichero existe, se ejecutan las rdenes Date y Time. El operador `<' hace que la entrada de la orden sea el fichero RELOJ.TXT y el filtro Find hace aparecer la lnea que contiene la palabra actual.
Ejecucin:
C:\WP60>programa CV.EXE INSTALL.BAT MCV.EXE QFIGENES.EXE VAPINUL.COM VMP.COM WPINFO.EXE
Este fichero por lotes necesita crear un fichero temporal para ir aadindole todos los ficheros con extensiones COM, EXE o BAT. Este fichero temporal debe ser creado en el directorio destinado a este fin (variable TEMP). Por tanto se crea otra variable llamada FICHTEMP que contiene el nombre del fichero (TEMPORAL.TXT) y su trayectoria. Si no se utilizase el directorio definido en la variable TEMP para crear el fichero TEMPORAL, podra darse el caso de intentar escribir en un disquete protegido contra escritura y no poder completarse la funcin del programa. La primera lnea If crea el fichero temporal con el nombre de los ficheros con extensin COM. La segunda lnea If aade al fichero temporal, aquellos ficheros con extensin EXE y la tercera lnea If hace lo mismo con los ficheros BAT. La orden Type muestra todos los programas (ahora grabados en el fichero TEMPORAL.TXT) ordenados y por pantallas. Finalmente, la orden Del borra el fichero temporal creado y la orden Set elimina la variable del entorno creada.
xcopy %1 c:\basura\ >nul if errorlevel 1 goto Error del %1 echo A continuacin se recuerda el estado del directorio C:\BASURA DIR C:\BASURA |FIND "archivo(s)" goto Final :Error echo No se pudo borrar %1! :Final echo.
Ejecucin:
C:\PRUEBA>borrar *.ini A continuacin se recuerda el estado del directorio C:\BASURA 5 archivo(s) 27.238 bytes C:\PRUEBA>
La primera orden If detecta si no se ha introducido ningn parmetro, produciendo un aviso en este caso. La segunda orden If comprueba que el fichero para borrar exista, si no es as dar un mensaje de error. La orden Xcopy mueve el fichero o ficheros especificados como parmetros al directorio C:\BASURA. La barra inclinada invertida detrs de BASURA se emplea para informar a Xcopy que BASURA es un directorio y no un fichero. Si el directorio no existe, Xcopy sabr que es un directorio y lo crear automticamente. La salida de la orden se ha redireccionado al dispositivo ficticio NUL. De esta forma, no aparecer ningn mensaje producido por la orden en la pantalla. La siguiente lnea If comprueba el cdigo de salida. Si se ha producido un error en la copia de los ficheros, los ficheros no se borrarn. Esto es una medida de seguridad para evitar la desaparicin definitiva de los ficheros. La orden Del borra los ficheros del directorio actual. Ya hemos mencionado el problema de este fichero por lotes. Como solucin, se informa al usuario del nmero de ficheros y los bytes ocupados por todos ellos en el directorio C:\BASURA. De esta forma el usuario sabr si debe borrar con la orden Del los ficheros del directorio BASURA.
@echo off rem Autor: Saulo Barajas rem Fecha: Agosto de 1995 echo Este programa copia todos los ficheros del echo directorio actual a la unidad A: echo (si no cabe en un slo disquete, se pedirn ms) if not exist *.* goto Error attrib +a *.* :Proceso echo. echo ** Inserte un nuevo disquete en A: Pulse Enter para proseguir pause >nul xcopy *.* a:\ if errorlevel if errorlevel if errorlevel if errorlevel /m 5 goto 4 goto 1 goto 0 goto Error Proceso Error FinCopia
echo. echo No se pudo realizar la copia! goto final :FinCopia echo. echo El proceso de copia se complet con xito! :Final echo.
La primera lnea If detecta si el directorio actual est vaco produciendo un error. La orden Attrib enciende el bit de archivar a todos los ficheros del directorio actual. Seguidamente, COPIADIR.BAT pide un primer disquete en la unidad A:, luego comienza la copia de todos los ficheros a la unidad A:. El parmetro /m desactiva el bit de archivar a los ficheros copiados. Las siguientes lneas If comprueban el resultado de la orden. Las posibilidades son las siguientes: a) No hay suficiente espacio en el disco para copiar todos los ficheros. En este caso, se pide otro disquete y se reanuda la copia donde se qued; b) Se presion Ctrl+Pausa u ocurri un error de escritura en el disco. Se produce un mensaje y finaliza; c) La copia fue correcta. Esto significa que todos los ficheros han podido copiarse en uno o ms disquetes y por tanto, se ha cumplido el objetivo del programa.