• Introducción.
• Dispositivos.
• Redireccionamiento.
• Filtros.
• Copias de seguridad.
• Recuperación de datos.
• La memoria.
• Fichero Config.sys
• Variables de entorno.
1
2
Introducción.
El DOS es un sistema operativo que se gestiona introduciendo órdenes en el indicador del DOS. Una
orden es una palabra en inglés que expresa la operación a realizar. Todas las órdenes se activan o ejecutan
introduciendo su nombre (en mayúsculas o en minúsculas) en el indicador y pulsando la tecla Intro. Las
órdenes del DOS también se llaman mandatos o comandos.
Para que un ordenador funcione bajo el sistema operativo DOS hay que realizar la instalación de una
versión de dicho sistema operativo. Para realizar la instalación hay que seguir los siguientes pasos:
1. Introducir el disco 1 de la versión del DOS que se va a instalar (en nuestro caso la 6.22) en la unidad
A y encender el ordenador.
2. Leer detenidamente la pantalla que nos muestra. A continuación pulsar la tecla F3 dos veces para
salir del programa de instalación y crear las particiones que nos interesen. Si nuestro disco duro es
muy grande conviene crear fragmentos dentro del disco para instalar, por ejemplo, otros sistemas
operativos. Estos fragmentos se denominan particiones.
3. Ejecutar el comando FDISK para crear las particiones. En el menú que nos presenta elegiremos las
siguientes opciones:
Opción 4.
Opción 3.
Para eliminar la partición DOS. Puede haber particiones que no sean DOS (por ejemplo, las que
crea Windows NT en formato NTFS). Estas particiones sólo es posible eliminarlas desde el
sistema operativo que las creó. Desde el nuevo menú que aparece eliminaremos las particiones
dependiendo del tipo que sean. El tipo de la partición se nos ha mostrado al pulsar la opción 4 en
el primer menú. Cuando hayamos eliminado todas las particiones volveremos al primer menú.
Opción 1.
Desde éste nuevo menú podremos crear tantas particiones como deseemos. Elegiremos
la opción 1 para crear la partición primaria, asignando el tamaño que necesitemos para dicha
partición. Si elegimos todo el tamaño el sistema se reiniciará. Si no elegimos todo el tamaño
deberemos establecer, desde el primer menú, una partición activa, que es la partición desde la
que el ordenador va a cargar el sistema operativo cuando se encienda. Normalmente el sistema
operativo se instala en la partición primaria, por lo que ésta partición será la partición activa.
4. Cuando el ordenador reinicie se volverá a cargar el programa de instalación del DOS. Pulsaremos dos
veces F3 para salir de dicho programa.
3
5. A continuación tenemos que formatear la partición donde vamos a instalar el DOS. Formatear un
disco es prepararlo para que pueda ser utilizado, borrando los datos que contenga. Para formatear el
disco utilizaremos el comando FORMAT C:/S. La opción /S se utiliza para copiar los ficheros del
sistema (IO.SYS, MSDOS.SYS y DBLSPACE.BIN) y el procesador de órdenes COMMAND.COM
que se necesitan para que el DOS se pueda cargar cuando se encienda el ordenador. Cuando acabe de
formatear podremos escribir la etiqueta del disco.
8. Sacar el disco de la unidad A y reiniciar el ordenador desde el disco duro. A partir de ahora nuestro
ordenador estará preparado para realizar las operaciones que deseemos.
DATE. Se utiliza para ver y modificar la fecha del sistema. La sintaxis es:
DATE [fecha]
fecha es la nueva fecha que queremos asignar. Se escribe con el formato dd,mm,aa.
Si omitimos el parámetro fecha, DATE presenta la fecha actual y nos pide la nueva. Si no escribimos
la nueva fecha, mantiene la que tenía.
TIME. Se utiliza para ver y modificar la hora del sistema. La sintaxis es:
TIME [hora]
hora es la nueva hora que queremos asignar. Se escribe con el formato dd-mm-aa.
Si omitimos el parámetro hora, TIME presenta la hora actual y nos pide la nueva. Si no escribimos la
nueva hora, mantiene la que tenía.
CLS
La ayuda universal.
Hay un parámetro que lo admiten todas las órdenes del DOS, y que se utiliza para obtener una
pantalla de información que explica el funcionamiento y la sintaxis de ésa orden. Para ejecutar la
ayuda hay que escribir el nombre del comando seguido de los caracteres "/?". Por ejemplo: DATE /?.
Las órdenes internas son las que se almacenan en el fichero COMMAND.COM. Este fichero se almacena
en memoria cuando se carga el DOS al encender el ordenador; por lo tanto, las órdenes internas están
situadas en la memoria del ordenador, incluidas todas en el fichero COMMAND.COM.
Las órdenes externas se almacenan cada una en un fichero independiente dentro de un directorio del disco
duro. Para acceder a ellas hay que situarse en dicho directorio y escribir su nombre. A continuación, el
sistema las carga en memoria y procede a su ejecución.
4
La estructura arborescente del DOS.
El DOS es un sistema operativo de disco, cuya principal función es organizar los datos en los discos. Para
éste propósito, el DOS utiliza una estructura arborescente basada en tres elementos fundamentales:
unidades, directorios y ficheros.
Unidades.
Las unidades, discos o unidades de disco son dispositivos que se utilizan para almacenar datos de
forma permanente. Cada unidad de disco que tiene un ordenador es una unidad física. Si un
ordenador posee una unidad de disquete y un disco duro, tiene dos unidades físicas. Sin embargo, el
DOS sólo trabaja con unidades lógicas, que son las representaciones o los nombres que el DOS
utiliza para designar las unidades físicas. Las unidades lógicas se nombran con una letra de la A a la
Z (excluyendo las letras CH, LL y Ñ) seguida del carácter ":".
Las letras A y B se corresponden a las unidades de disquetes. Los discos duros empiezan a
nombrarse a partir de la letra C. Si un mismo disco duro tiene varias particiones, éstas empiezan a
nombrarse a partir de la letra C. Si tenemos una unidad de Cd-Rom, ésta empieza a nombrarse a
partir de la letra del último disco duro o de la última partición que tengamos.
La unidad activa es aquella en la que el usuario está situado en cada momento. La unidad activa es la
que viene representada en el indicador de órdenes. Para cambiar de unidad activa sólo hay que
escribir el nombre de la unidad que queremos activar, seguido del carácter ":".
Ficheros.
Todos los datos con los que trabaja el ordenador están almacenados en ficheros, y éstos se ubican en
disquetes o en discos duros. Los ficheros con los que trabaja el DOS deben tener asociados,
obligatoriamente, un nombre, un tamaño en bytes, la fecha y hora de creación o de la última
modificación y un atributo.
El nombre de un fichero está compuesto de tres partes: un nombre, una extensión y el carácter "." que
separa el nombre de la extensión. El nombre tendrá un máximo de ocho caracteres y la extensión un
máximo de tres. Los caracteres permitidos son las letras de la A a la Z (incluida la Ñ), los números
del 0 al 9 y cualquiera de los siguientes caracteres especiales: ^ $ ~ ! # % & { } ( ) @ - _ . El
resto de caracteres no se aceptan. Las siguientes palabras reservadas no se admiten como nombre de
un fichero: CON, AUX, PRN, CLOCK$, LPT1, LPT2, LPT3, NUL, COM1, COM2, COM3, COM4.
El nombre de un fichero tiene que describir el contenido del mismo y la extensión el tipo de fichero,
como, por ejemplo, FORMAT.COM, CONFIG.SYS, CARTA.TXT, CLIENTES.DAT.
Directorios.
Un directorio es una zona de la unidad que sirve para almacenar ficheros. Las unidades se dividen en
varios directorios donde se almacenan ficheros y que pueden contener, a su vez, otros directorios.
Los directorios sirven para organizar de una forma fácil y cómoda la gran cantidad de ficheros que
pueden contener las unidades.
El nombre de los directorios no lleva extensión y las reglas para formar un nombre son las mismas
que para los ficheros.
La organización de las unidades, los ficheros y los directorios en el sistema operativo DOS tiene una
estructura arborescente, porque adopta la forma de un árbol invertido. Toda unidad lógica tiene siempre
un directorio raíz, el cual es el primer directorio de la unidad, que sirve de partida en la estructura
arborescente. Este directorio se identifica mediante el carácter "\" (ALT + 92). En el directorio raíz se
5
pueden crear directorios y, a su vez, en éstos directorios es posible crear otros directorios, que reciben el
nombre de subdirectorios.
C:\
APUNTES
DOS
COMMAND.COM EDLIN.EXE
AUTOEXEC.BAT FORMAT.COM
CONFIG.SYS DISKCOPY.EXE
............................... ............................
SISTEMAS
ANALISIS.TXT
PROGRAM.TXT
UNID_TRA1.TXT
UNID_TRA2.TXT
UNID_TRA3.TXT
Para acceder a un directorio o a un fichero en una unidad, hay que indicar el lugar donde se encuentra. El
camino hasta el directorio o fichero se denomina trayectoria o ruta (path).
Ejemplos:
Si en el indicador del sistema queremos que se muestre la ruta del disco donde nos encontramos hay que
utilizar el comando PROMPT $P$G.
6
Comandos para la gestión de directorios.
Comando DIR.
Su sintaxis es:
Los parámetros unidad, directorio y archivo se utilizan para especificar la ruta sobre la que queremos
presentar información.
/S.
Visualiza el contenido de la ruta especificada y de todos sus subdirectorios. Una utilidad muy
importante de ésta opción es para buscar un archivo en el disco.
Ejemplo.
Si escribimos DIR ANALISIS.TXT /S el sistema nos dirá que no lo encuentra porque empieza a
realizar la búsqueda desde el directorio DOS.
Debemos escribir DIR \ANALISIS.TXT /S. De ésta forma, la búsqueda empezará a realizarla
desde el directorio raíz y la efectuará por todo el disco duro. Si hay más de un archivo con éste
nombre, nos presentará todos.
/P.
Si el contenido del directorio ocupa más de una pantalla, ésta opción detiene la salida en pantalla
cada 24 líneas, de forma que podamos consultar toda la lista de ficheros. Para continuar con la
visualización hay que pulsar cualquier tecla.
/W.
Visualiza el contenido del directorio a lo ancho de la pantalla, en cinco columnas. Sólo muestra
el nombre y la extensión de los ficheros, sin fecha, ni hora ni tamaño. Los directorios se
muestran entre conchetes.
/O [orden].
Permite definir el orden en que se muestra el contenido de un directorio. El orden puede ser:
N.
E.
7
Ordena por la extensión, de la A a la Z. Los directorios aparecen antes que los ficheros. Si el
orden es de la Z a la A, hay que utilizar -E. En este caso los directorios se muestran después
que los ficheros.
S.
Ordena según el tamaño de los ficheros, de menor a mayor. Los directorios se visualizan
antes que los ficheros. Si el orden lo queremos de mayor a menor, deberemos utilizar -S, en
cuyo caso los directorios se muestran después que los ficheros.
D.
Ordena los elementos en base a la fecha de cada uno de ellos, primero los más antiguos y
luego los más recientes. Para el orden inverso hay que utilizar -D.
G.
Permite agrupar los directorios, visualizando primero los directorios y luego los ficheros. El
orden inverso se consigue utilizando -G.
/A [atributo].
Visualiza los ficheros que cumplan con el atributo especificado. Los atributos pueden ser:
A.
Visualiza ficheros con formato de archivo activado. Con el atributo -A se visualizan los
ficheros que no tengan el atributo de archivo activado.
S.
Visualiza los ficheros de sistema. Con el atributo -S se visualizan los ficheros que no son de
sistema.
H.
Visualiza los ficheros ocultos. Para visualizar los ficheros que no están ocultos se utiliza -H.
R.
Visualiza los ficheros de sólo lectura. Si utilizamos -R se visualizan los ficheros que no son
de sólo lectura.
D.
Visualiza sólo los directorios. Si sólo se quieren visualizar los ficheros, hay que utilizar -D.
/B.
Visualiza los ficheros sin incluir tamaño, fecha y hora. También se muestran los directorios,
aunque no presenta ninguna marca que los diferencie de los ficheros. El listado lo realiza
verticalmente. Si se combinan los parámetros /B y /W sólo se tiene en cuenta /B.
/L.
8
/C[H].
Directorios . y .. .
Cuando visualizamos el contenido de un directorio, excepto el directorio raíz, siempre aparecen dos
elementos cuyos nombres son un punto (.) y dos puntos consecutivos (..), que son identificados como
directorios.
El símbolo . es una notación abreviada del directorio activo, es decir, se utiliza como sinónimo del
directorio que en ese momento sea el directorio activo.
El símbolo .. es un sinónimo del directorio padre del directorio activo. El directorio padre de un
directorio es el que está un nivel por encima en la cadena arborescente.
Comando CD.
Se utiliza para cambiar el directorio activo o visualizar el nombre del directorio activo. También se
puede utilizar la orden CHDIR (CD es una abreviatura de ésta orden).
Su sintaxis es:
CD [{unidad, trayectoria}]
Comando MD.
Su sintaxis es:
MD directorio.
directorio es el nombre del directorio que queremos crear. No se puede crear más de un directorio al
mismo tiempo.
Comando RD.
Se utiliza para borrar directorios del disco. También se conoce como comando RMDIR.
Su sintaxis es:
RD directorio.
Directorio es el nombre del directorio a borrar. Sólo se puede borrar un directorio a la vez.
Para borrar un directorio hay que tener en cuenta las siguientes premisas:
9
Un directorio sólo se puede borrar si está vacío. Si un directorio contiene ficheros o
directorios habrá que eliminarlos antes de borrar el directorio.
La orden RD no puede borrar el directorio activo. Para borrar un directorio hay que
estar situados en un directorio distinto.
El directorio no se borrará si tiene algún fichero con los atributos de sólo lectura, oculto
o de sistema.
Comando DELTREE.
Sirve para borrar ficheros y directorios. Se diferencia del comando RD en que con ésta orden se
pueden eliminar directorios que no estén vacíos y que contengan ficheros o subdirectorios.
Su sintaxis es:
Este comando borra los ficheros que tengan el atributo de sólo lectura, oculto o de sistema.
Al igual que ocurre con el comando RD, con éste comando no se puede borrar el directorio activo.
Comando MOVE.
Se utiliza para cambiar el nombre de un directorio. También se utiliza para mover ficheros, opción
que veremos más adelante.
Su sintaxis es:
Comando TREE.
Su sintaxis es:
10
Con la opción /F se visualiza, además, el nombre de todos los ficheros incluidos en cada uno de los
directorios de la estructura arborescente.
Con la opción /A los caracteres gráficos (las rayas) se convierten en caracteres normales. Esta opción
se suele utilizar cuando redireccionamos la salida a la impresora.
C:
EVAL EVAL
md cartas
md apuntes
md ficheros
md cartas\postales
md cartas\comerci
md apuntes\analisis
md apuntes\sistemas
md apuntes\program
md apuntes\sistemas\eval1
md apunetes\sistemas\eval2
tree |more
3. Desde el directorio raíz, cambiar el nombre del directorio APUNTES por el de INSTI.
4. Desde el directorio raíz, cambiar el nombre del directorio EVAL2 por el de EVAL3.
11
5. Desde el directorio SISTEMAS, cambiar el nombre del directorio EVAL3 por el de
EVAL2.
cd insti\sistemas
6. Desde el directorio SISTEMAS, ver la estructura arborescente del disco duro desde el
directorio raíz.
tree \ |more
rd eval2
8. Desde el directorio raíz, borrar los directorios CARTAS, con todos sus subdirectorios, y
FICHEROS, pidiendo confirmación.
cd \
tree |more
10. Desde el directorio raíz, borrar el directorio INSTI con todos sus subdirectorios, sin
pedir confirmación.
deltree /y insti
11. Desde el directorio raíz, ver la estructura arborescente del disco duro.
tree |more
Todos los datos almacenados en las unidades de almacenamiento se guardan en ficheros. Existen
muchos tipos de ficheros, pero se puede realizar una clasificación general en dos tipos de ficheros:
Ficheros de datos. Son ficheros que tienen información para el usuario o que han sido
creados por éste.
Las extensiones de los archivos suelen definir el tipo y la función de los mismos. Las más utilizadas
son las siguientes:
BAT. Es un fichero ejecutable por lotes (BATch). Un fichero por lotes es aquél en el
que se ejecutan automáticamente varias órdenes seguidas, sin intervención del usuario.
12
BAK. Fichero de seguridad (BAcKup). Contienen la versión antigua de un fichero
modificado.
DBF. Fichero con una base de datos (Data Base File) del programa Dbase.
OVL, OVR. Fichero OVeRLay. Contiene parte del código de un programa y es llamado
por un fichero EXE o COM.
Los caracteres comodines se utilizan para identificar varios ficheros con una única trayectoria. Se
llaman caracteres comodines porque sustituyen cualquier carácter válido en el nombre del fichero.
Sólo se pueden utilizar en los nombres de los ficheros, no en las trayectorias de los directorios.
Cuando un nombre de fichero tiene algún carácter comodín, se dice que es una plantilla de ficheros,
pues sirve como plantilla para designar los nombres de varios ficheros.
Carácter "?".
Representa cualquier carácter válido en el nombre de un fichero, pero sólo un carácter. Por
ejemplo, supongamos que en el disco tenemos tres ficheros llamados PROGRAMA.BAK,
PROGRAMA.BAS y PROGRAMA.BAT. Para visualizar los tres ficheros con una única orden
DIR hay que escribir: DIR PROGRAMA.BA? ó DIR PROGRAMA.B??. Si escribimos DIR
PROGRAMA.B? no visualizará nada, pues el sistema supone que la extensión a visualizar tiene
sólo dos letras, ya que el carácter "?" sustituye sólo a una letra.
Carácter "*".
Con el carácter comodín "*", se llenan todos los caracteres hasta completar los ocho caracteres
del nombre y los tres de la extensión. Por ejemplo, si escribimos DIR PR*.*, el sistema podría
visualizar los siguientes archivos: PRINT.EXE, PROGRAMA.BAK, PROGRAMA.BAS,
PROGRAMA.BAT.
13
Ejemplos de plantillas:
DIR *.BAT
2. Plantilla de todos los ficheros con un nombre de tres letras y cualquier extensión.
DIR ???.*
DIR *.*
4. DIR FICH*.D??
Visualiza todos los ficheros que comiencen con las letras FICH y tengan una extensión de tres
letras, cuya primera sea la letra D.
Comando TYPE.
Visualiza el contenido de un fichero. Este fichero deberá ser un fichero de texto, creado según el
código ASCII. Si el fichero que se visualiza no es de texto o no está creado según el código ASCII,
su contenido será ilegible.
La sintaxis es:
TYPE fichero.
En el nombre o la trayectoria del fichero no se pueden utilizar los caracteres comodines, pues el
comando TYPE sólo puede visualizar el contenido de un fichero.
Al visualizar el contenido de un fichero, puede ocurrir que ocupe más de una pantalla, por lo que
únicamente podremos consultar las últimas 25 líneas del mismo. Hay dos métodos para detener la
visualización del contenido de un fichero:
|MORE. La visualización del contenido del fichero se detiene cuando la pantalla está
llena. Para continuar con la visualización hay que pulsar cualquier tecla. El carácter "|" se
genera pulsando conjuntamente las teclas AltGr y 1 del teclado alfanumérico o las teclas Alt
y 124 del teclado numérico.
Comando PRINT.
La orden PRINT funciona mediante una cola de impresión. Una cola de impresión es una lista que
contiene todos los ficheros que se van a imprimir. El sistema operativo imprime un archivo y, cuando
la impresión finaliza, empieza a imprimir el siguiente archivo que aparece en la cola.
La sintaxis es:
14
PRINT. Visualiza los ficheros que están en la cola de impresión.
/D:dispositivo.
Indica el nombre del dispositivo de impresión. Los nombres válidos son PRN, LPT1, LPT2,
LPT3, AUX, COM1, COM2, COM3 y COM4. Los dispositivos LPTn son los puertos paralelo y
son los más rápidos. Los dispositivos COMn son los puertos serie y son los más lentos. Cuando
éste parámetro se omite y es la primera vez que se imprime, aparece un mensaje pidiendo el
dispositivo en el que se imprimirá. Si pulsamos INTRO, se asume el dispositivo PRN.
/B:tamaño.
Indica el tamaño en bytes del buffer de impresión. El valor por defecto es 512 bytes y el rango
permitido es de 512 a 16.384 bytes. Al aumentar el tamaño del buffer, aumenta la velocidad de
impresión pero se pierde memoria RAM que puede hacer falta para la ejecución del resto de
tareas.
/U:ticks.
Indica el número de impulsos de reloj que la orden PRINT espera hasta que la impresora esté
lista. Si la impresora no está disponible dentro del lapso especificado, los ficheros no se
imprimirán. El valor por defecto y valor mínimo es 1. El valor máximo es 255. El valor de cada
impulso de reloj depende del microprocesador del ordenador.
/M:ticks.
Especifica el número de impulsos de reloj que puede tardar la orden PRINT en imprimir cada
carácter. El rango de valores permitidos es de 1 a 255. El valor por defecto es 2.
/S:ticks.
/Q:tamaño_cola.
Indica el número de ficheros que puede almacenar la cola de impresión. El rango de valores es
de 4 a 32. El valor por defecto es 10.
/T.
Borra todos los ficheros de la cola. El fichero que se está imprimiendo termina su impresión.
/C.
Borra de la cola de impresión tanto el fichero que precede al parámetro /C (si es que hay alguno)
como todos los ficheros siguientes hasta que aparece el parámetro /P (si es que aparece), en cuyo
caso /P se aplica al fichero que precede a dicho parámetro.
/P.
Añade a la cola de impresión tanto el fichero que precede al parámetro /P (si es que hay alguno)
como todos los ficheros siguientes hasta que aparece el parámetro /C (si es que aparece), en cuyo
caso /C se aplica al fichero que precede a dicho parámetro.
Los parámetros /D, /B, /U, /M, /S y /Q sólo pueden introducirse la primera vez que se ejecuta la
orden PRINT.
15
Cada vez que finaliza la impresión de un archivo, se realiza un salto de página y se continúa con el
siguiente archivo de la cola.
Si se imprimen archivos desde la unidad de disquete, no se puede sacar el disco hasta que no termine
la impresión de todos los ficheros.
Ejemplo.
Comando REN.
Se utiliza para cambiar el nombre de un fichero. También se puede utilizar la orden RENAME.
La sintaxis es:
Si se especifica una trayectoria en el nombre del fichero antiguo, el nombre del fichero
nuevo no puede tener una trayectoria distinta. Deberá tener la misma trayectoria o ninguna, en
cuyo caso asumirá la trayectoria del fichero antiguo.
La sintaxis es:
Comando COPY.
La sintaxis es:
La opción /V activa el modo de verificación durante el proceso de copia. Cuando está activo el
proceso de verificación, el DOS comprueba que todas las operaciones de lectura y escritura se han
efectuado correctamente.
16
Hay cuatro formas posibles de ejecutar la orden COPY, dependiendo del segundo parámetro:
Ejemplo.
Ejemplo.
Ejemplo.
COPY fichero.
Ejemplos.
Al realizar copias de archivos hay que tener en cuenta las siguientes consideraciones:
Ejemplo.
17
La orden COPY CARTA?.* CARTA.TXT produciría el mismo resultado que la orden COPY del
ejemplo anterior.
Comando MOVE.
Se utiliza para mover ficheros. Mover un fichero significa copiar el fichero en la posición de destino
y borrarlo de la posición de origen.
Sintaxis 1:
El nombre y la posición del fichero1 se cambian por el nombre y la posición del fichero2.
Ejemplo.
C:\> MOVE AUTOEXEC.BAT \DOS, el fichero AUTOEXEC.BAT se borra del directorio raíz
y se crea en el directorio \DOS.
Sintaxis 2:
Los nombres de los ficheros pueden incluir caracteres comodines. Si sólo incluimos un fichero
en el primer parámetro el sistema lo toma como si estuviéramos utilizando la sintaxis 1.
Comando FC.
Existen dos tipos de comparaciones: ASCII (para ficheros de texto) y binaria (para ficheros binarios).
Tanto los ficheros ASCII como los ficheros binarios están formados por un conjunto de bytes. En los
ficheros ASCII, los bytes se interpretan según el código ASCII, mientras que en los ficheros binarios
los bytes se interpretan como instrucciones directas al microprocesador. Los ficheros ASCII son los
ficheros de texto y los ficheros binarios son los ficheros con la extensión COM, EXE, SYS, OBJ,
LIB o BIN. Existe un tercer tipo de ficheros, que no son ASCII puros ni binarios puros, como, por
ejemplo, los documentos generados por un procesador de textos, que interpretan sus caracteres como
código ASCII pero añaden códigos de control propios (subrayado, negrita, tipo de letra, etc.), que
sólo entiende el procesador de textos que los creó.
FC fichero1 fichero2 [/L] [/B] [/C] [/A] [/LBnúmero] [/N] [/T] [/W] [/número]
Por defecto, el comando FC intenta averiguar el tipo de los ficheros a comparar (ASCII o binarios),
actuando en cada caso de forma diferente.
/L.
La comparación se realiza línea a línea. Si existe alguna discordancia en los caracteres de alguna
línea, la orden FC muestra el valor de ésa línea, de la anterior y de la siguiente de los dos
ficheros.
18
/B.
Se realiza una comparación binaria, en la que se comparan uno a uno los bytes de cada fichero
(el primer byte del fichero1 con el primer byte del fichero2, el segundo del fichero1 con el
segundo del fichero2, y así sucesivamente). Si los bytes comparados no son iguales, la orden FC
muestra una línea con la posición del byte donde surgió la diferencia y el valor del byte en cada
fichero.
Ejemplo.
El valor A4 indica en qué byte del fichero se ha hallado la diferencia. 59 es el valor que tiene el
fichero1 en el byte A4 y 4B es el valor que tiene el fichero2 en el byte A4.
/C.
Considera las letras minúsculas iguales que las mayúsculas. Por defecto, las letras minúsculas y
mayúsculas son distintas.
/A.
Se visualiza únicamente la primera y última línea de un bloque con más de dos líneas diferentes.
/LBnúmero.
Define el número máximo de líneas consecutivas diferentes que puede gestionar el comando FC.
Por defecto, el buffer de líneas es de 100. Los ficheros que difieren en un número de líneas
consecutivas mayor que el tamaño de éste buffer, abortan la comparación.
/N.
/T.
/W.
/número.
Especifica el número de líneas que tienen que coincidir después de encontrar una diferencia. El
valor por defecto es 2. Si ponemos /20, indica que después de cada diferencia tiene que haber 20
líneas iguales. Si se encuentra una diferencia antes de la línea 20, la orden FC muestra todas las
líneas a partir de la que ha encontrado la diferencia, y hasta la 20, como si fueran distintas.
Comando ATTRIB.
19
Sólo lectura (Read-Only). Sirve para proteger el fichero de forma que sólo pueda leerse,
pero no borrarse ni modificarse. Este atributo se especifica con +R, si el atributo sólo lectura está
activado, o -R, si está desactivado.
Oculto (Hidden). Sirve para ocultar un fichero, evitando que sea procesado por las
órdenes habituales del DOS. Cuando un fichero está oculto, no aparece en los listados de la
orden DIR, ni se puede borrar con DEL, ni se puede copiar con COPY, ni permite borrar el
directorio donde se encuentre. Si el fichero oculto es un fichero de texto, se puede imprimir con
la orden TYPE y editar con la orden EDIT. Los ficheros ejecutables que estén ocultos sí se
pueden ejecutar. Para ocultar un archivo se utiliza +H y para quitar el atributo de oculto -H.
Sistema (System). Este atributo identifica los ficheros de sistema. Los ficheros de
sistema son ficheros especiales que se utilizan durante la inicialización del DOS. Hay dos
ficheros de sistema: IO.SYS y MSDOS.SYS. Los ficheros de sistema actúan como si fueran
ficheros ocultos, con la diferencia de que los ficheros ejecutables que tengan el atributo de
fichero de sistema no se pueden ejecutar. Para activar el atributo de sistema a un fichero se
utiliza +S y para desactivarlo -S.
La sintaxis es:
Si se utiliza la orden ATTRIB sin parámetros, se visualizan los attributos de todos los
ficheros del directorio activo.
Ejemplo.
C:\>ATTRIB *.SYS /S visualiza los atributos de los ficheros con la extensión SYS del directorio
raíz y los atributos de los ficheros con la extensión SYS de los subdirectorios del directorio raíz.
Comando XCOPY.
Copia ficheros y directorios, incluyendo los subdirectorios que cuelguen de los directorios
especificados, si es que existen.
La sintaxis es:
XCOPY fichero [{unidad, directorio, fichero}] [/S[/E]] [/A] [/M] [/D:fecha] [/P] [/V] [/W]
20
Si es una trayectoria de directorio, los ficheros se copian en dicho directorio. Si el
directorio no existe nos pregunta si queremos realizar la copia en un archivo o en un
directorio. Si decimos que en un archivo, nos crea el nuevo archivo, con la salvedad de que
si hemos utilizado una plantilla de ficheros en el primer parámetro, va a realizar la copia de
todos los ficheros en el mismo y nos va preguntando si queremos sobreescribir en dicho
fichero, por lo que al terminar la copia éste fichero sólo contendrá un fichero de todos los
que hemos copiado. Si decimos que la copia la realice en un directorio, el sistema creará
dicho directorio y los archivos del primer parámetro se copiarán en él.
/S y /E.
Copia los ficheros del directorio especificado y los ficheros de los subdirectorios incluidos en
dicho directorio. Los directorios que estén vacíos no se copian. Si se utiliza la opción /E, se
copian los directorios vacíos.
/A.
Copia los ficheros que tienen activado el atributo de archivo y, después de copiarlos, los ficheros
siguen teniendo activado el atributo de archivo.
/M.
Igual que la opción /A, pero después de la copia desactiva el atributo de archivo de los ficheros
copiados.
/D:fecha.
Copia los ficheros con fecha igual o posterior a la fecha indicada. El formato de la fecha deber
ser el mismo que el mostrado por la orden DATE.
/P.
/V.
/W.
Realiza una pausa antes de comenzar la copia que puede ser útil para cambiar de disquete.
Comando REPLACE.
La sintaxis es:
Si no se utiliza ninguna opción, se reemplazan los ficheros de la trayectoria destino que tengan el
mismo nombre de los ficheros de la trayectoria origen.
21
En el segundo parámetro no hay que especificar el nombre de los ficheros a reemplazar, pues deben
ser los mismos que los indicados en la trayectoria origen. Si los ficheros especificados en trayectoria
origen no existen en trayectoria destino no se reemplazará ningún archivo.
/A.
/P.
Visualiza un mensaje que confirma la sustitución de cada fichero que va a ser reemplazado.
/R.
Sustituye los ficheros de sólo lectura. Si no se especifica /R, cualquier intento para sustituir un
fichero de sólo lectura provoca un error y aborta el proceso.
/S.
Amplía la sustitución a todos los ficheros con el mismo nombre que se encuentren en
subdirectorios de trayectoria destino.
/U.
Sustituye exclusivamente los ficheros de trayectoria destino que sean más antiguos (con una
fecha anterior) que los ficheros de trayectoria origen.
/W.
Comando EDIT.
Carga en memoria el editor de textos a pantalla completa del DOS, que permite visualizar, crear,
modificar e imprimir el contenido de ficheros de texto ASCII.
La sintaxis es:
Si ejecutamos EDIT sin parámetros, carga el editor y presenta una pantalla para acceder al sistema de
ayuda. Cuando sale de la pantalla de ayuda o de la pantalla inicial, entra en estado de edición para
introducir el texto deseado. Cuando salga del editor nos pedirá, si deseamos guardar el texto, el
nombre del fichero, pudiendo almacenarlo en un directorio existente de una unidad de disco.
Si ejecutamos EDIT con un nombre de archivo y no existe, se crea. Si el archivo existe, se presenta
en pantalla.
/H.
/B.
22
Carga el editor visualizándolo en blanco y negro. Se utiliza en ordenadores con sistemas de
vídeo monocromo cuando la pantalla del editor no se ve correctamente o en sistemas de vídeo a
color para cargar el editor en blanco y negro.
/G.
Sólo sirve para ordenadores con tarjeta de vídeo CGA, y permite actualizar la pantalla con un
método más rápido.
/NOHI.
Carga EDIT utilizando únicamente 8 colores y no los 16 colores habituales. Esta opción se
utiliza cuando el sistema no es capaz de resaltar las letras de los nombres de menú.
md prueba
cd prueba
edit texto1.txt
edit texto2.txt
edit texto3.txt
edit texto4.txt
edit texto5.txt
dir
dir \prueba1
5. Desde el directorio PRUEBA, copiar todos los archivos con la extensión TXT del
directorio PRUEBA1.
copy \prueba1\*.txt
6. Combinar todos los ficheros con la extensión TXT, utilizando la suma, en un sólo
fichero, llamado TEXTO.TXT.
7. Visualizar por pantalla el contenido de todos los archivos con la extensión TXT.
Recordar que hay que ir uno a uno.
type texto1.txt
23
type texto2.txt
type texto3.txt
type texto4.txt
type texto5.txt
type texto.txt
del texto.txt
edit \prueba1\texto1.txt
10. Desde el directorio PRUEBA, comparar los ficheros TEXTO1.TXT de los directorios
PRUEBA y PRUEBA1, sin utilizar ninguna opción. Volver a comparar los ficheros utilizando
las opciones /L y /B.
fc texto1.txt \prueba1\texto1.txt
fc texto1.txt \prueba1\texto1.txt /l
fc texto1.txt \prueba1\texto1.txt /b
11. Desde el directorio PRUEBA, borrar el directorio PRUEBA1 con todos sus archivos,
pidiendo confirmación.
deltree \prueba1
md lleno
md vacio
13. Copiar todos los archivos del directorio PRUEBA en el directorio LLENO.
14. Copiar todos los archivos y subdirectorios del directorio PRUEBA, excepto los vacíos,
en el directorio \PRUEBA1. Cuando nos pregunte si queremos un archivo o un directorio,
responderemos un archivo. Visualizar el contenido del archivo \PRUEBA1 para ver qué ha
ocurrido. Observar que ha creado un directorio LLENO con un sólo archivo PRUEBA1, con el
mismo contenido que el archivo \PRUEBA1. Borrar el archivo \PRUEBA1 y el directorio
LLENO.
xcopy . \prueba1 /s
del \prueba1
deltree \lleno
24
15. Copiar todos los archivos y subdirectorios del directorio PRUEBA, excepto los vacíos,
en el directorio PRUEBA1. Cuando nos pregunte si queremos un archivo o un directorio,
responderemos un directorio.
xcopy . \prueba1 /s
tree \prueba1
deltree \prueba1
18. Copiar todos los archivos y subdirectorios del directorio PRUEBA, incluyendo los
vacíos, en el directorio PRUEBA1. Cuando nos pregunte si queremos un archivo o un directorio,
responderemos un directorio.
xcopy . \prueba1 /e
tree \prueba1
20. Desde el directorio raíz, borrar el directorio PRUEBA1 y todo su contenido, pidiendo
confirmación.
deltree \prueba1
21. Ver los atributos de los archivos con la extensión TXT del directorio PRUEBA.
attrib *.txt
22. Copiar todos los archivos del directorio PRUEBA en el directorio \PRUEBA1,
desactivando el atributo de archivo de los ficheros copiados.
xcopy . \prueba1 /m
23. Ver los atributos de los archivos con la extensión TXT del directorio PRUEBA.
attrib *.txt
edit texto1.txt
edit texto2.txt
25. Ver los atributos de los archivos con la extensión TXT del directorio PRUEBA.
attrib *.txt
26. Copiar todos los archivos del directorio PRUEBA en el directorio \PRUEBA1,
desactivando el atributo de archivo de los ficheros copiados. Observar que sólo copia los
archivos que se han modificado y que, por lo tanto, tienen activado el atributo de archivo.
xcopy . \prueba1 /m
25
27. Cambiar el nombre a todos los archivos con la extensión TXT por el nombre
CARTAn.TXT, utilizando sólo una instrucción.
28. Desde el directorio raíz, borrar todo el contenido de los directorios PRUEBA y
PRUEBA1, pidiendo confirmación.
cd ..
md cartas
cd cartas
edit carta1.txt
edit carta2.txt
edit carta3.txt
edit carta4.txt
edit carta5.txt
dir \cartas1
5. Desde el directorio CARTAS, copiar todos los archivos con la extensión TXT del directorio
CARTAS1.
copy \cartas1\*.txt
deltree \cartas1
md lleno
md vacio
copy . lleno
26
9. Copiar todos los archivos y subdirectorios, excepto los vacíos, en el directorio \CARTAS1. Cuando
nos pregunte si queremos un archivo o un directorio, responderemos un directorio.
xcopy . \cartas1 /s
10. Desde el directorio CARTAS, borrar el directorio CARTAS1 y todo su contenido, pidiendo
confirmación.
deltree \cartas1
11. Desde el directorio raíz, copiar todos los archivos y subdirectorios del directorio CARTAS,
incluyendo los vacíos, en el directorio \CARTAS1. Cuando nos pregunte si queremos un archivo o
un directorio, responderemos un directorio.
cd \
12. Desde el directorio raíz, borrar el directorio CARTAS1 y todo su contenido, pidiendo confirmación.
deltree cartas1
13. Ver los atributos de todos los archivos con la extensión TXT del directorio CARTAS.
attrib cartas\*.txt
14. Desde el directorio raíz, copiar todos los archivos del directorio CARTAS en el directorio
\CARTAS1, desactivando el atributo de archivo de los ficheros copiados.
15. Desde el directorio raíz, ver los atributos de todos los archivos con la extensión TXT del directorio
CARTAS.
attrib cartas\*.txt
16. Editar y modificar el contenido de los archivos CARTAS1.TXT y CARTAS2.TXT del directorio
CARTAS.
edit cartas\cartas1.txt
edit cartas\cartas2.txt
17. Desde el directorio CARTAS, ver los atributos de todos los archivos con la extensión TXT.
cd cartas
attrib *.txt
18. Desde el directorio CARTAS, copiar todos los archivos con la extensión TXT en el directorio
\CARTAS1, desactivando el atributo de archivo de los ficheros copiados. Observar que sólo se han
copiado los archivos que se han modificado (CARTAS1.TXT y CARTAS2.TXT) y que, por lo tanto,
tienen activado el atributo de archivo.
19. Desde el directorio raíz, cambiar el nombre de todos los archivos con la extensión TXT del directorio
CARTAS por el nombre TEXTOn.TXT, utilizando sólo una instrucción.
27
cd ..
Observar que en el segundo parámetro (texto?.*) no hay que poner la trayectoria, porque el comando
ren toma como trayectoria destino la misma trayectoria que la especificada en origen. Si se pone una
trayectoria destino se produce un error, aunque sea la misma que la especificada en origen.
20. Desde el directorio raíz, borrar los directorios CARTAS y CARTAS1 y todo su contenido, pidiendo
confirmación.
En todo disco hay que distinguir una estructura física y una estructura lógica.
La estructura física se crea cuando se construye el disco en la fábrica y lo divide en caras, pistas o
cilindros y sectores.
La estructura lógica se crea por el usuario al formatear el disco con la orden FORMAT. El DOS almacena
los datos según la estructura lógica, por lo que siempre hay que formatear un disco antes de usarlo.
Algunos fabricantes anuncian los disquetes con una capacidad mayor de la que realmente tienen. Por
ejemplo, los disquetes de 1.44MB como 2MB. No se trata de ningún truco publicitario. Lo que ocurre es
que los fabricantes se refieren a la capacidad sin formatear. Cada sector de un disco ocupa realmente algo
más de los 512 bytes de información que quedan libres para el usuario. En cada sector hay campos de
identificación (campos GAP) y campos de comprobación de datos (campos CRC) que consumen espacio
no aprovechable por el usuario.
Sector de arranque.
Se localiza siempre en el primer sector (sector 0) de todo disco y ocupa únicamente un sector
(512 bytes). Este sector de arranque se utiliza principalmente para dos tareas:
No es disco de sistema
Pulse cualquier tecla para continuar
Almacena una tabla con información relativa al disco: número de caras, número de
pistas, número de sectores por pista, tamaño del sector, etiqueta del disco, número de serie,
etc. Esta tabla se conoce con el nombre de BPB (BIOS Parameter Block) y los
programadores suelen utilizarla para averiguar las principales características de un disco.
La FAT.
28
propósito. Imaginemos que en un disco de 1.44 MB totalmente lleno tenemos almacenados 10
archivos de 144 Kb cada uno. Si borramos cinco ficheros tendríamos la mitad del disco
disponible para guardar información, pero éste espacio disponible estaría dividido en bloques de
144 Kb, por lo que si quisiéramos almacenar un archivo que ocupase, por ejemplo, 145 Kb, no
sería posible almacenarlo en éste disco.
Para evitar los problemas del almacenamiento secuencial, el DOS utiliza los clusters, también
llamados unidades de localización o unidades de asignación. Un cluster es un conjunto de uno o
más sectores contiguos.
Los clusters solucionan el problema del almacenamiento de los ficheros en los discos, pues,
aunque los clusters se componen de sectores contiguos, los ficheros se almacenan en clusters que
no necesitan ser contiguos. De ésta forma, para grabar el fichero del ejemplo anterior que
ocupaba 145 Kb, el DOS habría buscado los clusters libres y habría encontrado un bloque
contiguo de 144 Kb y utilizaría el siguiente cluster libre para almacenar el resto (1Kb).
El DOS utiliza la FAT (File Allocation Table o Tabla de Localización de Ficheros) para saber
cómo está formada la cadena de clusters de un fichero y para saber en qué cluster continúa un
determinado fichero. La FAT es una tabla formada por elementos que se corresponden con cada
uno de los clusters del disco. Es decir, el elemento situado en la posición 40 de la Fat controla el
cluster 40 del disco, que a su vez corresponde a unos determinados sectores del disco.
Cada elemento de la FAT puede tener uno y sólo uno de los tres valores siguientes:
Una marca especial (el valor 0) para indicar que es un cluster libre. Esta marca se utiliza
cuando los sectores de ése cluster están libres y no almacenan ningún dato.
Una marca especial para indicar que es el último cluster de un fichero. Si aparece ésta
marca quiere decir que los sectores de ése cluster almacenan la parte final del fichero.
Cualquier otro valor numérico se interpreta como el cluster siguiente. Si el elmento 135
de la FAT tiene el valor 164, quiere decir que el contenido del fichero continúa en los
sectores del cluster 164.
La FAT es tan importante que cada disco suele tener dos copias de la misma para poder
recuperar los datos cuando se corrompe alguna de ellas.
El directorio raíz.
El directorio raíz ocupa un número fijo de sectores y se sitúa detrás del último sector de la FAT.
En éstos sectores se almacena una entrada de 32 bytes por cada elemento que posee el directorio
raíz.
Para el DOS, un directorio es un fichero especial que tiene activado el atributo de directorio y
cuyo contenido son las entradas (los 32 bytes) correspondientes a cada elemento que se almacena
en dicho directorio. Por ejemplo, si el directorio C:\TEXTOS contiene los ficheros FICH1.TXT
y FICH2.TXT, quiere decir que en el directorio raíz existe un fichero llamado TEXTOS cuyo
contenido son 64 bytes (32 bytes para la entrada de FICH1.TXT y 32 bytes para la entrada de
FICH2.TXT). Cuando el DOS ejecuta la orden DIR C:\TEXTOS, lo que hace realmente es leer
el contenido del fichero C:\TEXTOS e interpretar cada una de sus entradas. Por lo tanto, cada
elemento del directorio tiene una entrada en el fichero, que se denomina entrada de directorio.
29
Una entrada de directorio son 32 bytes que almacenan los principales parámetros relativos a un
elemento de directorio. Los 32 bytes de cada entrada de directorio almacenan la siguiente
información:
Los atributos del elemento (archivo, sólo lectura, oculto, sistema o directorio).
Las entradas de directorio existen en todos los directorios de los discos, no sólo en el directorio
raíz.
El resto del disco a partir de la zona del directorio raíz se reserva como espacio de datos para
almacenar los ficheros del usuario. El tamaño de éste área de datos suele representar más del
98% del espacio total del disco.
Cuando se formatea un disco y se crea la estructura lógica (sector de arranque, FAT, directorio
raíz y espacio de datos del usuario), los sectores del espacio de datos del usuario se dividen en
clusters que se numeran secuencialmente. Por ejemplo, si un disco tiene 700 sectores y posee
clusters con 2 sectores contiguos, entonces existen 350 clusters. El cluster 1 corresponde a los
sectores 1 y 2; el cluster 2 a los sectores 3 y 4, y así sucesivamente.
Funcionamiento de la FAT.
Cuando el DOS tiene que leer en el disco el contenido de un fichero, por ejemplo, al ejecutar la
orden TYPE FICHERO.TXT, se realizan los siguientes pasos:
3. Lee el elemento número 23 de la FAT. Este elemento puede tener dos valores: la marca
que indica que es el último cluster, en cuyo caso se termina la operación, o bien un valor
numérico que indica el cluster donde continúa el fichero, leyéndose los sucesivos clusters
hasta que encuentre la marca de último cluster.
Cuando el DOS tiene que escribir un fichero, por ejemplo, al copiar un fichero con la orden
COPY, se realizan los siguientes pasos:
1. Se busca en la FAT un elemento que esté marcado como libre, es decir, un elemento
cuyo valor sea la marca de cluster libre.
30
2. Cuando se encuentra (por ejemplo, cluster 189), se crea una entrada de directorio para el
fichero. En ésta entrada de directorio se asigna al campo con el cluster de comienzo el valor
del cluster libre que se acaba de encontrar (el valor 189).
3. Se copia el contenido del fichero en los sectores correspondientes al cluster 189. Pueden
ocurrir dos casos:
Comando FDISK.
Antes de formatear un disco duro es preciso particionarlo. Las particiones no se pueden crear en los
disquetes. Una partición es un conjunto de cilindros (un cilindro es un conjunto de pistas) contiguos
que forman una unidad independiente. Las particiones sirven para almacenar distintos sistemas
operativos y para dividir la unidad física de disco duro en varias unidades lógicas.
El proceso de instalación del DOS ejecuta automáticamente el comando FDISK si el disco duro no
está particionado, así como la orden FORMAT si el disco duro no está formateado.
El DOS sólo puede gestionar dos particiones, aunque en un disco duro puede haber un máximo de
cuatro particiones, porque la tabla interna que almacena los valores de todas las particiones (situada
en el primer sector del disco duro, el sector de arranque) sólo tiene espacio para cuatro entradas.
En todo momento tiene que haber una y sólo una partición activa, que será la que tome el control del
sistema cuando se arranca el ordenador. Cuando un ordenador tiene instalados varios sistemas
operativos, basta con cambiar la partición activa para que el ordenador arranque en el sistema
operativo deseado.
Las dos particiones que puede gestionar el DOS han de ser la partición primaria y la partición
extendida.
La partición primaria del DOS es obligatoria y designa la partición en la cual se almacenan los
ficheros de arranque del sistema. La partición primaria ha de ser la partición activa - siempre que no
exista otro sistema operativo en el mismo disco duro -, pues es la partición que se utilizará para
arrancar el DOS. Si el disco duro sólo tiene una partición, ésta ha de ser la partición primaria.
La partición extendida sirve para dividir el espacio del disco duro en las unidades lógicas que el
usuario necesite. Las unidades lógicas de la partición extendida no son particiones, sino divisiones
que el DOS reconoce como distintas unidades lógicas.
Durante el proceso de inicialización del DOS, primero asigna una letra de unidad a la partición
primaria de cada disco duro y luego una letra a cada una de las unidades lógicas de la partición
extendida. Por ejemplo, vamos a suponer que un ordenador tiene dos discos duros con idéntica
estructura: cada disco duro tiene una partición primaria y una partición extendida que se divide en
dos unidades lógicas. En este caso, el DOS asignaría las unidades lógicas de la siguiente forma: la
unidad C sería la partición primaria del primer disco duro, la unidad D la partición primaria del
segundo disco duro, las unidades E y F serían las unidades lógicas de la partición extendida del
primer disco duro y las unidades G y H las unidades lógicas de la partición extendida del segundo
disco duro.
El comando que gestiona las particiones de un disco duro es el comando FDISK, cuyo
funcionamiento lo hemos visto en el proceso de instalación del DOS. La orden FDISK tiene una
opción: FDISK /STATUS, que visualiza en pantalla el estado actual de la tabla de particiones.
Comando FORMAT.
31
Los discos son dispositivos magnéticos sin estructura ninguna que pueda almacenar los datos. Para
poder utilizar los discos hay que formatearlos, es decir, crear en el dispositivo magnético una
estructura lógica que sea capaz de gestionar los directorios, subdirectorios y ficheros. El comando del
DOS que crea ésta estructura lógica en el disco es FORMAT.
La sintaxis es:
FORMAT unidad [/F:tamaño] [/Q] [/U] [/S] [/B] [/V:etiqueta] [/C] [/N:sectores/T:pistas] [/1] [/4]
[/8]
/F:tamaño.
Sólo se utiliza para formatear disquetes. Si se omite ésta opción, el disquete se formatea con el
tamaño máximo que la unidad de disquete permita.
/Q.
Activa un formateo rápido o inmediato. Por defecto se realiza un formateo completo, que
consiste en inicializar la FAT poniendo a 0 el valor de todos los clusters, lo cual indica que son
clusters libres, y verificar la integridad de los sectores (sectores defectuosos o válidos) del
espacio de datos del usuario. El formateo rápido consiste en realizar la primera acción, es decir,
inicializar los clusters de la FAT.
/U.
Realiza un formateo incondicional del disco, que consiste en eliminar físicamente todos los datos
del disco sin posibilidad de recuperarlos posteriormente. Si se omite ésta opción se realiza un
formateo seguro, que consiste en inicializar la FAT poniendo los clusters a 0, pero sin borrar los
datos del disco hasta que se necesite espacio libre, por lo que los datos se pueden recuperar.
/S.
Además de formatear el disco, lo configura como disco de sistema, permitiendo de ésta forma
arrancar el ordenador con dicho disco. Los discos de sistema almacenan en el directorio raíz los
tres ficheros que permiten cargar el DOS en memoria cuando se enciende el ordenador. Estos
tres ficheros son: IO.SYS, MSDOS.SYS Y COMMAND.COM. Además, para poder trabajar con
unidades comprimidas con DoubleSpace, el disco de sistema también ha de tener en el directorio
raíz el fichero de sistema DBLSPACE.BIN.
/B.
Reserva espacio en el disquete para almacenar los ficheros de sistema, pero no los copia. Los
ficheros de sistema se copiarán posteriormente con el comando SYS. Es incompatible con la
opción /S.
/V:etiqueta.
/C.
Comprueba los grupos dañados en el disco. Un grupo es un conjunto de clusters. Por defecto el
comando FORMAT no comprueba los grupos dañados.
/N:sectores.
32
Indica el número de sectores por pista con que se desea formatear el disquete. Los disquetes de
1.44 MB tienen 18 sectores por pista. Normalmente ésta opción se suele utilizar conjuntamente
con la opción /T:pistas. Es incompatible con la opción /F:tamaño.
/T:pistas.
Indica el número de pistas con que se desea formatear el disquete. Los disquetes de 1.44 MB
tienen 80 pistas. Normalmente ésta opción se suele utilizar conjuntamente con la opción
/N:sectores. Es incompatible con la opción /F:tamaño.
/1.
/4.
/8.
Comando SYS.
Se utiliza para crear discos de sistema, es decir, un disco que puede arrancar y cargar el DOS. Para
ello copia en dicho disco los tres ficheros de sistema (IO.SYS, MSDOS.SYS y DBLSPACE.BIN) y
el procesador de órdenes COMMAND.COM.
La sintaxis es:
Si se omite el primer parámetro, el comando SYS busca los ficheros a copiar en el directorio raíz de
la unidad activa. Si se pone unidad, busca los ficheros en el directorio raíz de la unidad especificada.
Si se pone directorio, busca los ficheros en el directorio especificado.
Los ficheros de sistema no se pueden copiar con el comando COPY o con cualquier utilidad para
copiar archivos (PC Tools, Comandante Norton, etc.) porque el fichero de sistema IO.SYS tiene que
estar situado en el primer cluster del disco y, si no lo copiamos con la orden SYS, se copiaría en el
primer cluster libre.
Comando DISKCOPY.
Sirve para copiar disquetes. Realiza una copia exacta del disco origen al disco destino, incluyendo
ficheros, directorios y subdirectorios.
La sintaxis es:
33
El primer parámetro es la unidad donde está el disquete que se va a copiar y el segundo parámetro es
la unidad del disquete que recibirá la copia. Si se omite el segundo parámetro, se asume como unidad
de destino la unidad especificada en el primer parámetro. Si se omiten ambos parámetros, se toma
como unidad origen y destino la unidad activa, siempre que no sea el disco duro.
/1.
/V.
/M.
El comando DISKCOPY utiliza el disco duro como memoria temporal para guardar la
información leída del disco origen. Con la opción /M, se utiliza la memoria convencional para
realizar el almacenamiento temporal.
Para realizar copias de discos hay que tener en cuenta las siguientes consideraciones:
Los disquetes de la unidad origen y destino han de tener el mismo tamaño, pues la copia
se realiza sector a sector.
Si el disco origen tiene sectores defectuosos, también se copian en el disco destino. Para
evitar éste problema se puede utilizar la orden XCOPY. Las órdenes siguientes realizan la misma
operación: DISKCOPY A: B: y XCOPY A:\ B:\ /S /E. La diferencia más importante es que la
orden DISKCOPY copia los ficheros ocultos y de sistema y la orden XCOPY no. La orden
XCOPY tampoco podría copiar discos completos si sólo disponemos de una unidad de disco.
Comando DISKCOMP.
Se utiliza para comparar el contenido de disquetes. La comparación se realiza a nivel de los sectores
del disco. DISKCOMP coge el primer sector de un disquete y compara los 512 bytes de ese sector
con los 512 bytes del primer sector del otro disquete. Luego, compara el contenido del segundo
sector de ambos disquetes, y así sucesivamente hasta comparar los últimos sectores de los disquetes.
La sintaxis es:
Si se omite el segundo parámetro, se asume la unidad del primero. Si se omiten ambos parámetros, la
comparación se realiza en la unidad activa.
/1.
Compara únicamente la primera cara de los disquetes, aunque actualmente está en desuso.
/8.
Compara únicamente los primeros 8 sectores de cada pista, incluso si los disquetes tienen 9 ó 15
sectores por pista.
34
Comando CHKDSK.
Se utiliza para chequear los discos, comprobando la integridad de los datos. Además de verificar la
estructura lógica del disco, éste comando muestra en pantalla información relativa al estado actual
del disco y de la memoria.
La sintaxis es:
La orden CHKDSK sin parámetros realiza un chequeo del disco de la unidad activa.
/F.
Permite corregir los errores que se encuentran durante el chequeo del disco. Los datos erróneos
se almacenan en ficheros con el nombre FILExxx.CHK, siendo xxx un número que se va
incrementando según crece el número de ficheros. Por ejemplo, si la opción /F crea 3 ficheros
que almacenan cadenas de datos perdidos, éstos tres ficheros se nombrarán FILE000.CHK,
FILE001.CHK, FILE002.CHK.
/V.
Visualiza en pantalla un listado con la trayectoria de todos los ficheros del disco especificado. Se
incluyen también los ficheros ocultos y de sistema.
Actualmente se utiliza el programa SCANDISK, que efectúa un chequeo del disco mucho más
completo que el comando CHKDSK, detectando y recuperando tanto errores físicos como errores
lógicos.
Comando LABEL.
Sirve para visualizar y modificar la etiqueta de un disco. La etiqueta de un disco es una secuencia de
11 caracteres creada por el usuario para nombrar los discos.
La sintaxis es:
Si se omiten los parámetros, se muestra la etiqueta de la unidad activa y permite modificarla. Para
modificarla hay que introducir el nuevo nombre. Si pulsamos INTRO y existe una etiqueta, nos
pregunta si queremos eliminarla.
El primer parámetro indica la unidad del disco cuya etiqueta se quiere visualizar, borrar o cambiar.
Comando VOL.
La sintaxis es:
VOL [unidad]
35
Comando DEFRAG.
El DOS almacena los ficheros en clusters que no necesitan ser secuenciales. Cuando los ficheros
están divididos en clusters muy alejados entre sí, el sistema tarda más tiempo en acceder a ellos. Si
un fichero tiene sus clusters repartidos por diferentes partes del disco duro, la unidad de disco tendrá
que desplazar la cabeza de lectura y escritura de una parte a otra del disco, con el consiguiente
tiempo perdido en el desplazamiento de la cabeza. Por el contrario, si un fichero está almacenado en
clusters secuenciales, el tiempo consumido en mover la cabeza es mínimo, lo que significa mayor
rapidez a la hora de acceder al fichero.
El comando DEFRAG recompone el disco almacenando los ficheros en clusters secuenciales, lo que
acelera el rendimiento general del disco.
En éste método se realizan tres tareas. Primero, ordena cada directorio del disco colocando en
primer lugar los directorios y luego los ficheros. Segundo, recompone el disco almacenando los
ficheros en clusters secuenciales. Tercero, cuando recompone el disco, elimina los espacios
vacíos entre los ficheros, colocando dichos espacios al final del disco, evitando así que se
fragmenten los nuevos ficheros que se copian al disco. Si existen espacios vacíos entre los
ficheros, cuando se copie un nuevo fichero en el disco se utilizarán ésos espacios vacíos y el
fichero se almacenará fragmentado.
Este método la única operación que realiza es almacenar los ficheros en clusters secuenciales y,
por lo tanto, es mucho más rápido que el anterior.
Para desfragmentar un disco basta con escribir DEFRAG en el indicador de órdenes del DOS. A
continuación se mostrará el entorno de trabajo de DEFRAG, basado en ventanas que se pueden
activar tanto desde el teclado como mediante el ratón. Cada vez que se ejecuta DEFRAG hay que
seguir tres pasos:
36
Leyenda del mapa. Ofrece una breve explicación de los caracteres o símbolos elegidos
para representar cada conjunto de clusters o bloque que se presenta en la pantalla durante el
proceso de desfragmentación. El carácter X se utiliza para designar los clusters que
pertenecen a ficheros que no se pueden mover.
En cualquier momento se puede pulsar la tecla F1 para obtener una pantalla de ayuda sensible al
contexto, es decir, una pantalla de ayuda que varía en función de la operación que se esté realizando.
1. Formatear un discquete sin utilizar ninguna opción del comando FORMAT. Ha tardado 1 minuto y 2
segundos.
7. Formatear un disquete reservando espacio para copiar posteriormente los ficheros de sistema y el
procesador de órdenes COMMAND.COM (/B). Ha tardado 1 minuto y 22 segundos.
20. Desfragmentar el disco duro con el comando DEFRAG, utilizando los dos métodos de
desfragmentación.
37
Comandos y utilidades para facilitar el trabajo.
Comando HELP.
Ejecuta un programa a pantalla completa que ofrece ayuda personalizada para todas las órdenes del
DOS. Para acceder a la ayuda de cada comando, hay que situarse con el cursor sobre el nombre del
comando y pulsar la tecla INTRO.
La sintaxis es:
HELP [orden]
La orden HELP sin parámetros carga el programa de ayuda y visualiza la pantalla principal.
Los menús disponibles en la pantalla del comando HELP son los siguientes:
Buscar. Busca una determinada cadena de caracteres en todas las pantallas de ayuda.
Repetir última búsqueda (F3). Una vez encontrada la cadena de caracteres a buscar, ésta
opción permite continuar buscando la misma cadena en las pantallas de ayuda. Para
continuar la búsqueda se puede pulsar la tecla F3.
Acerca de. Visualiza una ventana con el nombre y copyright del programa HELP.
Comando PROMPT.
La sintaxis es:
Si se omiten los parámetros, el indicador de órdenes toma el valor por defecto. Este valor se compone
del nombre de la unidad activa seguida del carácter ">", por ejemplo, C>.
El parámetro texto se utiliza para asignar un texto al indicador de órdenes, por ejemplo, la orden
PROMPT Orden DOS: , asigna el texto especificado al indicador de órdenes del DOS, que, después
de ejecutar el comando PROMPT, sería Orden DOS: .
38
El comando PROMPT acepta unas órdenes especiales que permiten incluir en el indicador de órdenes
caracteres especiales y valores importantes. Estas órdenes son:
La tecla Control.
La tecla Control no tiene ningún significado por sí misma. Se utiliza en combinación con otras teclas.
Veamos éstas combinaciones de teclas:
Ctrl-P. En el modo normal, las órdenes del DOS muestran la información en la pantalla,
es decir, utilizan el monitor como dispositivo de salida. Al pulsar Ctrl-P, el DOS muestra toda la
información en el monitor y en la impresora. Para desactivar la impresión, hay que pulsar
nuevamente Ctrl-P.
Ctrl-Z. Representa el carácter que se utiliza para indicar el final de un fichero de texto.
Este carácter, que corresponde al código ASCII 26, se denomina carácter EOF (End Of File).
Otra forma de representar el carácter de fin de fichero es pulsando la tecla F6.
Ctrl-S. Se utiliza para detener la salida de un comando en pantalla, cuando ocupa más
de 25 líneas. Para continuar visualizando la salida de la orden hay que pulsar cualquier tecla.
39
impresora. Si se quiere ampliar el campo de acción y reconocer en todo momento la pulsación de
Ctrl-C, hay que utilizar la orden BREAK.
ON.
OFF.
El buffer de órdenes.
El buffer de órdenes es una zona de memoria que almacena una copia de la última orden introducida
en el indicador del DOS. Por defecto, el DOS incorpora un mecanismo de gestión del buffer de
órdenes. Si se pulsa la tecla F3, aparece en el indicador de órdenes el último comando introducido.
Este método de gestionar el buffer de órdenes es muy insuficiente, por lo que el DOS utiliza la orden
DOSKEY, que permite gestionar dicho buffer de forma mucho más eficiente.
El buffer de órdenes que crea DOSKEY tiene un tamaño finito y funciona con el esquema LIFO
(Last-In, First-Out: el último en entrar es el primero en salir).
La sintaxis es:
/H[ISTORY].
/BUFSIZE=bytes.
Define el tamaño en bytes del buffer de órdenes. Normalmente es suficiente con el tamaño de
512 bytes que crea por defecto. Este tamaño permite almacenar 34 órdenes de 15 caracteres
(34x15=510). Hay que tener cuidado al aumentar el tamaño del buffer de órdenes, pues
disminuye el tamaño de la memoria RAM.
40
Con la orden DOSKEY activada se pueden introducir varias órdenes en la misma línea de
comandos. Para ello hay que introducir las órdenes separándolas con el carácter ¶, que se genera
pulsando Ctrl-T o con Alt-20 (código ASCII).
2. Recuperar órdenes.
La orden DOSKEY utiliza unas teclas para recuperar las órdenes introducidas en el buffer de
órdenes. Estas teclas son:
F8. Recupera las órdenes que comienzan con los caracteres tecleados en la línea de
comandos. Hay que pulsar nuevamente F8 para continuar con la búsqueda.
F9. Recupera una orden según su posición en la lista. Hay que introducir el número de
orden que muestra F7.
Para realizar modificaciones en las órdenes que introducimos a través del teclado o en las
órdenes recuperadas a partir del buffer de órdenes, se utilizan las siguientes teclas:
Ctrl-Inicio. Borra el texto desde el principio de la línea hasta la posición del cursor.
Ctrl-Fin. Borra el texto desde la posición del cursor hasta el final de la línea.
41
Una macro de órdenes es un conjunto de órdenes que se ejecutan escribiendo el nombre de la
macro en la línea de comandos. Se diferencian de los ficheros por lotes en que las macros de
órdenes se almacenan en la memoria RAM y pueden tener un máximo de 127 caracteres.
El propósito de las macros es crear pequeños conjuntos de órdenes que se utilizan con mucha
frecuencia. Si queremos automatizar un proceso complejo es mejor que utilicemos ficheros por
lotes.
Para crear macros de órdenes se utiliza la orden DOSKEY, con la siguiente sintaxis:
macro=[valor].
Ejemplo.
Vamos a crear una macro que cambie al directorio raíz de la unidad C y visualice todos sus
directorios ordenados por nombre.
Para ejecutar ésta macro sólo hay que escribir su nombre en la línea de comandos.
C:\>R
Para modificar una macro existente hay que volverla a definir escribiendo como valor el
nuevo conjunto de órdenes que va a contener la macro.
Para eliminar una macro, hay que ejecutar DOSKEY seguido del nombre de la macro y el
signo “=”. Para eliminar la macro R creada en el ejemplo anterior hay que escribir:
C:\>DOSKEY R=.
/BUFSIZE=bytes.
La orden DOSKEY utiliza el mismo buffer para almacenar las macros y las órdenes
introducidas por el usuario. El funcionamiento de éste buffer es el siguiente: Primero, se
comprueba cuánto espacio ocupan todas las macros y se asigna el resto a las órdenes. A
partir de éste momento, las órdenes empiezan a acumularse en el espacio reservado para
ellas. Cuando se llena éste espacio, se introduce la orden más reciente y se borra la orden
más antigua. Si se añaden nuevas macros, se aumenta el espacio para las macros,
disminuyendo el espacio para las órdenes, aunque siempre se reservan un mínimo de 256
bytes para las órdenes que no pueden ser ocupados por las macros.
La combinación de teclas Alt-F10, borra todas las macros del buffer, pero no borra las
órdenes. La combinación de teclas Alt-F7, borra todas las órdenes del buffer, pero no borra
las macros.
/MACROS.
Visualiza en pantalla una lista con todas las macros definidas en el sistema.
42
La combinación de teclas Ctrl-C interrumpe la acción de la orden que se esté ejecutando
en ése momento, pero no la ejecución de la macro.
Las macros no se pueden ejecutar desde los ficheros por lotes, pero los ficheros por
lotes sí se pueden ejecutar desde las macros.
Desde una macro no se puede acceder a los valores de las variables de entorno.
Las macros, al igual que los ficheros por lotes, aceptan parámetros, que se representan
del $1 al $9, pero no existe una orden SHIFT que permita aumentar el número de
parámetros.
Se pueden crear macros con el mismo nombre que las órdenes del DOS. En éste caso,
las macros tienen preferencia sobre las órdenes, es decir, si una macro tiene el mismo
nombre que una orden, se ejecutará la macro y no la orden. Para que se ejecute la orden y no
la macro hay que escribir el nombre de la orden precedido de un espacio en blanco.
$B. Barra vertical utilizada, por ejemplo, en la orden MORE (Bar, barra).
Ejemplos.
1. Vamos a crear una macro que visualice el contenido del fichero AUTOEXEC.BAT
paginado.
2. Vamos a crear una macro que busque un determinado fichero por todos los directorios
del disco duro.
Para buscar el fichero PEPE hay que escribir C:\>BUSCAR PEPE, para buscar el fichero
CARTA.TXT, se escribirá C:\>BUSCAR CARTA.TXT.
3. La orden TYPE no acepta la utilización de los caracteres comodines. Podemos crear una
macro para que los podamos utilizar.
43
El programa de diagnósticos MSD.
El programa MSD (MicroSoft Diagnostics) es una utilidad que informa al usuario de las principales
características hardware y software del ordenador. La pantalla principal de MSD visualiza trece
opciones. Para aceder a éstas opciones hay que pulsar la letra que aparece resaltada o en color.
Además de éstas trece opciones, el programa MSD posee en la parte superior una barra de menús que
contiene tres menús:
File.
Find File.
Print Report.
Visualiza una pantalla en la que se pueden escoger las características que se desean incluir
en el informe, así como el destino del informe, es decir, si se quiere imprimir en la
impresora o volcarlo a un fichero de texto. Para desplazarse de una opción a otra hay que
pulsar la tecla TAB o la letra que aparece resaltada en el nombre y pulsar la barra
espaciadora para activar o desactivar la característica.
Nombres de ficheros.
Exit.
Termina la ejecución del programa y regresa a la línea de comandos del DOS. Si se pulsa la
tecla F3 realiza la misma acción.
Utilities.
Memory Browser.
Permite ver las posiciones de memoria de la información ROM BIOS y Video ROM BIOS
y buscar una cadena de caracteres en la memoria superior.
Insert Command.
Test Printer.
44
Conmuta el sistema de vídeo de MSD entre blanco/negro y color. Se puede activar
directamente pulsando la tecla F5.
/P fichero.
Crea, en el fichero especificado, un informe completo de todas las características que puede
analizar MSD.
/F fichero.
Es igual que la opción /P, pero, antes de crear el fichero, nos pide que introduzcamos varios
datos (nombre, compañía, dirección, etc.) que se añadirán al principio del fichero.
/S [fichero].
Crea un informe resumido que contiene únicamente las características más importantes del
ordenador. Si se introduce el nombre de un fichero, el resumen se graba en el fichero indicado.
Si no se introduce el nombre de un fichero, el informe resumido se visualiza por pantalla.
/B.
/I.
Evita el proceso de detección del hardware, cargando inmediatamente una pantalla en la que no
se muestra ninguna característica. Cada vez que el usuario active una opción, el programa MSD
detecta las características relativas a dicha opción.
Dispositivos.
El DOS soporta cinco dispositivos. Los ficheros de sistema IO.SYS y MSDOS.SYS contienen las rutinas
que gestionan éstos dispositivos, por lo que dichas rutinas se cargan en memoria cuando se enciende el
ordenador. El DOS asigna un nombre a cada uno de éstos dispositivos. Los dispositivos que gestiona el
DOS son los siguientes:
El DOS utiliza el nombre CON para referirse a éste dispositivo. El teclado es un dispositivo
unidireccional de entrada y el monitor es un dispositivo unidireccional de salida. Debido a la
unidireccionalidad puede usarse un sólo nombre de dispositivo para designar teclado y monitor sin
generar ningún conflicto. Según el tipo de operación (entrada o salida), el dispositivo CON se refiere
al teclado (entrada) o al monitor (salida).
Puertos paralelo.
Los puertos o interfaces paralelo son dispositivos bidireccionales, que permiten tanto enviar como
recibir datos. Se llaman puertos paralelo porque transmiten datos de byte en byte, es decir, los 8 bits
45
de cada byte se envían simultáneamente. Se utilizan, principalmente, para conectar impresoras al
ordenador. Un Cd-Rom externo, dispositivo de E/S, lo podemos conectar a un puerto paralelo. El
DOS puede reconocer tres puertos paralelo: LPT1 o PRN, LPT2 y LPT3. PRN se deriva de la palabra
inglesa PRINTER (impresora) y LPT de las palabras LINE PRINTER (impresora de línea).
Puertos serie.
Los puertos o interfaces serie son dispositivos bidireccionales. Los datos se transmiten bit a bit. Los 8
bits de un byte se envían secuencialmente, uno detrás de otro. Estos puertos son los más versátiles y
polivalentes, utilizándose para conectar al ordenador diferentes tipos de dispositivos (ratones,
scanners, módems, unidades externas, etc.). El DOS soporta cuatro puertos serie: COM1 o AUX,
COM2, COM3 y COM4.
Nulo.
A veces es necesario utilizar un dispositivo ficticio o nulo, que simule el envío o recepción de la
información. Para éstos casos el DOS incorpora el dispositivo NUL.
Por ejemplo, el comando PAUSE realiza una parada y visualiza el mensaje Pulse cualquier tecla
para continuar... . Si utilizamos PAUSE >NUL, el mensaje lo envía al dispositivo ficticio y, por lo
tanto, no se visualiza.
Reloj.
El sistema operativo DOS siempre asume que existe algún tipo de reloj en el sistema, ya sea un reloj
en tiempo real CMOS, que mide en segundos, o un reloj de intervalos, que utiliza una medida propia,
cargado en memoria al arrancar el ordenador. El nombre de dispositivo CLOCK$ hace referencia a
éste reloj del ordenador, que se gestiona a través de las órdenes DATE y TIME.
Existen tres órdenes del DOS que aceptan como parámetro los nombres de dispositivo. Estas órdenes son:
Comando MODE.
Monitor.
Sintaxis 1:
46
BW40. Monitor en blanco y negro a 40 columnas.
El parámetro num_filas indica el número de líneas de la pantalla. Los sistemas monocromo sólo
aceptan 25 filas. En los sistemas en color con tarjeta EGA, se pueden utilizar 43 filas, y si tienen
la tarjeta VGA o Super VGA, se pueden utilizar 43 o 50 filas. Para poder definir el número de
filas del monitor, es necesario haber instalado previamente el controlador ANSI.SYS, que
veremos más adelante.
Sintaxis 2:
Teclado.
Se utiliza para definir el modo repetitivo de pulsación de una tecla, es decir, cuando se pulsa una
tecla y se mantiene pulsada.
La sintaxis es:
El parámetro RATE es la velocidad con que el DOS genera los caracteres de la secuencia
repetitiva. El valor oscila entre 1 y 32. El valor por defecto es 28.
El parámetro DELAY especifica el intervalo de tiempo transcurrido desde que se pulsa la tecla
hasta que aparece en pantalla el primer carácter de la secuencia repetitiva. Puede tomar los
valores 1, 2, 3 y 4, que indican, respectivamente, un retardo de 0.25, 0.50, 0.75 y 1 segundos. El
valor por defecto es 2.
Impresora.
La sintaxis es:
El parámetro LINES define el número de líneas que se imprimen en cada pulgada de papel.
Puede tomar dos valores: 6 y 8 líneas por pulgada. El valor por defecto es 6, lo que genera 66
líneas en los folios (11 pulgadas) y 60 líneas en las hojas DIN A4 (10 pulgadas).
Puertos serie.
La mayoría de los dispositivos que se conectan mediante un puerto serie no necesitan que se
configure dicho puerto con la orden MODE, sino que será necesario cargar el controlador de
dispositivo, que realiza la configuración.
La sintaxis es:
47
Esta sintaxis se suele utilizar cuando se conecta una impresora a un puerto serie.
MODE LPTn=COMn
Se utiliza cuando una impresora está conectada al puerto serie. En éstos casos hay que redireccionar
la salida del puerto paralelo al puerto serie. De ésta forma, todas las llamadas al puerto paralelo se
dirigen al puerto serie. Para anular la redirección hay que escribir MODE LPTn.
Comando CTTY.
Sirve para cambiar el dispositivo de E/S del DOS. Por defecto, el dispositivo de E/S del DOS es la
consola, el teclado es el dispositivo de entrada y el monitor es el dispositivo de salida.
La sintaxis es:
CTTY nombre_dispositivo.
Comando COPY.
Además de copiar ficheros de un disco a otro o de un directorio a otro, el comando COPY se puede
utilizar para copiar ficheros desde o hacia un dispositivo o enviar información entre dispositivos.
Según la función que se vaya a realizar, la orden COPY puede tener tres sintaxis:
Sintaxis 1:
Ejemplos:
Sintaxis 2:
Crea un fichero desde el dispositivo especificado. Se utiliza, principalmente, para crear ficheros
de texto directamente desde el teclado. Para indicar el final del fichero hay que introducir el
carácter de fin de fichero (Ctrl-Z o F6).
Ejemplo:
C:\>COPY CON PEPE. Después de pulsar la tecla INTRO, todo lo que se escriba hasta que se
introduzca el carácter de fin de fichero se enviará al fichero PEPE.
48
Sintaxis 3:
Ejemplo:
COPY CON LPT1. Después de pulsar la tecla INTRO, todo lo que se escriba hasta que se
introduzca el carácter de fin de fichero se enviará a la impresora.
Redireccionamiento.
Los dispositivos de E/S por defecto del DOS son el teclado y el monitor, respectivamente. Sin embargo,
hay ocasiones en que es necesario cambiar la E/S por defecto, redireccionándola a algún otro dispositivo
o fichero.
Redireccionamiento de entrada.
Consiste en cambiar a otro dispositivo o fichero el dispositivo de entrada por defecto. Para
redireccionar la entrada de datos a una orden o programa hay que escribir el nombre de la orden o
programa seguido del carácter "<" y, a continuación, el nombre del nuevo dispositivo de entrada o
del fichero del que se van a tomar los datos de entrada.
Ejemplo.
C:\>COPY CON FECHA. En primer lugar introducimos por teclado la fecha que queremos asignar a
la orden DATE y la guardamos en el fichero FECHA. Introduciremos por teclado la fecha (por
ejemplo, 11/11/98), la pulsación de la tecla INTRO y el carácter de fin de fichero (10 bytes). Hay que
introducir la pulsación de la tecla INTRO porque, al ejecutar el comando DATE, si queremos
cambiar la fecha, se introduce la nueva fecha y se pulsa la tecla INTRO.
C:\>DATE < FECHA. Seguidamente ejecutamos la orden DATE, tomando como fecha el contenido
del fichero FECHA.
Redireccionamiento de salida.
Ejemplos.
Adición de ficheros.
Ejemplo.
C:\>DIR >>PEPE
49
C:\>DIR \DOS >>PEPE
El contenido del fichero PEPE será la lista de todos los ficheros y diectorios de los directorios raíz
y \DOS.
Filtros.
Los filtros se utilizan para convertir la salida de una orden en entrada de otra orden. De todas las órdenes
del DOS, sólo hay tres (MORE, SORT, FIND) que pueden recibir como entrada la salida de otra orden.
Estas órdenes se conocen como filtros del DOS. Para introducir un filtro en la línea de comandos, se
utiliza el carácter "|" (código ASCII 124), que se genera con la combinación de teclas AltGr+1 (del
teclado alfanumérico). Este carácter se intercala entre la orden que genera la salida y la orden que recibe
la entrada.
Filtro MORE.
Se utiliza para detener la salida de una orden cada 23 líneas, mostrando el mensaje "-- Más --". Para
seguir visualizando la salida de la orden hay que pulsar cualquier tecla.
Ejemplo.
C:\DOS>MORE <LEAME.TXT.
Filtro SORT.
El filtro SORT recibe como entrada la salida de una orden, obteniendo como resultado la ordenación
de los elementos recibidos.
La sintaxis es:
/R.
/+número.
Ejemplos.
C:\>DIR |SORT /+16, visualiza el contenido del directorio raíz, ordenado de menor a mayor según el
tamaño de los archivos. El tamaño de los archivos empieza en el carácter 16 de la salida de la orden
DIR.
C:\>DIR |SORT /+10, visualiza el contenido del directorio raíz, ordenado de menor a mayor según la
extensión de los archivos. La extensión de los archivos empieza en el carácter 10 de la salida de la
orden DIR.
50
C:\>SORT, nos permite introducir datos por teclado. Cuando se introduzca el carácter de fin de
fichero, los datos tecleados se visualizan en la pantalla, ordenados de menor a mayor.
C:\SORT >DATOS, nos permite introducir datos por teclado. Cuando se introduzca el carácter de fin
de fichero, los datos tecleados se guardan en el fichero DATOS, ordenados de menor a mayor.
Filtro FIND.
El filtro FIND sirve para buscar una cadena de caracteres dentro de un fichero. Se pueden buscar
caracteres en ficheros que contengan códigos de un determinado procesador de textos, por ejemplo,
un documento de WordPerfect o un documento de Microsoft Word.
La sintaxis es:
Si se omiten los parámetros, se busca la cadena especificada en los datos introducidos por teclado
hasta que se introduce el carácter de fin de fichero. Cuando encuentra la cadena buscada en el dato
tecleado, visualiza dicho dato. Si la salida se redirecciona a un fichero, sólo se guardarán los datos
que contengan la cadena buscada.
fichero.
/V.
Por defecto, el filtro FIND visualiza en pantalla los datos que contienen la cadena. Con la opción
/V, se visualizan los datos que no contienen la cadena.
/C.
Muestra en pantalla únicamente el número total de datos que contienen la cadena especificada.
/N.
Visualiza el dato que contiene la cadena y el número de la línea que contiene el dato.
/I.
Por defecto, la orden FIND distingue entre letras mayússculas y minúsculas. Si se utiliza la
opción /I, no se distingue entre mayúsculas y minúsculas.
Para comprimir unidades de disco se utilizan los comandos DBLSPACE y DRVSPACE. Estas órdenes
actualmente casi no se utilizan porque los discos duros tienen gran capadicad de almacenamiento y
porque el sistema operativo Windows no admite unidades comprimidas.
Copias de seguridad.
El comando para realizar copias de seguridad es el MSBACKUP.EXE. La primera vez que se ejecuta éste
programa, aparece un mensaje indicando que todavía no se ha configurado el programa. Hay que elegir la
opción Iniciar Configuración. Cuando se activa el proceso de configuración se pone en marcha la prueba
de compatibilidad, que lleva a cabo dos acciones: detecta el hardware instalado y realiza una pequeña
copia de seguridad sobre dos disquetes para comprobar que la configuración elegida es correcta, que no
existen incompatibilidades con el hardware y que el programa podrá copiar y restaurar ficheros sin
problemas. Si la prueba de compatibilidad finaliza con éxito, las copias y restauraciones que se realicen
51
serán fiables. Si se producen errores, hay que repetir el proceso hasta que no surjan errores. Si se presenta
siempre el mismo error, probablemente existan incompatibilidades en el hardware.
Una vez que el programa esté correctamente configurado, se pueden realizar copias y restauraciones de
los ficheros. Para ello habrá que seguir las instrucciones del programa.
Recuperación de datos.
El DOS incorpora comandos para recuperar los ficheros y los discos borrados accidentalmente. La mejor
forma de recuperar ficheros perdidos es mediante las copias de seguridad realizadas en otros soportes.
Un fichero se puede borrar utilizando la orden DEL o desde una aplicación. En ambos casos, el DOS
utiliza el mismo método para borrar el fichero. Este método realiza dos aciones:
Cambia el primer carácter del nombre del fichero por el carácter "Õ" (código ASCII 229). Cuando el
primer carácter del nombre de un fichero es el código ASCII 229, el DOS considera que ésa entrada
de directorio está libre. Esta acción permite mantener prácticamente intacta la entrada de directorio
del fichero borrado, lo cual es muy importante para poder recuperar el fichero, porque se mantiene el
campo que indica el primer cluster donde comienza el fichero.
Marcar como libres los clusters del fichero, es decir, asignar el valor 0 a los elementos de la FAT que
corresponden a los clusters del fichero. Esta acción permite mantener intacto el contenido del fichero
borrado.
Lógicamente, cuando se necesite espacio en el disco para copiar un fichero, se podrán utilizar las entradas
de directorio marcadas como libres y los clusters del fichero marcados como libres y, en ése momento, se
perderá el contenido de toda la entrada de directorio y de los sectores con los bytes del fichero borrado,
por lo que dicho fichero ya no se podrá recuperar.
La orden UNDELETE puede utilizar tres métodos para recuperar ficheros. Estos tres métodos son
excluyentes entre sí; sólo puede estar activo uno de ellos.
Método estándar.
Es el método que ofrece el nivel de protección más bajo. Para recuperar un fichero mediante éste
método, el comando UNDELETE realiza las siguientes acciones:
3. Con éste método, UNDELETE supone que el contenido del fichero está almacenado en
el cluster de comienzo y en los clusters siguientes, y lo intenta recuperar de ésa forma. Por
ejemplo, si el primer cluster del fichero borrado es el 47, supone que el contenido del fichero
continúa en los clusters 48, 49, 50, etc. UNDELETE sabe el tamaño del fichero porque lo ha
leído en la entrada de directorio.
4. UNDELETE pide al usuario que introduzca la primera letra del nombre del fichero.
1. Cuando se escriben datos en el disco, puede ser que se utilice la entrada de directorio o
los clusters que pertenecían al fichero borrado, en cuyo caso el fichero no se puede
recuperar.
52
2. Si el fichero estaba almacenado en clusters no secuenciales, éste método fracasa en su
intento de recuperar el fichero. Este inconveniente proporciona una buena razón para utilizar
regularmente la orden DEFRAG.
Método registro.
Este método crea un fichero llamado PCTRACKR.DEL, en el que mantiene una lista con
información sobre cada fichero borrado. La información que guarda son los 32 bytes de la
entrada de directorio de cada fichero, la posición del fichero en el disco y el número de los
clusters en que se almacena el fichero. El fichero PCTRACKR.DEL está localizado en el
directorio raíz de cada unidad y tiene activado el atributo de sistema.
Si todos los clusters del fichero borrado están libres, UNDELETE recupera todo el fichero. Si
sólo están libres algunos clusters del fichero borrado, UNDELETE recupera el fichero
parcialmente.
1. Cuando se utilizan los clusters del fichero borrado, éste no se puede recuperar.
2. Este método necesita cargar en memoria un programa residente que añade en la lista del
fichero PCTRACKR.DEL la información correspondiente a cada fichero borrado. Este
programa ocupa 9.616 bytes de memoria convencional.
Método centinela.
Es el más potente de todos y ofrece una alta probabilidad de recuperar correctamente los ficheros
borrados.
Este método crea en el directorio raíz un directorio oculto llamado SENTRY, en el cual se
almacena el contenido íntegro de cada fichero que se borra en la unidad. Cuando está activo el
método centinela y se borra un fichero, lo que hace realmente es trasladarlo al directorio
SENTRY. Al trasladarlo no se copia físicamente, sino que únicamente se modifican los enlaces
con los directorios para que desaparezca del directorio donde se almacenaba y pase ahora a ser
un elemento del directorio oculto SENTRY. Al recuperar un fichero con éste método,
simplemente hay que restaurar los enlaces para trasladarlo a su directorio original.
Cuando se borra un fichero con éste método, el espacio del disco, por ejemplo al ejecutar el
comando DIR, aumenta, aunque realmente no es así, pues el fichero borrado sigue almacenado
en el disco.
Se puede visualizar el contenido del directorio SENTRY con la orden DIR \SENTRY. Además
de los ficheros borrados, en el directorio SENTRY se crea el fichero CONTROL.FIL, que
contiene una lista de todos los ficheros que se almacenan en dicho directorio. El fichero
CONTROL.FIL es un fichero oculto. Para cada fichero borrado se guarda en el fichero
53
CONTROL.FIL el nombre del fichero y el directorio donde se almacenaba, para poder realizar el
traslado al ser restaurado.
Si el tamaño del fichero que se va a borrar es mayor que el espacio del directorio SENTRY, se
borra dicho fichero sin posibilidad de recuperarlo.
4. Al igual que en el método registro, éste método carga en memoria convencional unas
rutinas que se encargan de controlar, en cada operación que el ordenador realiza, si está
borrando un fichero, lo que disminuye la velocidad de proceso del ordenador.
En el proceso completo de recuperación de ficheros borrados hay que distinguir dos procesos: la
protección de los archivos que van a ser borrados y la recuperación de los ficheros borrados. Entre
ambas acciones existe una estrecha relación, pues el método de recuperación que se puede aplicar a
un fichero borrado dependerá del método de protección activo cuando se borró dicho fichero. Por
ejemplo, podemos tener activo el método centinela para proteger los archivos que se eliminen y usar
el método estándar o registro para recuperar un determinado archivo que se borró hace varios días.
Comando UNDELETE.
La orden UNDELETE sirve para realizar dos acciones: recuperar ficheros con cualquiera de los tres
métodos y cargar en memoria los métodos registro y centinela para proteger los ficheros que se
borren. Según la acción que se vaya a realizar, el comando UNDELETE puede tener dos sintaxis:
Si se omite el primer parámetro, se asume por defecto recuperar todos los archivos borrados del
directorio activo.
ficheros_borrados.
54
Admite un nombre de unidad, una trayectoria de directorio o una trayectoria de fichero. Se
pueden incluir los caracteres comodines.
/DOS.
/DT.
/DS.
/LIST.
Visualiza en pantalla una lista con los resultados que se producirían si se recuperan los
ficheros.
/ALL.
Recupera automáticamente todos los ficheros sin preguntar al usuario si desea recuperarlos.
Si se omite el segundo parámetro (/DOS, /DT, /DS), la orden UNDELETE realiza los siguientes
pasos:
Para activar el método estándar no hay que hacer nada. Siempre será posible intentar recuperar
los ficheros borrados utilizando el método estándar.
/LOAD.
/UNLOAD.
/S.
Activa el método centinela y se procesan las instrucciones del fichero UNDELETE.INI, sin
tener en cuenta los valores de la sección [defaults].
55
/Sunidad.
Unidad es la unidad de disco en la que se quiere activar el método centinela. Este parámetro
realiza dos funciones. Primero, modifica UNDELETE.INI añadiendo en la sección
[sentry.drives] la unidad especificada en unidad y graba los cambios. Y, segundo, carga en
memoria el método centinela, leyendo el nuevo fichero UNDELETE.INI.
/T.
Activa el método registro para las unidades incluidas en la sección [mirror.drives] del
fichero UNDELETE.INI. Si no existe ninguna unidad en dicha sección, se activa el método
registro para la unidad activa y se escribe la unidad activa en la sección [mirror.drives].
/Tunidad.
Activa el método registro para la unidad especificada en unidad y para las restantes unidades
incluidas en la sección [mirror.drives]. Si en dicha sección no estaba incluida la nueva
unidad, se añade automáticamente y se escriben los cambios en UNDELETE.INI.
/Tunidad-entradas.
Es igual a la opción anterior, pero define el número de entradas de ficheros borrados que
podrán almacenarse en el fichero PCTRACKR.DEL. Si éste fichero ya existe, no puede
modificarse su tamaño. Cuando no se especifican las entradas de dicho fichero, se asume por
defecto un valor que depende del tamaño de la unidad. Por ejemplo, en los disquetes de
1.44Mb, el tamaño del fichero será de 14Kb, lo que permite 75 entradas como máximo. El
valor introducido en entradas se guarda en la sección [mirror.drives] del fichero
UNDELETE.INI.
/STATUS.
/PURGE[unidad].
Fichero UNDELETE.INI.
El fichero UNDELETE.INI se utiliza únicamente en las labores de protección. Cada vez que se carga
en memoria la protección del método centinela o del método registro, se procesa el fichero de
inicialización UNDELETE.INI, que contiene órdenes para configurar dichos métodos.
[configuration]
archive=FALSE
days=7
percentage=20
56
[sentry.drives]
C=
[mirror.drives]
[sentry.files]
sentry.files=*.* -*.TMP -*.VM? -*.WOA -*.SWP -*.SPL -*.RMG -*.IMG -*.THM -*.DOV
[defaults]
d.sentry=TRUE
d.tracker=FALSE
1. Sección [configuration].
Archive.
Es una instrucción booleana (True o False). Por defecto tiene el valor False. Si el valor es
False, el método centinela guardará en el directorio SENTRY todos los ficheros que se
borren. Si el valor es True, sólo guardará en el directorio SENTRY los ficheros borrados que
tienen activado el atributo de archivo (los que se han modificado desde la última copia de
seguridad).
Days.
Determina el número de días que se guardan los ficheros borrados en el directorio SENTRY.
El rango de valores es de 1 a 255. Cuando el método centinela se carga en memoria y se ha
sobrepasado el número de días especificado, los ficheros del directorio SENTRY se
eliminan automáticamente.
Percentage.
Define el tamaño máximo del directorio SENTRY. Este tamaño se define sobre un
porcentaje del espacio total del disco. El valor mínimo es 1 y el máximo es 100. Por defecto
se asume el valor 20. Por ejemplo, si un disco tiene 1 Gb y queremos reservar 100 Mb para
el directorio SENTRY, debemos introducir el ésta sección la instrucción Percentage=10.
2. Sección [sentry.drives].
Contiene una fila con una letra y el signo "=" por cada unidad en la que se quiere activar el
método centinela.
[sentry.drives]
A=
C=
3. Sección [mirror.drives].
Es similar a la anterior, pero definiendo las unidades donde se activará el método registro. Detrás
del signo "=" se puede definir el número máximo de entradas que contendrá el fichero
PCTRACKR.DEL. Para modificar el número de entradas de dicho fichero en una unidad, hay
que borrar el fichero de la unidad, modificar el número máximo de entradas del fichero en la
sección [mirror.drives], y volver a cargar el método registro.
57
Ejemplo. Queremos activar el método registro en las unidades A y C, con 20 entradas en el
fichero PCTRACKR.DEL de la unidad y A y 100 entradas en dicho fichero de la unidad C.
[mirror.drives]
A=20
C=100
4. Sección [sentry.files].
Indica los ficheros borrados que se van a incluir en el directorio SENTRY. Se pueden utilizar
plantillas. No se pueden incluir trayectorias de directorios. Los ficheros especificados son
válidos para todos los directorios de todas las unidades en que esté activo el método centinela. Si
la plantilla está precedida por el carácter "-", los ficheros que corresponden a dicha plantilla no
se guardarán en el directorio SENTRY. La instrucción que realiza éstas acciones es sentry.files.
Ejemplo. Queremos que en el directorio SENTRY se guarden todos los archivos excepto los que
tengan la extensión TMP.
[sentry.files]
sentry.files=*.* -*.TMP
5. Sección [defaults].
Establece el método a utilizar. Para ello utiliza dos instrucciones booleanas: d.sentry, que activa
el método centinela si tiene el valor True, y d.tracker, que activa el método registro si tiene el
valor True. Si las dos instrucciones tienen el valor True, se activa el método registro. Si las dos
instrucciones tienen el valor False, se genera un mensaje de error.
Los cambios realizados en el archivo UNDELETE.INI no tienen efecto hasta que se carga en
memoria UNDELETE o se reinicia el ordenador. Si ya está cargado en memoria, es necesario
descargarlo y volverlo a cargar.
Los discos que se han formateado con el formateo incondicional (/U), no se pueden recuperar.
Cuando se realiza el formateo seguro (/Q) en un disco sí es posible recuperar los datos. El formateo
seguro crea un fichero con una copia del contenido de la FAT y del directorio raíz y lo sitúa al final
del disco, en los últimos clusters del disco. Este archivo se llama MIRROR. Hay ocasiones en las que
el comando FORMAT no puede crear éste archivo, en cuyo caso da un aviso por si el usuario no
quiere formatear el disco.
Los datos del disco se pueden recuperar al 100% siempre que no se haya grabado nada en el disco
después de formatearlo. Si se graba algún fichero en el disco, el área donde se almacenan los nuevos
ficheros no se puede recuperar, pero sí el resto del disco.
La orden para recuperar los datos de un disco formateado es UNFORMAT. La sintaxis es:
UNFORMAT unidad
La orden UNFORMAT permite visualizar la tabla de particiones. Para ello hay que utilizar la sintaxis
UNFORMAT /PARTN /L
También se puede restaurar la tabla de particiciones de un disco, pero para ello hay que tener el
comando MIRROR.COM de la versión 5 del DOS.
58
El DOS puede trabajar en modo interactivo o en modo batch. El modo interactivo se caracteriza porque el
usuario tiene que introducir una a una las órdenes del DOS. En el modo batch, propio de los ficheros por
lotes, el ordenador ejecuta automáticamente varias órdenes seguidas, sin intervención del usuario.
Un fichero por lotes es un fichero de texto en el que se escriben varias órdenes del DOS. Para que se
ejecuten las órdenes introducidas en dicho fichero, hay que escribir su nombre en la línea de comandos.
2. Los ficheros por lotes se escriben con cualquier editor de textos capaz de grabar los datos en código
ASCII. También se pueden crear utilizando el comando COPY CON fichero. Otra forma de crearlo
es mediante el buffer de órdenes, siguiendo los siguientes pasos: borrar el buffer de órdenes (Alt-F7),
ejecutar las órdenes a incluir en el fichero por lotes y ejecutar la orden DOSKEY /H
>FICHERO.BAT. Esta última orden también formaría parte del fichero por lotes, por lo que hay que
eliminarla si no queremos que forme parte del mismo.
3. Para ejecutar un fichero por lotes hay que escribir el nombre del fichero, sin la extensión.
4. Para interrumpir la ejecución de un fichero por lotes, hay que pulsar Ctrl-C. El DOS nos pide
confirmación.
El fichero AUTOEXEC.BAT es un fichero por lotes especial, que se ejecuta cada vez que se enciende o
reinicializa el ordenador. Se utiliza para ejecutar los programas u órdenes que se desean cargar siempre al
empezar a trabajar. Para que dicho fichero se ejecute ha de estar ubicado en el directorio raíz. Si no existe
o se encuentra en otro directorio, el DOS ejecuta consecutivamente las órdenes TIME, DATE y VER.
En el proceso de creación y ejecución de un fichero por lotes intervienen tres tipos distintos de mensajes:
1. Mensajes internos. Son los comentarios que introduce el usuario dentro del texto del propio fichero
por lotes para explicar detalles referentes a su diseño y funcionamiento.
2. Mensajes de llamada a una orden. Son los caracteres que se visualizan en pantalla al escribir una
orden en el teclado. Estos caracteres reciben el nombre de eco de una orden.
3. Mensajes de salida de una orden. Son los mensajes particulares que visualiza la orden durante su
ejecución.
En los ficheros por lotes se puede introducir cualquier orden o programa que se pueda escribir en la línea
de comandos. Además, existen otras órdenes, todas ellas internas, que incrementan significativamente el
rendimiento de los ficheros por lotes. Estas órdenes son:
Orden @.
Sirve para evitar la aparición en pantalla del mensaje de llamada de una orden, es decir, para que no
se vea el eco propio de toda orden.
La sintaxis es:
@orden
El carácter @ se genera con la combinación de teclas AltGr+2. Tiene el código ASCII 64.
Ejemplo.
Crear un fichero llamado RAIZ.BAT, que va a tomar la unidad C como unidad activa, cambiar al
directorio raíz, realizar una pausa y visualizar el contenido de dicho directorio. Su contenido será el
siguiente:
59
C:
CD\
PAUSE
DIR
Ejecutar el fichero RAIZ. Vemos que se produce el eco de las órdenes escritas en el fichero por lotes.
Añadir el carácter “@” delante del nombre de cada orden y volver a ejecutar el fichero RAIZ.
Observar que el eco de las órdenes no se produce.
Orden ECHO.
Se utiliza para activar y desactivar el eco de las órdenes. La orden ECHO desactiva el eco de todas
las órdenes siguientes hasta que se activa de nuevo o finaliza la ejecución del fichero por lotes.
La sintaxis es:
ON.
OFF.
mensaje.
Si se introduce ECHO OFF desde el indicador de órdenes, éste desaparece. Para que vuelva a
aparecer hay que escribir ECHO ON.
Ejemplo.
Cambiar, en el fichero RAIZ.BAT del ejemplo anterior, los caracteres “@” de cada orden por la
orden ECHO OFF al principio del archivo. Ejecutar el fichero RAIZ. Observar que la orden ECHO
también produce su propio eco. Para que ésto no ocurra, introducir el carácter “@” delante de la
orden ECHO OFF.
Cuando visualice el contenido del direcorio raíz, visualizar el mensaje Fin del listado.
Orden REM.
Sirve para introducir comentarios o recordatorios que facilitan la lectura del código o proporcionan
información complementaria (nombre del programador, fecha de creación, etc.). Esta orden no
realiza ninguna acción.
La sintaxis es:
REM [comentario]
60
La orden REM sin parámetros se utiliza para dejar líneas en blanco dentro del fichero que facilitan su
lectura.
Ejemplo.
Gestión de parámetros.
Los parámetros son valores que forman parte de las órdenes del DOS y se escriben detrás del nombre
de las mismas. Los ficheros por lotes también se pueden ejecutar con parámetros. Estos parámetros
son valores que se pasan al fichero desde la línea de comandos. El funcionamiento es similar a las
órdenes del DOS: se escribe el nombre del fichero seguido de los parámetros.
Para identificar dentro de un fichero por lotes los distintos parámetros que puede recibir al ejecutarse,
se utiliza el símbolo %número. La constante número ha de ser un número entero comprendido entre 0
y 9. El símbolo %0 se corresponde con el nombre y la trayectoria del fichero por lotes. Los símbolos
del %1 al %9 se refieren a los parámetros introducidos (%1 al primer parámetro, %2 al segundo, y así
sucesivamente).
Ejemplo.
Crear el fichero LISTAR.BAT, que visualizará por pantalla el contenido de dos archivos que se
pasarán como parámetros al ejecutar el fichero por lotes, realizando una pausa después de visualizar
cada archivo.
@ECHO OFF
TYPE %1
PAUSE
TYPE %2
PAUSE
Si se introducen más de dos parámetros, el fichero por lotes se ejecuta ignorando los parámetros
introducidos a partir del tercero. Si se introduce sólo un parámetro, al ejecutar la orden TYPE %2,
ejecutaría la orden TYPE sin ningún nombre de fichero y se produciría un error.
El parámetro %0 hace referencia a la trayectoria que el usuario escribe para ejecutar el fichero por
lotes.
Ejemplo.
Suponemos que estamos situados en el directorio raíz. Si el fichero LISTAR.BAT está en raíz, para
ejecutarlo tendremos que escribir LISTAR. En éste caso el valor del parámetro %0 será LISTAR. Si
el fichero LISTAR.BAT está en el directorio C:\DOS, para ejecutarlo tendremos que escribir
\DOS\LISTAR. En éste caso el valor del parámetro %0 será \DOS\LISTAR.
Orden SHIFT.
En la mayoría de la ocasiones, los nueve parámetros que se pueden introducir en un fichero por lotes
son suficientes. Cuando en un fichero por lotes se introducen más de nueve parámetros, hay que
utilizar la orden SHIFT para acceder a los parámetros posteriores al noveno. Cada vez que se ejecuta
una orden SHIFT, los parámetros se desplazan una posición, es ecir, el valor del parámetro %0 se
pierde, el valor del parámetro %1 pasa al parámetro %0, el del %2 al %1, y así sucesivamente.
61
Orden PAUSE.
Detiene la ejecución de un fichero por lotes hasta que se pulsa una tecla.
La sintaxis es:
PAUSE [mensaje]
El mensaje sólo aparece en pantalla si el eco de la orden está activado. En éste caso se muestra el
mensaje introducido como parámetro y el mensaje que visualiza la orden PAUSE (Pulse cualquier
tecla para continuar . . .).
Para relizar una pausa y personalizar el mensaje, hay que utilizar las siguientes instrucciones:
La orden ECHO visualiza el mensaje Parada personalizada, y la orden PAUSE envía su salida al
dispositivo ficticio NUL.
Orden GOTO.
Los ficheros por lotes ejecutan sus instrucciones secuencialmente. Para romper la ejecución
secuencial y ejecutar órdenes que no son las siguientes en secuencia, se utiliza la orden GOTO.
La sintaxis es:
GOTO [:]etiqueta
El parámetro etiqueta designa una secuencia de caracteres que identifica el lugar dentro del fichero
por lotes donde se desvía el control de la ejecución. Puede tener un máximo de 127 caracteres, pero
el DOS sólo reconoce los 8 primeros. Si existen dos etiquetas con los 8 primeros caracteres iguales,
se ejecutará la que esté colocada en primer lugar en el código del fichero por lotes.
Es conveniente que las etiquetas de un fichero por lotes se sitúen al final del código y finalicen con
una instrucción GOTO, que indicará el final de la etiqueta.
Orden IF.
Se utiliza para ejecutar una orden cuando se cumple una determinada condición. El funcionamiento
de la orden IF es el siguiente: primero, evalúa la condición; si la condición es verdadera, ejecuta la
orden especificada detrás de la condición y, después, continúa en la línea siguiente a la orden IF; si la
condición es falsa, continúa ejecutando la orden de la línea siguiente a la orden IF.
Sintaxis 1.
Ejemplo.
62
Podemos observar que se pueden escribir varias órdenes en la misma línea utilizando el carácter
“¶”, siempre que esté cargado el programa DOSKEY y el editor de textos empleado para crear
el fichero por lotes lo permita.
Se puede comprobar si existe un directorio o incluso una unidad. Para ello hay que preguntar si
existe el elemento NUL. El elemento NUL existe en todos los directorios existentes y en el
directorio raíz de todas las unidades.
Ejemplo.
Ejercicio.
@echo off
if not exist %1 goto :NoExi1
type %1
pause
:Fichero2
if not exist %2 goto :NoExi2
type %2
pause
goto :Fin
:NoExi1
echo El fichero %1 no existe
pause
goto :Fichero2
:NoExi2
echo El fichero %2 no existe
pause
:Fin
cls
Sintaxis 2.
Esta sintaxis basa su condición en los códigos de salida generados por los programas. Un código
de salida es un valor numérico que los programas devuelven al DOS cuando terminan su
ejecución. Dichos códigos sirven para describir la causa que ha provocado la finalización del
programa.
Sólo algunas órdenes del DOS devuelven códigos de salida que se pueden recoger y procesar con
la orden IF ERRORLEVEL. Estas órdenes son: CHOICE, DISKCOMP, DISKCOPY, DEFRAG,
63
DELTREE, FIND, FORMAT, KEYB, MOVE, REPLACE, RESTORE, SETVER, y XCOPY.
(Ver fotocopia con los códigos de salida de cada orden).
Ejemplo.
@ECHO OFF
REM
REM Formatear una unidad de disco
REM Paso como parámetro la unidad a formatear
REM
FORMAT %1
REM
REM Si el comando FORMAT devuelve el código de salida 3,
REM el usuario ha pulsado Ctrl-C.
REM
IF ERRORLEVEL 3 GOTO :ERRABORTAR
REM
REM Si el comando FORMAT devuelve el código de salida 0,
REM la operación se ha realizado correctamente.
REM
IF ERRORLEVEL 0 ECHO Formato correcto
GOTO :FIN
:ERRABORTAR
ECHO Formato suspendido por el usuario
:FIN
PAUSE
CLS
Los códigos de salida permanecen inalterables en el fichero por lotes siempre que los comandos
que se ejecuten sean internos. Cuando se ejecute un comando externo, el código de salida se
modificará.
Sintaxis 3.
Una utilidad muy importante es para saber si al ejecutar un fichero por lotes se han introducido
todos los parámetros. Cuando el usuario no introduce un parámetro, el DOS lo sustituye por un
espacio en blanco.
Ejemplo.
Ejecutar el fichero FORMATEA.BAT del ejemplo anterior sin introducir el nombre de la unidad
a formatear. Después de ver el resultado, modificar el código anterior por el siguiente nuevo
código:
@ECHO OFF
REM
64
REM Formatear una unidad de disco
REM Paso como parámetro la unidad a formatear
REM Controlo si ha introducido el nombre de la unidad a formatear
REM
IF “%1” == “” GOTO :ERRUNIDAD
REM
REM Si ha introducido unidad
REM
FORMAT %1
REM
REM Si el comando FORMAT devuelve el código de salida 3,
REM el usuario ha pulsado Ctrl-C.
REM
IF ERRORLEVEL 3 GOTO :ERRABORTAR
REM
REM Si el comando FORMAT devuelve el código de salida 0,
REM la operación se ha realizado correctamente.
REM
IF ERRORLEVEL 0 ECHO Formato correcto
GOTO :FIN
:ERRUNIDAD
ECHO No ha introducido unidad
GOTO :FIN
:ERRABORTAR
ECHO Formato suspendido por el usuario
:FIN
PAUSE
CLS
Ejercicio.
@echo off
if "%1" == "" goto :NoParam1
if not exist %1 goto :NoExi1
type %1
pause
:Fichero2
if "%2" == "" goto NoParam2
if not exist %2 goto :NoExi2
type %2
pause
goto :Fin
:NoParam1
echo No ha introducido ningún fichero a listar
pause
goto :Fin
:NoExi1
echo El fichero %1 no existe
pause
goto :Fichero2
:NoParam2
echo No ha introducido el segundo fichero a listar
pause
goto :Fin
:NoExi2
echo El fichero %2 no existe
pause
65
:Fin
cls
Orden CHOICE.
La orden CHOICE se utiliza principalmente para permitir al usuario introducir un valor en un fichero
por lotes y actuar en consecuencia. Realiza tres funciones:
2. Espera que el usuario pulse una tecla, que ha de ser una de las teclas previamente
definidas como válidas.
La sintaxis es:
Si se omiten los parámetros, la orden CHOICE no muestra ningún mensaje y asume por
defecto que sólo se pueden pulsar las teclas S o N.
Ejemplo.
texto.
Ejemplo.
El sistema visualiza el mensaje y las teclas por defecto que se pueden pulsar, es decir, S o N. Se
observa que las teclas que se pueden pulsar aparecen pegados a la letra A del mensaje mostrado.
Para que ésto no ocurra, hay que dejar un espacio en blanco al final del mensaje.
/C[:]teclas.
Se utiliza para definir las teclas que el usuario puede pulsar cuando la orden CHOICE detiene la
ejecución del fichero por lotes.
Cuando el usuario pulsa una de las teclas válidas, se inicializa el código de salida
ERRORLEVEL con un valor que depende de la posición de la tecla en el parámetro /C:teclas. El
primer carácter devuelve el código 1, el segundo el 2, y así sucesivamente. Si CHOICE detecta
algún error, devuelve el código 255 y si el usuario pulsa Ctrl-C, devuelve el código 0. Cuando el
usuario pulsa Ctrl-C, el sistema pregunta si se quiere terminar el proceso por lotes; si se responde
Sí, la ejecución se aborta; si se responde No, se puede preguntar por ERRORLEVEL 0.
Si se omite el parámetro, las teclas válidas son S o N. Por defecto, el valor de /C es /C:SN. Si
pulsamos S, se genera el código de salida 1, y si pulsamos N, se genera el código de salida 2.
Ejercicio.
Realizar un fichero por lotes que pida al usuario introducir las siguientes opciones: A, B, 1, 2 o
F. Cuando pulse la tecla F, el fichero finalizará su ejecución. En el resto de las opciones se
visualizará en pantalla la tecla pulsada y se volverá a pedir la introducción de una nueva opción.
66
@ECHO OFF
:PULSAR
CLS
CHOICE “Pulse una de las siguientes teclas: “/C:AB12F
IF ERRORLEVEL 5 GOTO :FIN
IF ERRORLEVEL 4 GOTO :DOS
IF ERRORLEVEL 3 GOTO :UNO
IF ERRORLEVEL 2 GOTO :B
IF ERRORLEVEL 1 GOTO :A
IF ERRORLEVEL 0 GOTO :ABORTAR
:ABORTAR
ECHO Interrupción del usuario. Pulse cualquier tecla
PAUSE >NUL
GOTO :FIN
:A
ECHO Ha pulsado la tecla A
PAUSE
GOTO :PULSAR
:B
ECHO Ha pulsado la tecla B
PAUSE
GOTO :PULSAR
:UNO
ECHO Ha pulsado la tecla 1
PAUSE
GOTO :PULSAR
:DOS
ECHO Ha pulsado la tecla 2
PAUSE
GOTO :PULSAR
:FIN
ECHO Fin de la ejecución. Pulse cualquier tecla
PAUSE >NUL
CLS
/S.
/N.
La orden CHOICE visualiza primero en pantalla la cadena de caracteres del parámetro texto y,
luego, el mensaje que visualiza las teclas que se pueden pulsar. El parámetro /N evita que
aparezca éste último mensaje.
Ejemplo.
Observar que hemos introducido los interrogantes en la pregunta, las teclas válidas se escriben
entre paréntesis y no entre corchetes, el carácter separador de las teclas válidas es “/” y hemos
dejado un espacio en blanco para introducir la tecla.
/T[:]tecla,segundos.
67
Se utiliza para introducir una tecla por defecto que el sistema asume transcurrido un intervalo de
tiempo determinado. tecla es un único carácter que representa la tecla que se asume por defecto,
y segundos indica el número de segundos que el sistema espera antes de tomar la tecla por
defecto. El rango de valores de segundos es de 0 a 99. Si se utiliza 0, el sistema espera
indefinidamente hasta que el usuario pulsa una tecla.
Ejemplo.
@ECHO OFF
CHOICE “¿Desea continuar? (S/N): “/N /T:N,5
IF ERRORLEVEL 2 GOTO :N
IF ERRORLEVEL 1 GOTO :S
:N
ECHO Ha elegido N
GOTO :FIN
:S
ECHO Ha elegido S
:FIN
PAUSE
CLS
1. Editor de textos
2. Versión del sistema operativo
3. Cambiar hora del sistema
4. Cambiar fecha del sistema
5. Fin
Cuando se pulse el número de la opción, se realizará la acción especificada. Después de realizar cada
acción se volverá a presentar el menú. Cada vez que se presente el menú se borrará la pantalla. El
fichero por lotes se estará ejecutando hasta que el usuario pulse la opción 5. Para escribir una línea en
blanco se utiliza la orden ECHO seguida del carácter “.” (ECHO.) .
Código.
@echo off
:menu
cls
echo 1. Editor de textos
echo 2. Versión del sistema operativo
echo 3. Cambiar hora del sistema
echo 4. Cambiar fecha del sistema
echo 5. Fin
echo.
choice “Elija una opción (1-5): “/c:12345 /n
if errorlevel 5 goto :fin
if errorlevel 4 goto :fecha
if errorlevel 3 goto :hora
if errorlevel 2 goto :version
if errorlevel 1 goto :editor
:editor
edit
goto :menu
:version
ver
68
pause
goto :menu
:hora
time
pause
goto :menu
:fecha
date
pause
goto :menu
:fin
cls
Orden FOR.
La sintaxis es:
Ejemplo.
La orden FOR también se puede escribir desde la línea de comandos. En éste caso, el parámetro %
%letra tiene que escribirse con un sólo carácter “%”.
Ejemplo.
Imprimir el contenido de todos los ficheros con la extensión TXT, copiarlos en la unidad A y
borrarlos.
Orden CALL.
La orden CALL permite ejecutar un segundo fichero por lotes y, cuando éste segundo fichero termine
su ejecución, ejecutar la orden siguiente al comando CALL.
La sintaxis es:
fichero.
parámetros.
69
Son los posibles parámetros que se pasan al fichero por lotes llamado.
Ejemplo.
Realizar un fichero por lotes, llamado FICHERO.BAT, que contenga un bucle que tome los ficheros
AUTOEXEC.BAT y CONFIG.SYS y llame a otro fichero por lotes, llamado LISTAR.BAT, que
visualice por pantalla el contenido de dichos ficheros.
@ECHO OFF
FOR %%F IN (AUTOEXEC.BAT CONFIG.SYS) DO CALL LISTAR %%F
El ejemplo consiste en realizar un fichero por lotes que copie todos los ficheros que se pasen como
parámetros, controlando que no se introduzca ningún parámetro, que los ficheros a copiar no existan
y personalizando los mensajes. Para ello vamos a utilizar dos ficheros por lotes: Copia.Bat y
Existe.Bat.
@Echo Off
Rem ----------------------------------------------------
Rem
Rem Fichero por lotes Copia.Bat
Rem
Rem Copia los ficheros introducidos como parámetros
Rem en el directorio C:\NUEVO.
Rem
Rem ----------------------------------------------------
Rem
Rem Controlamos si no se han introducido parámetros
Rem
Rem Si no se han introducido parámetros se avisa al
Rem usuario y se finaliza la ejecución del fichero
Rem por lotes
Rem
If "%1" == "" Goto :Sin_Parametros
Rem
Rem ----------------------------------------------------
Rem
Rem Controlamos si el directorio NUEVO existe
Rem
Rem Si el directorio NUEVO no existe, se crea
Rem
If Not Exist c:\nuevo\nul md c:\nuevo
Rem
Rem ----------------------------------------------------
Rem
Rem Proceso de copia
Rem
70
:Proceso_Copia
Rem
Rem Siempre vamos a trabajar con el parámetro %1,
Rem independientemente del número de parámetros
Rem que el usuario haya introducido. Para ello
Rem vamos a utilizar la orden Shift.
Rem
Rem Queremos visualizar el nombre del archivo que
Rem se está copiando. Este nombre lo tenemos en la
Rem variable %1. Cuando utilizamos una plantilla,
Rem la variable %1 va a contener el nombre de la
Rem plantilla (por ej. *.txt). Para que podamos
Rem visualizar los nombres de los ficheros que
Rem estamos copiando cuando utilizamos una plantilla,
Rem será necesario utilizar la orden For. De ésta
Rem forma, la variable %%f contendrá el nombre del
Rem fichero que se está copiando.
Rem
Rem Vamos a utilizar un nuevo fichero por lotes,
Rem llamado Existe.Bat, que va a controlar la
Rem existencia del fichero que queremos copiar y,
Rem en el caso de que exista, realizar la copia. Al
Rem fichero Existe.Bat le pasaremos como parámetro
Rem el fichero que vamos a copiar.
Rem
For %%f In (%1) Do Call Existe %%f
Rem
Rem Utilizamos la orden Shift para desplazar los
Rem parámetros introducidos por el usuario y, de
Rem ésta forma, la variable %1 tomará el valor del
Rem siguiente parámetro introducido.
Rem
Shift
Rem
Rem
Rem Controlamos que ya no hay más parámetros y,
Rem por lo tanto, que ya hemos copiado todos los
Rem archivos.
Rem
If "%1" == "" Goto :Fin
Rem
Rem Volvemos a realizar el proceso
Rem
Goto :Proceso_Copia
Rem
Rem ----------------------------------------------------
Rem
Rem El usuario no ha introducido ningún parámetro
Rem
:Sin_Parametros
Echo Error: No ha introducido ningún archivo a copiar
Echo Pulse una tecla
Rem
Rem La orden Goto :Fin no es necesaria porque lo que
Rem se ejecuta a continuación es la etiqueta :Fin, pero
Rem la ponemos para que sepamos lo que estamos haciendo
Rem sin necesidad de seguir consultando el código.
Rem
Goto :Fin
Rem
71
Rem ----------------------------------------------------
Rem
Rem Fin del fichero por lotes
Rem
:Fin
Echo La copia ha finalizado. Pulse una tecla
Pause >Nul
Cls
Rem
Rem ----------------------------------------------------
Rem ----------------------------------------------------
Rem
Rem Fichero por lotes Existe.Bat
Rem
Rem Este fichero se llama desde el fichero por lotes
Rem Copia.Bat
Rem
Rem Comprobamos si el fichero que se ha pasado como
Rem parámetro desde Copia.Bat existe.
Rem
If Not Exist %1 Goto :No_Existe
Rem
Rem ----------------------------------------------------
Rem
Rem Si el fichero existe, se realiza la copia, mostrando
Rem un mensaje con el nombre del fichero que se está
Rem copiando.
Rem
Rem Redireccionamos la salida del comando Copy al
Rem dispositivo Nul para que no se visualice el mensaje
Rem que genera la orden Copy cuando copia un fichero.
Rem
Echo Copiando el fichero %1 en c:\nuevo
Copy %1 c:\nuevo >Nul
Goto :Fin
Rem
Rem ----------------------------------------------------
Rem
Rem El fichero que se va a copiar no existe
Rem
:No_Existe
Echo El fichero %1 no existe. Pulse una tecla
Pause >Nul
Rem Goto :Fin
Rem
Rem ----------------------------------------------------
Rem
Rem El fichero por lotes termina su ejecución
Rem
:Fin
Rem
Rem ----------------------------------------------------
@Echo Off
If "%1" == "" Goto :Sin_Parametros
72
If Not Exist c:\nuevo\nul md c:\nuevo
:Proceso_Copia
For %%f In (%1) Do Call Existe %%f
Shift
If "%1" == "" Goto :Fin
Goto :Proceso_Copia
:Sin_Parametros
Echo Error: No ha introducido ningún archivo a copiar
Echo Pulse una tecla
Goto :Fin
:Fin
Echo La copia ha finalizado. Pulse una tecla
Pause >Nul
Cls
La memoria.
En 1.980, cuando los arquitectos de ordenadores IBM crearon el primer ordenador personal, lo hicieron
con un máximo de 1024Kb direcciones de memoria. Desde ése momento, y hasta nuestros días, el DOS
sólo reconoce que existen 1024Kb direcciones de memoria, de las cuales las 640Kb primeras se utilizan
para ejecutar programas y las 384 restantes se reservan para uso del sistema, asignando a ésas direcciones
las celdas de memoria con las rutinas de la memoria ROM.
Para solucionar los problemas que se derivan de disponer una memoria de sólo 1Mb, se han creado los
siguientes tipos de memoria:
Memoria convencional.
La memoria convencional está formada por celdas de memoria en chips RAM y toma como dirección
los primeros 640Kb de memoria del ordenador. En la memoria convencional se ejecutan todos los
programas del DOS. El objetivo de todo usuario es tener en su ordenador la mayor cantidad posible
de memoria convencional libre, y uno de los objetivos primordiales de todos los programadores es
crear programas que no excedan el límite de 640Kb.
Los 640Kb de la memoria convencional no están a disposición de los usuarios, sino que entre 110Kb
y 140Kb se utilizan para almacenar la siguiente información:
En los primeros 2Kb, se almacenan unas tablas de datos fundamentales para el ordenador (la
tabla de interrupciones, la tabla de características del ordenador, etc.).
Son las rutinas básicas almacenadas en los ficheros de sistema IO.SYS y MSDOS.SYS. Ocupan
unos 44Kb, que se convierten en 88Kb si se ha cargado el fichero de sistema DBLSPACE.BIN.
73
Hay cinco órdenes del fichero CONFIG.SYS que se cargan en memoria convencional:
BUFFERS, FCBS, FILES, LASTDRIVE y STACKS. El tamaño de cada una de ellas depende
del valor especificado.
Controladores de dispositivos.
Todos los controladores de dispositivo que se cargan con la orden DEVICE se almacenan en
memoria convencional. El tamaño depende de los valores asignados.
Programa COMMAND.COM.
La parte del fichero COMMAND.COM que se carga en memoria convencional ocupa unos 3Kb.
Se cargan desde el fichero AUTOEXEC.BAT. Se pueden incluir entre éstos programas: KEYB,
DOSKEY o FASTOPEN. El espacio ocupado depende del número de programas residentes
cargados y del tamaño de cada uno de ellos.
Memoria superior.
Son los 384Kb de memoria comprendida entre 640Kb y 1024Kb. La memoria superior está reservada
para programas del sistema y rutinas de inicialización y control, que se almacenan en segmentos,
siendo cada segmento 64Kb. Estos programas son:
Memoria vídeo.
La memoria vídeo son celdas de memoria de chips RAM que almacenan los caracteres y
atributos que se visualizan en pantalla. Los chips RAM de la memoria vídeo no se incluyen en la
placa base, sino que se integran dentro de la propia tarjeta de vídeo. El contenido de los chips
RAM de la tarjeta gráfica se sitúa en los segmentos A y B de la memoria superior.
ROM BIOS.
La ROM BIOS es el conjunto de rutinas básicas que gestionan las operaciones de E/S en el
ordenador (por ejemplo, transformar la pulsación de una tecla en el código ASCII de dicha
tecla). Las rutinas de la BIOS se almacenan en chips ROM que se incluyen dentro de la placa
base. Cuando se enciende el ordenador, el sistema se encarga de asignar las celdas de memoria
de los chips de la ROM BIOS a las direcciones del segmento F, que es el último segmento de la
memoria superior.
Extensiones ROM.
Son rutinas almacenadas en chips ROM que gestionan diversos dispositivos del sistema, como,
por ejemplo, la tarjeta controladora del disco duro. Se almacenan en los segmentos C, D, y F.
En la memoria superior existen huecos libres con direcciones no asignadas a ningún programa. En
éstos huecos libres es posible cargar los controladores de dispositivos y los programas residentes del
DOS, liberando una cantidad considerable de memoria convencional. Estos huecos libres reciben el
nombre de bloques de memoria superior o UMB (Upper Memory Block).
Memoria extendida.
74
Si un ordenador tiene, por ejemplo, 32 Mb de memoria RAM, los 640Kb primeros de dicha memoria
se sitúan en los primeros 640Kb de la memoria convencional y el resto son memoria extendida. Los
384Kb de la memoria superior no se pueden ocupar con chips RAM.
Memoria expandida.
Se puede decir que la memoria expandida no existe, pues no hay ninguna dirección de memoria que
reciba el nombre de memoria expandida. Esta memoria es simplemente un método para acceder a
más memoria de la permitida en el ordenador, un truco para aumentar el rango de direcciones de los
ordenadores.
La memoria expandida funciona con una técnica conocida como intercambio o conmutación de
bancos de memoria. Los 64Kb del marco de página se dividen en 4 páginas físicas de 16Kb cada una
y toda la memoria expandida se divide en páginas lógicas de 16Kb cada una. Cuando se necesita una
determinada página lógica, la especificación de memoria expandida se encarga de copiar el contenido
de la página lógica en una página física, de forma que el DOS pueda acceder a ella. Por ejemplo, si
un programa necesita la página lógica 14, sólo hay que copiar el contenio de dicha página en una de
las cuatro páginas físicas del marco de página, por ejemplo la 2, y leer dicha página 2. La operación
de copiar una página lógica en una página física recibe el nombre de mapear.
Memoria alta.
La memoria alta ocupa desde la dirección 1024Kb hasta la dirección 1088Kb, es decir, 64Kb. Para
poder acceder a ella, el DOS utiliza un método de direccionamiento basado en el sistema
hexadecimal.
La memoria alta recibe el nombre de HMA (High Memory Area). Para crear el HMA hay que tener
64Kb libres de memoria extendida e instalar el controlador HIMEM.SYS.
En la memoria alta sólo se puede almacenar un programa. No pueden existir dos o más programas
utilizando parte de la memoria alta, por lo que conviene cargar en memoria alta un programa que
ocupe la mayor cantidad posible del HMA. Normalmente se utiliza para cargar el núcleo del DOS
(ficheros IO.SYS y MSDOS.SYS). De ésta forma, se liberan 44 Kb de memoria convencional.
Es igual que la memoria extendida, desarrollada bajo la especificación XMS (creada por Microsoft,
Intel, AST y Lotus), con el propósito de definir un método estándar en la gestión de memoria
extendida. Con éste método, pueden ejecutarse diferentes programas que utilicen distintos bloques de
memoria extendida. El sistema operativo Windows trabaja con memoria extendida a través de la
especificación XMS.
Tanto el sistema operativo DOS como Windows, utilizan el controlador HIMEM.SYS para reconocer
la memoria extendida XMS, por lo que dicha memoria se sitúa a partir de la dirección 1088Kb, pues,
hasta ésta dirección, y desde la 1024Kb, se sitúa la HMA, que también es creada por el controlador
HIMEM.SYS.
75
Se utiliza para guardar el programa de configuración SETUP que contiene las características más
importantes del ordenador: fecha y hora activa, número y tipo de las unidades de disquetes y de disco
duro, memoria RAM instalada, memoria extendida instalada, etc.
Memoria sombra.
La memoria sombra (shadow RAM) es una técnica para optimizar la velocidad del ordenador, que
consiste en traspasar las rutinas BIOS incorporadas en chips ROM, a los cuales es más lento el
acceso, a una zona de memoria RAM. La memoria sombra recibe éste nombre porque crea una copia
en RAM de las rutinas ROM.
La memoria sombra se sitúa en la memoria extendida y se puede activar o desactivar mediante unos
interruptores en la placa base o por medio del programa SETUP.
Memoria caché.
La memoria caché se crea en la memoria convencional, extendida o expandida y es utilizada por los
programas caché. Existen dos tipos de programas caché:
Caché de disco.
Los cachés de disco utilizan memoria RAM para almacenar los sectores del disco duro que se
utilizan con más frecuencia. De ésta forma, cuando se pide el contenido de alguno de ésos
sectores, se leen de la memoria, que es mucho más rápido que si se leen del disco.
Caché de memoria.
Los cachés de memoria almacenan en chips de memoria ultrarápida los datos más utilizados por
el sistema. En éste caso se acelera todavía más la velocidad de proceso que en los cachés de
disco.
A continuación, vamos a ver las distintas operaciones que se pueden realizar con la memoria instalada:
La orden MEM se utiliza para conocer el mapa de memoria del ordenador, indicando la memoria
convencional libre, la memoria superior libre y qué programas están almacenados tanto en memoria
convencional como en memoria superior. También se incluye información sobre las memorias
extendida y expandida.
La sintaxis es:
/D[EBUG].
Visualiza una lista de los programas residentes que están ocupando las memorias convencional y
superior. El listado se compone de una línea por cada bloque de memoria ocupado.
/C[LASSIFY].
76
Visualiza de forma mucho más organizada y legible para el usuario los bloques de memoria
ocupados y libres en las memorias convencional y superior. Tiene el inconveniente de que no
indica la dirección de comienzo de los programas y no distingue entre controladores de
dispositivo y programas residentes.
/F[REE].
Visualiza los bloques de memoria libres en las memorias convencional y superior. En el listado
de la memoria superior no aparecen los bloques pequeños de memoria libre.
/M[ODULE]:programa.
Si en el apartado región no aparece nada, quiere decir que el programa está almacenado en
memoria convencional.
Si se visualiza el programa MSDOS, se muestran tanto los bloques que almacenan las rutinas
básicas del DOS (ficheros de sistema, espacio ocupado por FILES, LASTDRIVE, etc.) como los
bloques libres.
/P[AGE].
Un disco RAM o disco virtual es una unidad lógica creada en memoria. A efectos prácticos, un disco
RAM funciona exactamente igual que una unidad de disquete o un disco duro.
Los discos RAM son una herramienta muy poderosa que permite aumentar significativamente la
velocidad del sistema. Se utilizan para copiar en ellos programas de aplicación, junto con los ficheros
o bases de datos que utilicen, y ejecutarlos desde el disco virtual. Antes de apagar el ordenador hay
que copiar los datos del disco virtual al disco real.
El DOS asigna al disco virtual la primera letra de unidad libre. Los discos RAM tienen sector de
arranque, FAT, directorio raíz y área de datos del usuario.
La orden para crear discos RAM es RAMDRIVE. Esta orden debe incluirse en el fichero
CONFIG.SYS. Su sintaxis es:
tamaño.
Es el tamaño del disco RAM. El rango de valores es de 4Kb a 32 Mb. El tamaño por defecto son
64Kb.
sector.
Indica el número de bytes de cada sector. Los valores permitidos son 128, 256, 512 y 1024. El
valor por defecto es 512.
entradas.
Es el número máximo de entradas de directorio que podrá contener el directorio raíz del disco
RAM. El rango es de 2 a 1024. El valor por defecto es 64.
77
/A,/E.
La opción /A crea el disco RAM en memoria expandida EMS y la opción /E lo crea en memoria
extendida XMS. Si se omite éste parámetro se crea en memoria convencional. Si vamos a utilizar
éstas memorias, hay que instalar, previamente, el controlador de memoria expandida o
extendida. No conviene crear los discos RAM en la memoria convencional.
Se pueden crear dos o más discos RAM en el sistema. Para ello hay que incluir tantas órdenes
RAMDRIVE en el fichero CONFIG.SYS como discos virtuales se quieran crear.
La orden SMARTDRV se utiliza para crear un caché de disco duro en memoria extendida, que
acelera las aplicaciones del usuario evitando el acceso al disco duro. Por ejemplo, si tenemos el caché
de disco creado y ejecutamos varias veces la orden DIR, comprobaremos que a partir de la segunda
vez no se lee del disco, porque el contenido de la orden DIR se ha copiado en el caché.
Para cada unidad se puede crear un caché de lectura y un caché de escritura. En el caché de lectura se
guardan los últimos sectores leídos de la unidad. En el caché de escritura se almacenan los sectores
que se escriben en la unidad, por si es necesario volver a escribirlos.
Para crear el caché de disco duro, hay que ejecutar ésta orden desde la línea de comandos. Su sintaxis
es:
unidad[{+,-}].
Permite crear en cualquier momento el caché para una determinada unidad de disco. Se pueden
introducir varias unidades separadas por un espacio en blanco. Si se introduce el carácter “+”
detrás de la letra de una unidad, se crea el caché de lectura y el caché de escritura para dicha
unidad. Si se introduce el carácter “-“, se desactivan ambos cachés para la unidad especificada.
Si sólo se introduce el nombre de la unidad, se crea únicamente el caché de lectura para dicha
unidad.
tamaño.
Define el número de Kb de memoria extendida que se usan para crear el caché de disco duro. El
rango de valores es de 128Kb a 8Mb. El valor por defecto depende de la cantidad de memoria
extendida instalada en el ordenador.
tamañoWindows.
/B:buffer.
Define el tamaño en Kb del buffer de lectura anticipada. Por defecto, SMARTDRV almacena en
el caché únicamente el sector que se desea leer. Este parámetro indica a SMARTDRV que, cada
vez que se realice una operación de lectura, debe leer los sectores siguientes al sector solicitado,
hasta alcanzar el tamaño definido en buffer. De ésta forma, si la aplicación pide leer los sectores
siguientes, ya estarán en memoria. Hay que tener cuidado al definir el tamaño del buffer, porque
éste se crea en memoria convencional. El valor por defecto son 16Kb.
/E:tamaño.
78
Define la cantidad de datos en bytes que SMARTDRV puede mover a la vez entre la memoria
extendida y la memoria convencional. Los valores permitidos son 1024, 2048, 4096 y 8192
bytes. El valor por defecto son 8192 bytes.
/L.
Impide que SMARTDRV se cargue en memoria superior. Este parámetro sólo se puede
introducir la primera vez que se carga SMARTDRV.
/V.
Visualiza los mensajes y estadísticas de SMARTDRV la primera vez que se carga el caché.
/Q.
/C.
Vuelca el contenido del caché en el disco duro. Normalmente éste parámetro no se utiliza porque
SMARTDRV aprovecha los momentos en que el disco duro está inactivo para realizar ésta
operación.
/R.
/S.
Si hay que elegir entre crear un disco RAM o un caché de disco, es mejor utilizar el caché de disco,
porque permite acelerar la velocidad del programa que se esté ejecutando en todo momento y no sólo
del programa cargado en el disco virtual y, además, con el caché de disco no hay que realizar las
operaciones de copiado al disco RAM y al disco real. Si la memoria lo permite, la mejor solución es
utilizar ambos métodos.
El caché de disco SMARTDRV puede cargar en memoria una característica denominada buffer
doble, que proporciona compatibilidad con algunos discos duros cuando se está utilizando el
controlador EMM386.EXE. En la mayoría de las ocasiones, el buffer doble se necesita cuando el
ordenador posee un disco duro SCSI, pero también puede ser necesario en discos duros ESDI o
MCA.
Para cargar el buffer doble hay que incluir la orden SMARTDRV en el fichero CONFIG.SYS. Su
sintaxis es la siguiente:
DEVICE=C:\DOS\SMARTDRV.EXE /DOUBLE_BUFFER
Para saber si nuestro disco duro necesita cargar el buffer doble de SMARTDRV hay que realizar las
siguientes operaciones:
DEVICE=C:\DOS\SMARTDRV.EXE /DOUBLE_BUFFER
REM En la siguiente instrucción se puede incluir el parámetro RAM o NOEMS
79
DEVICE=C:\DOS\EMM386.EXE NOEMS
DOS=UMB
A continuación vamos a ver los métodos que se utilizan para optimizar la gestión de la memoria, es decir,
aumentar la cantidad de memoria convencional libre que le quedan a los programas del DOS. Estos
métodos son los siguientes:
Antes de ejcutar MEMMAKER es preciso comprobar qué controladores y programas residentes hay
instalados en memoria. Debemos distinguir entre dos clases: controladores y programas residentes
que queremos cargar cada vez que el ordenador se enciende (por ejemplo, el programa KEYB, que
carga el teclado en español, o el controlador del ratón) y los programas residentes y controladores
que utilizamos ocasionalmente (por ejemplo, un disco RAM que creamos cuando vamos a ejecutar
una determinada aplicación). Conviene que eliminemos de los ficheros CONFIG.SYS y
AUTOEXEC.BAT las órdenes que cargan en memoria los programas residentes y controladores que
no utilizamos en el trabajo diario, porque el programa MEMMAKER realiza la optimización de la
memoria en base a la ocupación de la misma en el momento de su ejecución. Después de modificar
los ficheros CONFIG.SYS y AUTOEXEC.BAT, hay que reinicializar el ordenador para que cargue
en memoria los programas y controladores que nos interesen y, posteriormente, ejecutar
MEMMAKER.
80
En realidad, MEMMAKER lo único que hace es modificar los ficheros CONFIG.SYS y
AUTOEXEC.BAT para que al inicializar el ordenador todos los controladores y programas
residentes que se cargan en éstos archivos se almacenen en memoria de la forma más óptima posible.
Aunque MEMMAKER realiza una copia de los ficheros CONFIG.SYS y AUTOEXEC.BAT en el
directorio DOS con los nombres CONFIG.UMB y AUTOEXEC.UMB, conviene que nosotros
realicemos otra copia de éstos ficheros antes de ejecutar MEMMAKER.
Cuando los controladores y programas residentes se cargan en memoria, además de necesitar espacio
para su tamaño, necesitan espacio disponible para los programas que inicializan y cargan dicho
controlador o programa. El tamaño del programa residente o controlador y los programas necesarios
para inicializarlo y cargarlo se denomina tamaño máximo. El tamaño del controlador o programa
residente, que es el que queda almacenado en memoria, se llama tamaño final. Estos conceptos son
muy importantes cuando los controladores y programas residentes se cargan en memoria superior.
Supongamos que en memoria superior tenemos 60Kb libres y queremos almacenar un programa A
con un tamaño máximo de 20Kb y un tamaño final de 12Kb, y un programa B con un tamaño
máximo de 50Kb y un tamaño final de 30Kb. Si se carga primero el programa A, los 60Kb quedan
reducidos a 48Kb (60Kb-12Kb), siendo imposible cargar el programa B, cuyo tamaño máximo es de
50Kb. Por el contrario, si cargamos primero el programa B y luego el programa A, no surge ningún
problema. De todo esto se deduce que es necesario cargar en memoria superior los controladores y
programas residentes con mayor tamaño máximo. Cuando termina su ejecución, MEMMAKER crea
en el directorio del DOS un fichero llamado MEMMAKER.STS, que es un fichero de texto y
contiene las estadísticas de los programas analizados durante la optimización. Además, en éste
fichero se indican el tamaño máximo y el tamaño final de cada controlador y programa residente que
existían en CONFIG.SYS y AUTOEXEC.BAT al ejecutar MEMMAKER. Por lo tanto, para saber
los tamaños máximo y final de un controlador o programa residente, hay que incluirlo en los ficheros
CONFIG.SYS y AUTOEXEC.BAT y ejecutar MEMMAKER.
Al instalar el sistema operativo Ms-Dos 6.22 en el ordenador, el contenido de los ficheros Config.sys
y Autoexec.bat es el siguiente:
Fichero Config.sys.
DEVICE=C:\DOS\SETVER.EXE
DEVICE=C:\DOS\HIMEM.SYS
DOS=HIGH
COUNTRY=034,,C:\DOS\COUNTRY.SYS
DEVICE=C:\DOS\DISPLAY.SYS CON=(EGA,,1)
FILES=30
81
Fichero Autoexec.bat.
C:\DOS\SMARTDRV.EXE /X
@ECHO OFF
PROMPT $p$g
PATH C:\DOS
SET TEMP=C:\DOS
MODE CON CODEPAGE PREPARE=((850) C:\DOS\EGA.CPI)
MODE CON CODEPAGE SELECT=850
KEYB SP,,C:\DOS\KEYBOARD.SYS
DOSKEY
Si visualizamos el contenido de la memoria con el comando Mem /f, el resultado sería el siguiente:
Segmento Total
-------- -----------------
006AE 80 (0K)
006C4 96 (0K)
00F97 88.992 (87K)
02551 501.488 (490K)
Fichero Config.sys
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE NOEMS
BUFFERS=15,0
FILES=30
DOS=UMB
LASTDRIVE=E
FCBS=4,0
DEVICEHIGH /L:1,12192 =C:\DOS\SETVER.EXE
DOS=HIGH
COUNTRY=034,,C:\DOS\COUNTRY.SYS
DEVICEHIGH /L:1,15872 =C:\DOS\DISPLAY.SYS CON=(EGA,,1)
Fichero Autoexec.bat.
LH /L:0;1,45968 /S C:\DOS\SMARTDRV.EXE /X
@ECHO OFF
PROMPT $p$g
PATH C:\DOS
SET TEMP=C:\DOS
MODE CON CODEPAGE PREPARE=((850) C:\DOS\EGA.CPI)
MODE CON CODEPAGE SELECT=850
LH /L:1,17312 KEYB SP,,C:\DOS\KEYBOARD.SYS
LH /L:2,6544 DOSKEY
Si visualizamos el contenido de la memoria con el comando Mem /f, el resultado sería el siguiente:
82
Segmento Total
-------- -----------------
0058C 80 (0K)
005A2 96 (0K)
005A8 88.992 (87K)
01B62 543.184 (530K)
[MemmakerData]
State= DONE 27536
AvailConvMemoryBefore=590640
AvailUpperMemoryBefore=0
UsedUpperMemoryBefore=0
WindowsUpperMemoryBefore=0
EMSUpperMemoryBefore=0
AltSysFiles=Falso
WindowsXlat=Falso
CustomMode=Falso
AutoexecBatCheckSum=15001
ConfigSysCheckSum=16198
SystemIniCheckSum=0
WindowsLocation=
[SizeData]
Command=C:\DOS\SETVER.EXE
Line=8
FinalSize=528
MaxSize=12192
FinalUpperSizes=0
MaxUpperSizes=0
ProgramType=DEVICE
Command=C:\DOS\DISPLAY.SYS CON=(EGA,,1)
Line=11
FinalSize=8352
MaxSize=15872
FinalUpperSizes=0
MaxUpperSizes=0
ProgramType=DEVICE
Command=C:\DOS\SMARTDRV.EXE /X
Line=0
FinalSize=0
MaxSize=45408
FinalUpperSizes=29104
MaxUpperSizes=45968
ProgramType=PROGRAM
83
Command=KEYB SP,,C:\DOS\KEYBOARD.SYS
Line=7
FinalSize=6944
MaxSize=17312
FinalUpperSizes=0
MaxUpperSizes=0
ProgramType=PROGRAM
Command=DOSKEY
Line=8
FinalSize=4144
MaxSize=6544
FinalUpperSizes=0
MaxUpperSizes=0
ProgramType=PROGRAM
Para cargar el núcleo del DOS (IO.SYS y MSDOS.SYS) en memoria alta, primero hay que crear el
HMA, operación que se realiza cargando en memoria el controlador HIMEM.SYS mediante la orden
DEVICE del fichero CONFIG.SYS. Aunque HIMEM.SYS acepta varios parámetros, en la mayoría
de las ocasiones no es necesario utilizar ninguno.
Posteriormente hay que utilizar la orden DOS=HIGH en el fichero CONFIG.SYS, que es la que
realmente instala el núcleo del DOS en memoria alta. Además del núcleo del DOS, los buffers
creados por el usuario mediante la orden BUFFERS, también se cargan en memoria alta. El número
máximo de buffers que se pueden cargar en memoria alta es de 49, o 29 si también está instalado el
controlador DISPLAY.SYS. Si se sobrepasan éstos límites, los buffers se instalan en memoria
convencional.
Método estático.
Método dinámico.
El método dinámico crea una memoria que se puede utilizar como memoria extendida o como
memoria expandida, según las necesidades del programa.
Para convertir memoria extendida en memoria expandida, se carga el controlador EMM386.EXE sin
nigún parámetro, creando 256Kb de memoria expandida con el método estático y configurando toda
la memoria libre por encima de 1024Kb como memoria expandida dinámica. Consultar la ayuda para
ver la sintaxis completa. Lo más aconsejable es utilizar la configuración por defecto o una
configuración que utiliza toda la memoria libre como memoria expandida dinámica. Para ello hay
que incluir en el fichero CONFIG.SYS la orden DEVICE=C:\DOS\EMM386.EXE MIN=0. El
parámetro MIN=0 indica el tamaño de memoria expandida que se crea con el método estático.
84
Cargar programas en memoria superior.
Para usar los bloques de memoria superior, hay que seguir los siguientes pasos:
2. Instalar el controlador EMM386.EXE, que se encarga de crear los bloques de memoria superior.
Para que EMM386.EXE pueda crear los bloques de memoria superior, hay que utilizar los
parámetros RAM o NOEMS. El parámetro RAM crea los bloques de memoria superior y
convierte la memoria extendida en expandida. El parámetro NOEMS, sólo crea los bloques de
memoria superior.
3. Activar la orden DOS=UMB en el fichero CONFIG.SYS. Esta orden reserva los bloques de
memoria superior para uso del DOS. Si no se especifica ésta orden, los bloques de memoria
superior sólo podrán ser utilizados por los programas que usan servicios especiales de la
especificación XMS. Si se quiere cargar el núcleo del DOS en memoria alta se puede utilizar la
orden DOS=HIGH,UMB o dos líneas con las órdenes DOS=HIGH y DOS=UMB.
4. Cargar controladores de dispositivo en UMB. Para realizar ésta operación hay que utilizar la
orden DEVICEHIGH. Esta orden intenta cargar el controlador especificado en memoria superior
y, si no puede, lo instala en memoria convencional. Todos los controladores de dispositivo del
DOS se pueden cargar en memoria superior, excepto HIMEM.SYS y EMM386.EXE, porque son
los que crean la memoria superior y los UMB.
5. Cargar programas residentes en UMB. Para ello hay que ejecutar la orden LH (LOADHIGH) en
el fichero AUTOEXEC.BAT. Esta orden se encarga de instalar en memoria superior el programa
cuyo nombre, sin extensión, se incluya como parámetro. Los programas residentes que el DOS
puede cargar en memoria superior son: APPEND, DOSKEY, GRAPHICS, KEYB, MODE,
MOUSE, NLSFUNC, PRINT, SHARE, SMARTDRV y VSAFE.
Los programas residentes o controladores de dispositivo se pueden cargar en una zona determinada
de la memoria superior. Para ello hay que utilizar las órdenes LH de AUTOEXEC.BAT y
DEVICEHIGH de CONFIG.SYS con la opción /L.
Al utilizar la orden MEM con la opción /F, se visualizan los bloques de memoria libres y, entre otra
información, la región donde están situados dichos bloques y su tamaño. Esta información es
necesaria para cargar los programas residentes y los controladores de dispositivo en una zona
determinada.
LH [/L:región[,tamaño_mínimo];...] programa
programa y controlador.
Son el nombre del programa residente o del controlador de dispositivo, respectivamente, que se
quiere cargar.
región.
85
Es el número de la región de memoria superior donde se desea cargar el programa residente o el
controlador. Cuando se especifica una sóla región, sólo se podrán cargar en ésa región. Si no se
puede, se carga en memoria convencional. Se pueden definir varias regiones, separadas por el
carácter “;”.
tamaño_mínimo.
Indica la cantidad en bytes que ha de tener el bloque libre más grande de la región especificada
para que se pueda cargar el programa o el controlador en dicha región.
Ejemplos.
LH /L:1,6544 DOSKEY
Intenta cargar el programa residente DOSKEY en la región 1 de memoria superior, siempre que
en dicha región exista un bloque libre de, al menos, 6544 bytes.
Intenta cargar el controlador ANSI.SYS en las regiones 1 y 2 de memoria superior, siempre que
exista espacio libre. Se podría haber introducido el tamaño mínimo en cualquiera de las dos
regiones o en las dos.
Fichero Config.sys
Cada vez que se enciende el ordenador y se carga el DOS, primero se buscan los ficheros de sistema y el
procesador de órdenes COMMAND.COM, luego se busca en el directorio raíz el fichero CONFIG.SYS
y, por último, se busca en el directorio raíz el fichero AUTOEXEC.BAT.
El fichero CONFIG.SYS es un fichero de texto, utilizado en el proceso de inicialización, que sirve para
configurar el sistema. Está formado por un grupo de órdenes que, en su gran mayoría, sólo se pueden
ejecutar desde éste fichero. Estas órdenes definen ciertos parámetros claves de la configuración del
sistema, tales como el número de ficheros que se pueden abrir, el formato de fecha y hora, etc.
El valor por defecto de una orden es el valor que asume el sistema si no existe el fichero CONFIG.SYS o
si existe y no se ha dado ningún valor a dicha orden.
El fichero CONFIG.SYS sólo se lee una vez, cuando el sistema se inicializa. Si se realiza algún cambio,
sólo se tendrá en cuenta cuando se vuelva a encender o inicializar el sistema.
Si después de escribir el nombre de una orden y antes del signo “=” introducimos el carácter “?”, el
sistema pregunta al usuario si desea o no cargar dicha orden.
Orden BUFFERS.
Un buffer es una zona de memoria que se utiliza para almacenar datos temporalmente. La orden
BUFFERS define el número de buffers de disco que se crean en el sistema. Los buffers de disco se
engloban bajo el término genérico cachés de disco. Un buffer de disco es una zona de memoria que
almacena los últimos datos que se leen o escriben en un disco. De ésta forma, cuando se necesitan
volver a leer los mismos datos sólo hay que leer la memoria (el contenido del buffer), y no otra vez el
disco. Cada buffer de disco puede almacenar el contenido de un sector. El DOS lleva una lista que
indica el buffer con el sector menos utilizado. Cada vez que se lee o escribe un nuevo sector que no
estaba almacenado en los buffers, desaparece de los buffers el sector menos utilizado y su contenido
se reemplaza con el nuevo sector.
86
importante terminar la ejecución de los programas antes de apagar el ordenador, sobre todo cuando
estamos trabajando con bases de datos. Cuando se termina la ejecución de un programa, se envía una
orden al DOS para que copie al disco el contenido de todos los buffers, de forma que se almacenen
los cambios realizados.
BUFFERS=número_buffers [,buffers_lectura_anticipada]
número_buffers.
Indica el número de buffers de disco que se quieren crear en el sistema. El rango de valores es de
1 a 99. Su valor por defecto es 15.
buffers_lectura_anticipada.
Especifica el número de buffers (rango de 1 a 8) que se rellenan a la vez cuando se solicita una
operación de entrada o salida. Si se lee el sector 39 y el número de buffers de lectura anticipada
es 4, el DOS almacena en los buffers los sectores 39, 40, 41 y 42. De ésta forma, si se pide
acceso a los sectores 40, 41 y 42 no hay que acceder al disco, sólo a los buffers de memoria,
lográndose un aumento significativo de la velocidad y el rendimiento global.
Orden COUNTRY.
Se utiliza para definir características específicas a un país. Estas características son las siguientes:
Los caracteres que se utilizan para separar los millares y los decimales. En España
utilizamos el punto como carácter separador de los millares y la coma para separar los
decimales. En Estados Unidos es al contrario.
COUNTRY=código_país[,[página_códigos],C:\DOS\COUNTRY.SYS]
código_país.
Representa el código numérico que identifica al país. Es el mismo número que sirve como
código telefónico internacional. En España se ha de utilizar el código 34, pero también se puede
usar el código 3 si deseamos visualizar las horas con el formato 5:30p en lugar de 17:30.
página_códigos.
Es la página de códigos para la cual se quiere inicializar el código del país. Las páginas de
códigos que soporta el código de país 34 son la 437 y la 850. Si se especifica el código de país
34 y se omite éste parámetro, se asume por defecto la página de códigos 850.
COUNTRY.SYS.
87
Es la trayectoria del fichero que almacena la información de cada país, normalmente
C:\DOS\COUNTRY.SYS.
Para separar los tres parámetros se utiliza el carácter “,”. Si no se especifica el parámetro página de
códigos, hay que escribir una coma para que el DOS sepa que no existe dicho parámetro. Se
escribiría de la siguiente forma: COUNTRY=34,,C:\DOS\COUNTRY.SYS.
Si no se especifica la orden COUNTRY, el DOS asume por defecto el código de país 1, que
corresponde a Estados Unidos, la página de códigos 437, que también corresponde a Estados Unidos,
y el fichero COUNTRY.SYS situado en el directorio raíz.
Orden DEVICE.
Residentes.
Gestionan los dispositivos que soporta directamente el DOS. Estos dispositivos son: CON, NUL,
COM 1-4, LPT1-3, y CLOCK$. Los controladores de dispositivo residentes están almacenados
en los ficheros IO.SYS y MSDOS.SYS y, por lo tanto, se cargan en memoria cuando el
ordenador se enciende o se reinicializa.
Instalables.
Se utilizan para crear una vía de comunicación entre el DOS y los dispositivos no soportados
directamente por el sistema (scánner, unidad de Cd-Rom, etc.).
La sintaxis es:
DEVICE=fichero_controlador [parámetros_controlador]
Hay que incluir tantas órdenes DEVICE como controladores de dispositivo queramos cargar.
ANSI.SYS.
La sintaxis es:
DEVICE=C:\DOS\ANSI.SYS
DBLSPACE.SYS.
Su única misión es definir la posición final en memoria que tendrá el fichero DBLSPACE.BIN.
DISPLAY.SYS.
88
Proporciona al monitor la capacidad de cambiar la página de códigos activa y, por lo tanto,
visualizar caracteres de varias páginas de códigos distintas.
La sintaxis es:
DEVICE=C:\DOS\DISPLAY.SYS CON=([tipo],[,página][(,num_páginas,fuentes)])
tipo.
Indica el tipo de tarjeta gráfica utilizada. El único valor que acepta es EGA, que soporta
todas las tarjetas.
página.
Es la página de códigos hardware soportada por la tarjeta gráfica. Los valores permitidos
son: 437 (Estados Unidos), 850 (multilingüe), 852 (lenguas eslavas), 860 (Portugal), 863
(Canadá-francés) y 865 (Nórdico). Normalmente se utiliza el valor 437.
num_páginas.
Indica el número de páginas de código preparadas que pueden ser soportadas. El rango es de
0 a 12 y el valor por defecto es 1.
fuentes.
DRIVER.SYS.
Permite que una unidad física de disquetes sea referenciada mediante una nueva unidad lógica
cuyos parámetros pueden coincidir o no con los parámetros reales de la unidad física. Consultar
la ayuda para la sintaxis (éste controlador prácticamente no se utiliza).
EGA.SYS.
Se utiliza para grabar y restaurar la pantalla en los sistemas EGA cuando se conmutan programas
en el SHELL del DOS. Sólo se utiliza cuando el sistema de vídeo es EGA. Si se trabaja con el
ratón, hay que instalar el controlador EGA.SYS antes que el controlador del ratón.
La sintaxis es:
DEVICE=C:\DOS\EGA.SYS
EMM386.EXE.
Se utiliza para crear bloques de memoria superior y transformar la memoria extendida XMS en
memoria expandida EMS. Sólo funciona en ordenadores 386 y superiores.
La sintaxis, cuando se utiliza como orden externa, ejecutándose desde la línea de comandos, es:
89
Son los tres estados en que se puede encontrar el controlador EMM386 una vez instalado.
Cuando está en ON, se soporta la memoria expandida y se crean los bloques de memoria
superior. Es el valor por defecto. Cuando está en OFF, no se soportan éstas funciones.
Cuando está en el modo automático (AUTO), se activa el soporte de memoria expandida
sólo cuando un programa requiere explícitamente memoria expandida. El estado OFF no se
puede activar cuando se ha incluido la orden DOS=UMB en el fichero CONFIG.SYS. Estos
parámetros no se ignoran si se activan desde el fichero CONFIG.SYS.
W=ON, OFF.
DEVICE=C:\DOS\EMM386.EXE [{RAM,NOMES}]
Ver la ayuda para sintaxis completa y el apartado Gestión de la memoria para una explicación
detallada de los parámetros más utilizados.
HIMEM.SYS.
Se utiliza para crear la memoria alta (HMA) y la memoria extendida XMS. Se necesita para
cargar el DOS en memoria alta o cargar los controladores de dispositivos y los programas
residentes en memoria superior. Es imprescindible para ejecutar Windows 3.0 o superior.
DEVICE=C:\DOS\HIMEM.SYS
INTERLNK.EXE.
Permite compartir ficheros e impresoras entre dos ordenadores conectados mediante un cable
paralelo o serie. Para funcionar correctamente es necesario utilizar también la orden INTERSVR.
La sintaxis es:
DEVICE=C:\DOS\INTERLNK.EXE
POWER.EXE.
Se utiliza para reducir el consumo de energía en los ordenadores portátiles. Se puede utilizar
como orden externa o como orden del fichero CONFIG.SYS.
La sintaxis es:
DEVICE=C:\DOS\POWER.EXE
RAMDRIVE.SYS.
La sintaxis es:
90
Consultar el apartado Operaciones con la memoria para ver la explicación detallada de la
sintaxis.
SETVER.EXE.
Se utiliza para definir el número de versión del DOS que se indica a cada programa. Se puede
utilizar como orden externa o como orden del fichero CONFIG.SYS.
La sintaxis es:
DEVICE=C:\DOS\SETVER.EXE
SMARTDRV.EXE.
La sintaxis es:
DEVICE=C:\DOS\SMARTDRIVE.EXE /DOUBLE_BUFFER
Ver el apartado operaciones con la memoria para una explicación detallada de la sintaxis.
Orden DEVICEHIGH.
Al igual que la orden DEVICE, permite cargar en memoria las rutinas de los controladores de
dispositivo, con la diferencia de que DEVICEHIGH los carga en memoria superior. Si no hay
memoria superior libre, loa carga en memoria convencional.
Orden DOS.
Carga el núcleo del DOS (IO.SYS y MSDOS.SYS) en la memoria alta o HMA y activa el área de
memoria superior para que se puedan almacenar controladores de dispositivo y programas residentes.
Consultar el apartado Gestión de la memoria para una explicación detallada del funcionamiento de la
orden DOS.
Orden FILES.
Define el número máximo de ficheros que el sistema puede tener abiertos simultáneamente.
La sintaxis es:
FILES=número
El rango de número es de 8 a 255. El valor por defecto es 8. Conviene introducir un valor igual o
superior a 25.
Orden LASTDRIVE.
La sintaxis es:
LASTDRIVE=letra
91
El parámetro letra indica la unidad hasta la que el DOS puede reconocer. Por defecto se asume la
letra E.
Orden REM.
Se utiliza para introducir comentarios en el fichero. La orden REM se puede sustituir por el carácter
“;”.
Orden SET.
Se utiliza para crear variables de entorno. Las variables de entorno las veremos más adelante.
La sintaxis es:
SET nombre_variable=valor_variable.
Orden SHELL.
Sirve para indicar el procesador de órdenes que gestionará el sistema. En la mayoría de los casos el
procesador de órdenes es COMMAND.COM, pero podría ser otro.
Una utilidad muy importante de ésta orden es para ejecutar un fichero por lotes, al arrancar el
ordenador, distinto a AUTOEXEC.BAT. Para ello hay que utilizar la siguiente sintaxis:
Orden SWITCHES.
Es una orden comodín, que se utiliza para diversas opciones que se han de ejecutar desde
CONFIG.SYS.
La sintaxis es:
SWITCHES=[/K][/W][/N][/F]
/N.
Desactiva las teclas F5 y F8, que permiten modificar el proceso de inicialización. Cuando el
sistema se está inicializando, visualiza el mensaje Iniciando MS-DOS..., realizando una parada
de dos segundos, durante los cuales se pueden pulsar las teclas F5 o F8. Si se pulsa la tecla F5,
no se ejecutan los ficheros CONFIG.SYS y AUTOEXEC.BAT, cargándose las opciones por
defecto. Si se pulsa la tecla F8, el sistema pregunta, una a una, si se quieren ejecutar las órdenes
de los ficheros CONFIG.SYS y AUTOEXEC.BAT.
/F.
Anula la pausa de dos segundos que realiza el ordenador durante el arranque del sistema para
permitir al usuario pulsar las teclas F5 o F8.
92
Durante el proceso de arranque del ordenador, existe la posibilidad de inicializar el sistema con
distintas configuraciones, dependiendo de la opción que el usuario elija mediante un menú de
opciones. Este proceso se realiza desde el fichero CONFIG.SYS.
Para crear las configuraciones de arranque, hay que definir los bloques de configuración. Existen dos
tipos de bloques de configuración:
Bloques de menú.
Se utilizan para crear menús. Contienen las órdenes de CONFIG.SYS que permiten crear el
menú de opciones que le aparece al usuario durante el proceso de inicialización. Estas órdenes
son: MENUITEM, MENUDEFAULT, MENUCOLOR, SUBMENU y NUMLOCK. En un
sistema que utilice las configuraciones múltiples, tiene que haber, al menos, un bloque de menú,
que será el bloque del menú principal, identificado por la cabecera [MENU]. La presencia de
otros bloques de menú depende de que el usuario quiera o no crear submenús del menú principal.
Por cada submenú tiene que existir un bloque de menú.
Bloques de órdenes.
Contienen las órdenes que se ejecutarán al elegir cada una de las opciones de un menú. Se puede
incluir cualquier orden del fichero CONFIG.SYS excepto las órdenes de los bloques de menú.
Bloque [MENU].
Se utiliza para identificar el menú principal, que es el menú que se muestra en pantalla al
encender el ordenador. Siempre que se utilicen las configuraciones de arranque múltiples, en el
fichero CONFIG.SYS tiene que aparecer un bloque [MENU]. No puede existir más de un bloque
[MENU]. Sólo podrá contener las órdenes que se pueden incluir en los bloques de menú.
Bloque [COMMON].
Es un bloque de órdenes cuya misión es almacenar las órdenes comunes a todas las
configuraciones, que siempre se ejecutarán, independientemente de la opción del menú elegida
por el usuario. Pueden existir varios bloques [COMMON] en el fichero CONFIG.SYS.
Es conveniente crear, al final del fichero CONFIG.SYS, un bloque [COMMON] vacío para que
los programas de instalación que añaden órdenes en CONFIG.SYS sitúen en él sus órdenes. Si
no existe éste bloque [COMMON] vacío, los programas de instalación añaden las órdenes
nuevas en el bloque de menú situado en último lugar y sólo se ejecutarán al activar éste último
bloque.
Orden MENUITEM.
Se utiliza para crear opciones dentro de un menú. Hay que utilizar una orden MENUITEM por
cada opción de menú que se quiere incluir.
La sintaxis es:
bloque_órdenes.
título.
93
Es una cadena de hasta 70 caracteres que aparecerá en pantalla como título de la opción. Si
se omite, se asume como título el nombre utilizado en bloque_órdenes. El sistema añade
automáticamente, al principio del título, un número, un punto y un espacio en blanco.
Ejemplo.
Orden MENUDEFAULT.
Se utiliza para definir la opción por defecto que asume el sistema cuando aparece el menú.
La sintaxis es:
MENUDEFAULT = bloque_órdenes[,segundos]
bloque_órdenes.
segundos.
Indica la cantidad de tiempo que el sistema espera antes de asumir la opción por defecto. El
rango de valores es de 0 a 90. Si se introduce el valor 0, el sistema activa inmediatamente la
opción por defecto, sin visualizar el menú. Si se omite éste parámetro, el sistema espera
indefinidamente hasta que el usuario elige una opción.
Ejemplo.
Establecer una opción por defecto en el ejemplo anterior. Reiniciar el ordenador varias veces
para observar el funcionamiento de ésta orden si se deja transcurrir el tiempo especificado o nos
movemos por el menú para seleccionar otra opción.
Orden MENUCOLOR.
Se utiliza para definir el color de las letras de texto y el color de fondo de la pantalla de un menú.
La sintaxis es:
MENUCOLOR = color_texto[,color_fondo]
94
Ejemplo.
Orden NUMLOCK.
Permite activar y desactivar la tecla BloqNum del teclado numérico. Si BloqNum está activado,
el teclado numérico genera números, y si está desactivado, genera movimientos del cursor.
Cuando no se utilizan las configuraciones de arranque múltiples, ésta orden también se puede
incluir en el fichero CONFIG.SYS.
La sintaxis es:
NUMLOCK = {ON,OFF}
Orden SUBMENU.
En algunas ocasiones, puede ser necesario que, al elegir una opción de un menú, se presente un
nuevo menú para poder elegir otra opción. Para crear los submenús se utiliza la orden
SUBMENU.
La sintaxis es:
SUBMENU = bloque_menú[,título]
bloque_menú.
Es el nombre del bloque de menú cuyas órdenes se quieren ejecutar cuando se elige una
opción.
título.
Es una cadena de hasta 70 caracteres que aparecerá en pantalla como título de la opción. Si
se omite, se asume como título el nombre utilizado en bloque_órdenes. El sistema añade
automáticamente, al principio del título, un número, un punto y un espacio en blanco.
En los bloques de órdenes, además de incluir cualquier orden del fichero CONFIG.SYS, se puede
utilizar la siguiente:
Orden INCLUDE.
Sirve para incluir dentro de un bloque de órdenes las órdenes pertenecientes a otro bloque de
órdenes.
La sintaxis es:
INCLUDE = bloque_órdenes
bloque de órdenes.
Ejemplo.
Supongamos que queremos crear un menú con dos opciones: una configuración que crea la
memoria alta (HMA) y otra que crea la memoria alta (HMA) y la memoria superior (UMB). Para
ello podríamos crear el siguiente fichero CONFIG.SYS:
95
[MENU]
MENUITEM = Alta, Crear memoria alta (HMA)
MENUITEM = AltaSuperior, Crear memoria alta (HMA) y superior (UMB)
[Alta]
FILES = 25
BUFFERS = 30
DEVICE = C:\DOS\HIMEM.SYS
DOS = HIGH
[AltaSuperior]
INCLUDE = Alta
DEVICE = C:\DOS\EMM386.EXE NOEMS
DOS = UMB
Cada vez que el usuario arranca el ordenador eligiendo una opción de un menú de configuraciones,
se crea en el entorno una variable CONFIG, cuyo valor es el nombre del bloque de órdenes que se
activa con la opción escogida, es decir, el parámetro bloque_órdenes de la orden MENUITEM. El
valor de ésta variable se puede utilizar en el fichero AUTOEXEC.BAT en combinación con la orden
GOTO. Para ello hay que utilizar la sintaxis GOTO %CONFIG%. De ésta forma, la ejecución del
fichero se desvía a una etiqueta que contiene las órdenes específicas que se desean cargar en una
configuración.
Ejemplos.
[MENU]
MENUITEM=ESPAÑOL, Cargar DOS en español
SUBMENU=OTROS, Cargar DOS en otros idiomas
MENUDEFAULT=ESPAÑOL,30
MENUCOLOR=7,1
[COMMON]
FILES=30
BUFFERS=20
DEVICE=C:\DOS\SETVER.EXE
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE RAM
DOS=HIGH,UMB
SWITCHES=/N
[ESPAÑOL]
COUNTRY=34,437,C:\DOS\COUNTRY.SYS
[OTROS]
MENUITEM=AMERICANO, Cargar DOS en americano
MENUITEM=FRANCES, Cargar DOS en francés
MENUITEM=ALEMAN, Cargar DOS en alemán
[AMERICANO]
COUNTRY=1,,C:\DOS\COUNTRY.SYS
[FRANCES]
96
COUNTRY=33,437,C:\DOS\COUNTRY.SYS
[ALEMAN]
COUNTRY=49,437,C:\DOS\COUNTRY.SYS
[COMMON]
@ECHO OFF
PROMPT $p$g
PATH C:\DOS
SET TEMP=C:\DOS
LH /L:1 C:\DOS\SMARTDRV.EXE
LH /L:1 DOSKEY
GOTO %CONFIG%
:ESPAÑOL
LH /L:1;2 KEYB SP,437,C:\DOS\KEYBOARD.SYS
GOTO :FIN
:AMERICANO
LH /L:1;2 KEYB US,,C:\DOS\KEYBOARD.SYS
GOTO :FIN
:FRANCES
LH /L:1;2 KEYB FR,437,C:\DOS\KEYBOARD.SYS
GOTO :FIN
:ALEMAN
LH /L:1;2 KEYB GR,437,C:\DOS\KEYBOARD.SYS
:FIN
PAUSE
CLS
[MENU]
MENUITEM=MSDOS,Ms-Dos
MENUITEM=ESTACION,Estación Dos
MENUITEM=WINDOWS,Windows
MENUITEM=NOVELL,Novell
MENUCOLOR=7,1
MENUDEFAULT=MSDOS,10
[COMMON]
COUNTRY=34,437,C:\DOS\COUNTRY.SYS
FILES=40
STACKS=9,256
SWITCHES=/N
97
[MSDOS]
DEVICE=C:\DOS\HIMEM.SYS
DEVICE=C:\DOS\EMM386.EXE NOEMS
DOS=HIGH,UMB
[WINDOWS]
INCLUDE=MSDOS
DEVICEHIGH=C:\DOS\SETVER.EXE
DEVICEHIGH=C:\WINDOWS\IFSHLP.SYS
LASTDRIVE=Z
[NOVELL]
INCLUDE=WINDOWS
[ESTACION]
INCLUDE=WINDOWS
[COMMON]
@ECHO OFF
PROMPT $P$G
PATH C:\DOS
SET TEMP=C:\DOS
LH KEYB SP,437,C:\DOS\KEYBOARD.SYS
LH C:\DOS\SMARTDRV.EXE /X
LH DOSKEY
GOTO %CONFIG%
:NOVELL
PATH C:\NWCLIENT\;C:\WINDOWS;%PATH%
CALL C:\NWCLIENT\STARTNET.BAT
GOTO :FIN
:WINDOWS
PATH C:\WINDOWS;C:\NWCLIENT\;%PATH%
C:\WINDOWS\NET START
WIN
GOTO :FIN
:ESTACION
PATH C:\WINDOWS;%PATH%
NET
REM Continúa en la etiqueta MSDOS para cargar los drivers del ratón
:MSDOS
SET PATH=C:\TRMOUSE;%PATH%
LH C:\TRMOUSE\TRMOUSE.COM
CLS
:FIN
Variables de entorno.
Todas las variables que utiliza el DOS son alfanuméricas y se llaman variables de entorno. El entorno es
una zona de memoria RAM que el DOS reserva para almacenar el nombre de las variables y sus valores
correspondientes. Todos los programas pueden acceder directamente al entorno y recoger valores de las
98
variables. El entorno lo crea la orden COMMAND.COM. Para saber la dirección de memoria donde se
almacena físicamente el entorno, hay que ejecutar la orden MEM /M COMMAND.
La sintaxis es:
SET [nombre=[valor]]
Sirve para crear en el entorno una variable con un determinado valor o para modificar el valor de una
variable de entorno existente. Esta sintaxis de la orden SET se puede incluir como una orden en el
fichero CONFIG.SYS para crear variables de entorno cuando se inicializa el sistema.
SET.
SET nombre =.
Las variables de entorno se pueden utilizar en los ficheros por lotes. Para ello, debe incluirse antes y
después del nombre de la variable el carácter “%”. Por ejemplo, para acceder a la variable PATH desde
un fichero por lotes, hay que escribir %PATH%.
Variable COMSPEC.
Variable PATH.
Almacena el valor de las trayectorias de directorios en los que el DOS buscará los ficheros
ejecutables. Por defecto, asume el valor C:\DOS.
Variable PROMPT.
Variable CONFIG.
Contiene el nombre de la opción de menú elegida por el usuario en una inicialización del sistema
utilizando configuraciones múltiples.
Variable APPEND.
99
Almacena el valor definido en la orden APPEND. Esta variable no se crea automáticamente. Para
crearla hay que ejecutar la orden APPEND con la opción /E. La orden APPEND funciona igual que
la orden PATH, pero la orden APPEND se utiliza para buscar en los directorios especificados los
archivos con cualquier extensión.
Variable TEMP.
Variable DIRCMD.
Se utiliza para almacenar parámetros que se van a incluir frecuentemente en la orden DIR. Por
ejemplo, si queremos que, cada vez que ejecutemos la orden DIR, se visualice el listado ordenado por
nombre y de forma paginada, debemos escribir siempre DIR /ON /P. Para evitar escribir siempre los
parámetros se utiliza la variable DIRCMD. De ésta forma, tendríamos que asignar a dicha variable el
siguiente valor: SET DIRCMD = /ON /P. A partir de éste momento, cada vez que ejecutemos la
orden DIR, el listado se visualizará ordenado por nombre y paginado. Si en algún momento no
queremos incluir alguno de éstos parámetros, hay que escribir dicho parámetro precedido por el
carácter “-“. Si no queremos que el listado salga paginado, hay que escribir DIR /-P.
Ejemplos.
Indica que el DOS buscará los ficheros ejecutables en los directorios especificados.
Indica que el DOS buscará los ficheros que no sean ejecutables en el directorio C:\CARTAS.
Indica que el directorio C:\TMP se va a utilizar para almacenar los ficheros temporales que
utilizan algunos programas.
100