You are on page 1of 48

MANUAL COMPLETO DE DOS... ESTA MUY INTERESANTE... .

1. Introduccin El sistema operativo MS-DOS tiene una estructura arborescente donde existen unidades, dentro de ellas directorios y a su vez dentro de ellos tenemos los ficheros. El IBMBIOS.COM se encarga de las comunicaciones de entrada y salida. El IBMDOS.COM es el centro de los servicios del ordenador, es conocido tambin como kernel o ncleo. El COMMAND.COM carga y permite ejecutar todos los comandos. El MS-DOS contiene cinco elementos fundamentales: La ROM-BIOS.- Programas de gestin de entrada y salida entre el Sistema Operativo y los dispositivos bsicos del ordenador. La IO.SYS.- Son un conjunto de instrucciones para la transferencia de entrada/salida desde perifricos a memoria. Prepara el sistema en el arranque y contiene drivers de dispositivo residentes. MSDOS.SYS.- Es el kernel de MS-DOS, en que figuran instrucciones para control de los disquetes. Es un programa que gestiona los archivos, directorios, memoria y entornos. DBLSPACE.BIN.- Es el controlador del Kernel del compresor del disco duro que sirve para aumentar la capacidad de almacenamiento del disco, disponible a partir de la versin 6 del MS-DOS. Este controlador se ocupa de toda la compresin y descompresin de ficheros y se puede trasladar desde la memoria convencional a la memoria superior. COMMAND.COM.- Es el intrprete de comandos, mediante los cuales el usuario se comunica con el ordenador, a travs del prompt \>. Interpreta los comandos tecleados y contiene los comandos internos de MS-DOS que no se visualizan en el directorio del sistema. Los ficheros IO.SYS, MSDOS.SYS y DBLSPACE.BIN son ocultos, es decir, no se ven al listar el directorio, y se cargan desde el disco a la memoria del ordenador al arrancar ste.

2. Objetivos Dar a conocer la serie de comandos tanto internos como externos del MS-DOS para su utilizacin en las diversas operaciones, adems proporcionar unas aplicaciones del manejo de algunos de stos comandos que servirn como referencia.

3. Windows Ms-Dos (Microsoft-disk operating system) Se recuerda algunos conceptos bsicos del Ms-Dos: En primer lugar: como accedo a MS-Dos ? dos formas: * sesin de DOS pura: reiniciamos Windows en modo MS-DOS * sesin de DOS bajo Windows: botn inicio | programas | MSDOS Cambio de la unidad por defecto Para cambiar la unidad por defecto, simplemente hay que escribir la letra que hace referencia a la unidad deseada, seguida de dos puntos. Por ejemplo, si se va a trabajar sobre todo con ficheros de la unidad A, y estamos en la unidad C, para no tener que escribir siempre A:Nombre.extensin, es ms fcil que cambiemos de unidad, escribiendo A: y pulsando ENTER. Manejando directorios DIR El comando DIR visualiza los archivos y sub-directorios del directorio actual. Veremos el nombre y la extensin del archivo, el tamao, la fecha y la hora en que fue modificado por ltima vez. Un nombre encerrado entre los smbolos < > significa un sub-directorio. Si no aparecen estos smbolos se tratar de un archivo. El punto en el nombre de un archivo no aparece cuando hacemos un DIR, en su lugar hay un espacio: ejemplo, format exe y no format.exe. Opciones: DIR /P: vuelca en pantalla solo los directorios/archivos que caben en la misma, esperando a que el usuario pulse una tecla para continuar. DIR /W Visualiza nicamente el nombre del archivo o directorio (sin datos adicionales), los directorios encerrados entre corchetes [ ] DIR nombre_del_arc hivo.extensin para ver si un archivo concreto se encuentra en el directorio. Por ejemplo, dir format.exe. Podemos utilizar los COMODINES * y ?: DIR *.EXE visualiza todos los archivos con extensin .EXE

DIR A*.* todos los archivos que empiezan por A, sea cual sea su extensin DIR A*. todos los archivos que empiezan por A y cuya extensin sea ninguna DIR AR*.TXT archivos que empiezan por AR cuya extensin sea TXT Tambin podemos combinar dir /p /w Otras opciones de DIR /O: Ordena los ficheros con respecto a un orden. Si entre los dos puntos y la letra de la ordenacin ponemos un signo -, el orden se invierte /N Por nombre en orden alfabtico /E Por extensin en orden alfabtico /S Por tamao, de menor a mayor /D Por fecha y hora. De ms antiguo al ms moderno /G Primero aparecen los directorios /L: Lista con minsculas /S: Lista el contenido de los subdirectorios /B: Lista solo el nombre de los archivos /A: Muestra archivos con un atributo especificado /D Directorio /H Archivos ocultos /R Archivos de solo lectura /S Archivos de sistema Ejemplo: C:\WINDOWS>dir /o:-n Listara los archivos y directorios de c:\windows en orden alfabtico inverso. Movindonos por los directorios Con el comando CHDIR (abreviadamente, CD) podemos cambiar de directorio: CD [unidad:] [camino] Si slo ponemos el camino, lo realizar sobre la unidad activa. Si no ponemos el camino desde el principio, buscar a partir del directorio activo. Ejemplos: CD nombre_del_dir ectorio Para acceder a un subdirectorio escribimos cd seguido de su nombre

Si queremos descender varios niveles, podemos ir dando ordenes consecutivas cd (cd subdirectorioA cd subdirectorioB ...) o escribir de una sola vez la ruta completa (cd subdirectorioA subdirectorioB) Para volver al directorio inmediatamente anterior basta con escribir: CD.. Para ir al directorio raz directamente desde cualquier directorio (sin necesidad de hacer CD.. hasta llegar a l) escribiremos: CD\ O CD... (Tres puntos). Creando directorios MKDIR (MD) MD [unidad:] [camino] Dar camino entero, si no lo toma a partir del directorio activo. Dar la unidad sino la toma como la activa. Para crear un directorio empleamos el comando MKDIR o MD en su forma abreviada: MKDIR nombre_del_dir ectorio.extens ion MD nombre_del_dir ectorio.extens ion Borrando directorios RMDIR, RD Para borrar un directorio vaco se emplea el comando RMDIR RD: RMDIR nombre_del_dir ectorio.extens ion RD nombre_del_dir ectorio.extens ion Si el directorio no est vaco debemos borrar previamente los archivos y subdirectorios de que consta (los archivos con DEL *.* y los directorio con RD. Primero borraremos los archivos del sub-directorio y a continuacin el sub-directorio) Manejando archivos COPY Copia uno o ms archivos de un lugar a otro. El formato es el siguiente: copy [unidad1:][camino1]original1 [[unidad2:][camino2]original2...] [unidad:][camino]copia Por ejemplo: Supongamos que tenemos un fichero llamado fich1.txt en el disco C, y queremos copiarlo la misma unidad pero con el nombre fich2.txt: C:> copy fich1.txt fich2.txt Supongamos ahora que lo queremos copiar a la unidad A: con el mismo nombre:

C:> copy fich1.txt a:fich2.txt Supongamos que queremos copiar el fichero A:hola.txt a la unidad C: C:> copy a:hola.txt . Siempre hay que especificar el nombre del archivo o archivos (mediante comodines) que queramos copiar. El nombre de los ficheros destinos es opcional, sino lo ponemos recibirn el mismo nombre que los originales. XCOPY Copia todos los ficheros de un directorio y todos sus subdirectorios MOVE Mueve uno o ms ficheros al lugar que se indique. Tambin se utiliza para cambiar el nombre de los directorios. Su formato es: move [unidad:][camino]origen ... [unidad:][camino]destino REN O RENAME Cambia el nombre de ficheros existentes: REN [unidad:][camino] NombreArchivo NombreNuevo. Al nuevo nombre no hace falta especificar unidad y camino. DEL, ERASE Con cualquiera de estos comandos podemos borrar archivos: DELETE nombre_del_arc hivo.extensin ERASE nombre_del_arc hivo.extensin DEL nombre_del_arc hivo.extensin Podemos hacer uso de los comodines * e ? DEL *.EXE borra todos los archivos de extensin .EXE DEL *.* borra todos los archivos del directorio activo. El sistema nos preguntar si estamos seguros (es equivalente a escribir DEL.) DEL *. borra todos los archivos sin extensin UNDELETE El comando DEL lo que realmente borra no son los datos, sino el nombre del fichero, por lo que ya no podemos acceder a l, pero se puede recuperar si inmediatamente lo intentamos: con undelete restauramos archivos que fueron eliminados. Se recomienda que se utilice de manera inmediata al borrado, puesto que los datos que permanecen en el disco, pueden ser sobrescritos. UNDELETE [unidad:] [camino] [NombreArchivo] [/LIST] [/ALL]

/LIST: Muestra la lista de archivos eliminados disponibles para ser recuperados. /ALL: Restaura todos los archivos especificados sin pedir confirmacin. Comandos especiales CLS Significado: Abreviatura de Clear Screen (Limpiar Pantalla) Ejemplo: c: cls [enter] HELP Proporciona ayuda sobre la sintaxis de los comandos. (En versiones posteriores a la 5.0 adems la ayuda incluye ejemplos y notas).Sintaxis: HELP, HELP [comando], comando/? TYPE Se emplea este comando para visualizar el contenido de un archivo. El formato simplificado de este archivo es: TYPE nombre_del_arc hivo.extension Por ejemplo TYPE readme.txt visualiza el contenido del archivo readme.txt. Si el archivo es ms largo y no cabe en una pgina, no da tiempo a leerlo. En tal caso se aade el comando externo MORE precedido del smbolo | (ALT 124, del teclado numrico). Cuando pasa una pgina se espera que se pulse una tecla para continuar. Con este comando no pueden usarse los comodines, debemos sealar el nombre del fichero exacto. EDIT Sirve para editar archivos de texto. Los bytes que contengan estos archivos, se interpretan directamente por el cdigo ASCII. No es un comando, es un programa. EDIT [unidad:] [camino] [NombreArchivo] [/H] Podemos introducir el nombre del archivo o no. /H: Presenta el nmero mximo de lneas posibles. DATE Actualiza la fecha del Ordenador. Todos los Ordenadores llevan un reloj interno alimentado por una pila. Si la pila funciona, el reloj no se para aunque apagemos el ordenador. Si por el contrario, la pila est gastada, cada vez que apagamos el Ordenador, el reloj se pone a cero. Es

importante saber que el D.O.S. utiliza la fecha como fecha del sistema para todas las operaciones que se van a llevar a cabo (grabando ficheros, en programas, etc...) Ejemplo: c: DATE [enter] Aparece la fecha actual y pide la introduccin de una nueva fecha. TIME Igual que la anterior, para la hora. VER Abreviatura de VERSION, Muestra un mensaje con la Versin del D.O.S. que tenemos instalada en el Ordenador Ejemplo: c:ver [enter] FIND Busca una cadena especfica de texto en un archivo o en varios archivos. Sintaxis: FIND [/v] [/c] [/n] "cadena" [[unidad:][nombre de ruta de acceso]...] donde cadena es un conjunto de caracteres que desea buscar. Las opciones que admite son: /v Muestra todas la lneas que no contienen la cadena especificada. /c Muestra tan slo el nmero de lneas en las que contienen cadenas coincidentes en cada uno de los archivos. /n Precede a cada lnea con su nmero relativo de lnea de archivo. Por ejemplo, para buscar el texto "muestra en" en el archivo ayuda introduciremos FIND "muestra en" ayuda. Si el texto estuviera entrecomillado deben utilizarse pares dobles de comillas. FIND ""muestra en"" ayuda. FC FC compara dos o un conjunto de archivos y muestra las diferencias entre ellos. Sintaxis: FC [/A] [/C] [/L] [/N] [/T] [/W] [unidad1] [camino1] NombreArchivo1 [unidad2] [camino2] NombreArchivo2 FC /B [unidad1] [camino1] NombreArchivo1 [unidad2] [camino2] NombreArchivo2 /A: Muestra slo la primera y ltimas lneas para cada grupo de diferencias. /B: Realiza una comparacin binaria. /C: Ignora maysculas y minsculas. /L: Compara archivos como texto en ASCII.

/N: Muestra el nmero respectivo de lnea durante una comparacin ASCII. /T: No reemplaza las tabulaciones por espacios. /W: Comprime espacios en blanco (tabs y espacios) al comparar. FORMAT Da formato lgico a una unidad fsica. Divide la superficie magntica en sectores y pistas. Se pierden todos los datos almacenados en disco. Sintaxis: FORMAT UNIDAD [/S] [/Q] [/U] [/B] [/V[:etiqueta]] [/F:tamao] [/T:pistas /N:sectores] /S: Transfiere ficheros de sistema en disquete con formato ( io.sys, msdos.sys y command.com ). /Q: Realiza un formateo rpido. /U: Realiza un formateo incondicional, evita que se guarde la informacin de reconstruir. /B: Asigna espacio en disco con formato para archivos de sistema. /V[:etiqueta]: Se especifica la etiqueta de volumen. Es un indicativo que diferencia disquetes. /F:tamao: Especifica el tamo del disquete al que se dar formato (tales como 160, 180, 320, 360, 720, 1.2, 1.44, 2.88 ). /T:pistas: Especifica el nmero de pistas por cara de disquete. /N:sectores: Especifica el nmero de sectores por pista. DOSKey DOSKEY, flexibilidad en la ventana de DOS. La ventana de comandos o DOS es de uso bastante inamistoso, intolerante con nuestros errores al teclear, pudiendo llegar a ser desesperante. Pero si estas familiarizado con DOS, seguramente recordars la utilidad DOSKEY que puede facilitar en gran manera las cosas, permitiendo movernos por el texto escrito, y recordar las rdenes anteriores, de forma bastante conveniente. DOSKEY no se carga por defecto al inicio de la sesion DOS, por lo que debemos invocarlo. En la ventana, escribe: C:Windows>doskey Y vers: DOSKey instalado Es frecuente que olvides cargar DOSKEY hasta que, metida la pata en una sesin DOS, lo necesites. Para cargarlo automticamente, puedes aadirlo a tu

autoexec.bat, o mas sencillamente, agregar un acceso directo a la ventana de DOS en tu escritorio. Una vez hecho, botn derecho sobre el icono, propiedades, y en la pestaa "Programa", opcin "Archivo de proceso por Lotes", escribes "DOSKEY > NUL" (sin comillas). Asi simplemente haciendo click sobre este icono iniciaras una sesin DOS con DOSKEY sin necesidad de enredar con el autoexec. A continuacin la lista de teclas de edicin y su uso Teclas de edicion Uso Inicio Mueve el cursor al principio de la lnea Fin mueve el cursor al final de la lnea Flecha dcha Un caracter a la derecha Flecha izqda Un caracter a la izquierda Ctrl+flecha dcha Mueve el cursor a la palabra siguiente Ctrl+flecha izqda Mueve el cursor a la palabra anterior Ctrl+fin Borra desde la posicin del cursor al fin de la lnea Ctrl+Inicio Borra desde el principio de la lnea hasta la posicin del cursor Insert Alterna entre insertar y sobrescribir. El modo por defecto es sobrescribir. Si deseas modo insertar tienes que especificarlo para cada comando. Si lo que deseas es que el modo por defecto sea insertar, carga doskey con el modificador /i DOSKey te permite usar comandos consecutivos en la misma lnea. Por ejemplo, si deseas volver atrs un directorio y obtener un listado de sus archivos, puedes teclear cd.. ^T dir Naturalmente, la utilidad mas conocida de DOSKEY es la de recordar la lista de comandos que hemos tecleado a lo largo de nuestra sesin. Pulsando las flechas arriba y abajo puedes recorrer el historial de comandos. Pulsando las primeras letras de un comando ya usado y F8, veras como se auto completa la instruccin. A continuacin un listado de las posibilidades: Historial de comandos Teclas Flecha arriba Inserta el comando anterior. Flecha abajo Inserta el comando siguiente Re Pag Inserta el comando mas antiguo del historial Av Pag Inserta el ultimo comando F7 Muestra una lista numerada con los comandos empleados

F9 n Para usar uno de los comandos obtenidos con F7, pulsa F9 + el numero del comando Alt+F7 Borra el historial de comandos F8 historial ESC limpia la lnea de comandos DOSKEY almacena el historial de comandos en un buffer de memoria. Cuando est lleno, va borrando los comandos ms antiguos. El tamao del buffer por defecto es de 512 bytes, que debera ser suficiente para unos 10 o 20 comandos (dependiendo de su extensin). Este tamao ser ms que suficiente para su uso normal. El tamao del buffer puede ser modificado al cargar DOSKEY, mediante el modificador /b:nuevotamaodelbuffer. Macros con DOSkey Minimizando esfuerzos... Una macro es un conjunto de una o ms de comandos que puedes ejecutar a travs de DOSKey, llamndolos mediante una breve clave. Son parecidas a los archivos .bat (bach files) aunque mas limitadas. Las macros de DOSKey se almacenan en memoria con lo cual su ejecucin es ultrarrpida si bien con la contrapartida de una disminucin de memoria libre, y de su volatilidad. Las macros duran lo que dura tu sesin de ventana de comandos (aunque como veremos puedes dejarlas grabadas en un archivo). Sintaxis Para crear una macro escribes: doskey nombre_de_la_m acro=comando As, por ejemplo, si escribes: doskey h=doskey /history Te bastar escribir h en la lnea de comandos y pulsar enter para obtener la lista del historial de comandos. Se trata solo de un ejemplo bsico, evidentemente hay cosas ms interesantes que iremos viendo, por ejemplo: doskey mc=md $1$tcd $1 Esta macro creara un directorio, y cambiara al mismo. Para usarla bastara teclear mc minuevodirecto rio. Fjate que podramos elegir nosotros el nombre al vuelo completa los caracteres que hayas escrito con el comando coincidente del

y que la macro ejecuta dos comandos distintos (mc y cd). Como?, con las teclas especiales que a continuacin te listo:Teclas de macro Significado $G o $g DOS. $G$G o $g$g $L o $l $B o $b Equivalente a |. $T o $t Separa comandos y permite su ejecucin secuencial. Equivalente a & $$ Especifica el signo $ Representan cualquier informacin que debe ser introducida por el $1 a $9 Aade la salida de datos al final de un archivo (en lugar de sobrescribirlo). Equivalente al signo de DOS >>. Redirecciona entrada de datos. Se utiliza para que nuestra macro lea Enva el resultado de la macro a otro comando para su ejecucin. datos de un dispositivo o archivo, en lugar de desde el teclado. Equivalente a <. Redirecciona la salida de datos. Se usa para enviar el resultado de la operacin a un dispositivo o archivo distinto de la pantalla. Equivalente al carcter > de

usuario de la macro. Si recordamos la ultima macro que escribimos (doskey mc=md $1$tcd $1), y cotejamos lo escrito con la tabla anterior, vemos que el nombre de la macro es mc, y que al invocarla, ejecutar el comando md (crear directorio), con el nombre $1, es decir, con el nombre que el usuario le pase en tiempo de ejecucin. Seguidamente ($t) ejecutar el comando cd $1 cambiando a dicho nuevo directorio. Vamos a ver otro ejemplo. Supongamos que queremos mover un archivo (o grupo) a otro directorio. Podriamos escribir la siguiente macro: doskey mv=copy $1 $2 $t del $1 Y la usaramos tecleando en la lnea de comandos mv archivoamover destino. Al invocar la macro, se ejecuta el comando copy sobre archivoamover (parmetro $1) copindolo a su destino (parmetro $2) y a continuacin ($T se borra el original. Aqu tienes un volcado de pantalla de un uso real de esta macro, que copia el archivo prueba.txt desde el directorio de trabajo al subdirectorio temp y despus borra el original: C:>mv prueba.txt tempprueba.txt C:>copy prueba.txt tempprueba.txt 1 archivos copiados C:> del prueba.txt C:>

Para ejecutar esta misma macro sobre un grupo de archivos, de nombre similar, bastara especificarlo utilizando comodines. Finalmente podemos volcar nuestras macros a un archivo de texto, para usarlas en cualquier momento: c:>doskey /macros > mis_macros.bat Guarda todas las macros en memoria al archivo mis_macros.bat c:>doskey /file = mis_macros.bat Carga las macros existentes en ese archivo en memoria. Como es un archivo de texto, puedes editarlo y escribir directamente las macros ah en lugar de en la ventana de DOS y luego cargarlas en memoria. Redireccionand o y canalizando la entrada y salida de datos Por defecto, las entradas de datos necesarios para el funcionamiento de DOS se verifican a travs del teclado. Por defecto la salida de datos de produce a travs de la pantalla. Sin embargo podemos redireccionar el flujo de datos, de tal forma que en lugar de mostrar el resultado en pantalla, apunte a un archivo o dispositivo. Tambin podemos canalizar el resultado hacia otro comando. Redireccion Mediante la redireccin podemos forzar la salida de datos, encaminndola hacia un archivo o dispositivo, en lugar de hacia la pantalla. Para indicar la redireccin usamos los signos < y >. Por ejemplo: c:>dir > dirlist.txt Conseguira un listado de c: que no se mostrara en pantalla sino que se guardara en el archivo dirlist.txt. Solo podemos redireccionar la salida de datos a archivos o dispositivos. El ejemplo ms tpico de redireccin a un dispositivo sera: c:>dir > prn En cuyo caso el listado de c: es enviado al dispositivo impresora (prn, printer), donde directamente se imprimira. Otro uso frecuente de la redireccin es la de ocultar la salida de datos de un comando, cuando no necesitamos verlo en pantalla: c:> dir > nul No produce ningn resultado visible, ya que el resultado de dir ha sido redireccionado hacia un objeto nulo.

Podemos direccionar la salida de datos hacia los siguientes dispositivos: CON Monitor PRN Impresora LPT1-LPTR Puertos paralelos COM 1 - 4 Puertos serie NUL Nulo Si redireccionamo s a algo que no sea un dispositivo reconocible, DOS asumir que se trata de un nombre de archivo. Si el archivo existe, los datos se sobrescribirn sin advertencia. Si deseamos aadir los datos a un archivo, sin sobrescribirlo, usamos el redireccionado r >>: dir c:windows /o/a >> c:windowsdir.txt Y si lo que deseamos es redirigir la entrada de datos, usamos el redireccionador <: more < nombrearchivo. txt Pasa a travs del filtro more el contenido del archivo nombrearchivo, mostrando una pagina cada vez. Canalizando La canalizacin de datos es similar al redireccionami ento, salvo que este tiene lugar hacia dispositivos o archivos mientras que la canalizacin es hacia otros comandos o programas. Para canalizar usamos el signo | (pipe, tubera) y efectivamente es como si pudieras meter varios programas dentro de una tubera por la que iran pasndose los datos de unos a otros. Por ejemplo: c:>dir | more De esta forma pasamos la salida del comando dir al filtro more, que lo muestra una pgina cada vez.

Comandos Batch Un archivo batch (o bat) es un archivo de procesamiento por lotes: se trata de archivos de texto sin formato, guardados con la extensin *.bat que contienen un conjunto de comandos DOS. Cuando se ejecuta este archivo bat, los comandos contenidos son ejecutados en grupo, de forma secuencial, permitiendo automatizar diversas tareas. Cualquier comando DOS puede ser utilizado en un archivo batch. Tienes tambin varios comandos especiales para este tipo de archivos: CALL Este comando realiza, desde un archivo batch, una llamada a la ejecucin de otro archivo batch. El primer archivo no finaliza su ejecucin al realizar la llamada. CALL [unidad_disco:][path]nombre_archivo [parametros] Donde [unidad_disco:][path]nombre_archivo es la ruta al archivo batch llamado (debe ser un archivo *.bat) y [parametros] puede ser cualquier tipo de informacin que necesite el programa llamado que pueda pasarse el lnea de comandos. CHOICE Ofrece al usuario una entrada de datos para que pueda escoger una opcin (escoger una de las letras que se le ofrecen), y espera hasta que esta tenga lugar. CHOICE [/C[:]letra] [/N] [/S] [/T[:]c,nn] [texto] Parametros texto Puedes especificar un texto que aparecer antes de la entrada de datos. No hace falta que lo entrecomilles, salvo que dicha cadena de texto incluya una barra /. Es un parmetro opcional. Modificadores /C[:]letra Especifica las letras que indicarn las opciones del usuario. Si las especificas separadas por comas, aparecern entre corchetes seguidas de un interrogante. Si no se especifican, se usara YN (si, no) por defecto. /N Evita que se muestre el prompt de usuario /S Hace que discrimine entre entrada de letras maysculas o minsculas. /T [:]c,nn

Introduce un tiempo de espera antes de ejecutar la accin por defecto. Con los siguientes posibles valores: c Seala que carcter ser usado como opcin por defecto despus de nn segundos. Solo puedes indicar uno de los caracteres especificados con el modificador /C nn Indica el nmero de segundos de pausa. Valores entre 0 y 99. ECHO Activa o desactiva el volcado de texto del programa (output) a la pantalla: ECHO [ON|OFF] echo [mensaje] Parametros ON|OFF Activa o desactiva el volcado de texto. Para conocer el estado actual, usar ECHO sin parmetros. Mensaje El texto a mostrar. FOR Ejecuta un comando sobre un grupo de archivos. Puede utilizarse en la lnea de comandos o en un archivo bat: a) en archivos BAT: FOR %%variable IN (set) DO command [command-parameters] b) en lnea de comandos: FOR %variable IN (set) DO command [command-parameters] Parmetros %%variable %variable Representa una variable que ser reemplazada por su valor. FOR reemplazar % %variable o %variable con la cadena de caracteres especificados en SET hasta que el comando especificado se haya ejecutado sobre todos los archivos. %%variable se emplea con FOR dentro de archivos batch, y %variable desde la lnea de comandos. (set) Especifica uno o ms archivos de texto (o cadenas) que se procesaran con el comando. Necesita parntesis. Command; El comando que debe ejecutarse sobre cada archivo especificado en SET parmetros de comando Podemos emplear el comando con cualquiera de sus parmetros habituales.

GOTO Salta la ejecucin del programa hacia la lnea indicada: GOTO label Donde: Label (advierte los dos puntos) es una etiqueta que identifica la lnea. 8 caracteres mximo. IF Permite la ejecucin condicional. Sintaxis: IF [NOT] ERRORLEVEL numero comando IF [NOT] string1==string2 comando IF [NOT] EXIST nombre_archivo comando Parmetros: NOT El comando sujeto a condicin se ejecuta solo si esta es falsa. ERRORLEVEL nmero. La condicin es verdadera solo si el comando anterior devuelve un cdigo de salida igual o mayor que el especificado. Command; Especifica el comando a ejecutar si la condicin se cumple string1==string2 La condicin se cumple solo si cadena1 es igual a cadena2. Cadena1 y cadena2 pueden ser cadenas de texto o variables. EXIST nombre_archivo La condicin se cumple si existe nombre_archivo . PAUSE Suspende la ejecucin de comandos y presenta un mensaje para que el usuario presione una tecla para continuar. REM Lnea de comentario. Podemos usar REM o :: SHIFT Alterna la posicin de los parmetros en el archivo bat. Variables El signo % seguido de un nmero (del 1 al 9) permite pasar parmetros al invocar nuestro archivo bat. Por ejemplo si tenemos

un archivo saludo.bat con la lnea echo Hola %1, si lo invocamos tecleando archivo.bat pepe presentar en pantalla Hola Pepe. Se usa por ejemplo para pasar nombres de ficheros a un bat que se encarga de borrarlos, moverlos, etc. 4. Resumen de algunos comandos MSD Acrnimo de Microsoft Diagnostics (diagnsticos de Microsoft) Nombre que recibe la aplicacin entregada en las ltimas versiones del sistema operativo MS-DOS, que posibilita al usuario la obtencin de informacin sobre la configuracin de su equipo. FORMAT (comando externo) Format: comando del sistema operativo MS-DOS cuya misin es formatear las unidades de almacenamiento (discos duros y disquetes). Formatear es preparar un disco o disquete para trabajar o almacenar datos. Este tiene como objetivo dar formato al disco del driver. Este crea un nuevo directorio raz y tabla de asignacin de archivos para el disco. Tambin puede verificar si hay factores defectuosos en el disco y podr borrar toda la informacin que este contenga. CLS (comando interno) Comando del sistema operativo MS-DOS cuya misin es limpiar la pantalla. Una vez limpia la pantalla coloca el cursor en la parte superior izquierda de la misma. CD (comando externo) Comando de los sistemas operativos DOS y UNIX que nos sirve para cambiar de escritorio. MD Crea un directorio ROOT Es un sistema operativo jerrquico de archivos refirese al primer escritorio respecto al cual todos los dems son subdirectorios . DISKCOPY (comando externo) Nos permite hacer una copia idntica de un disquete a otro, pertenece al grupo de los comandos externos.

Comandos Internos Son aquellos comandos cuyas instrucciones son cargadas a la memoria RAM. Estos comandos no necesitan la presencia del disco de sistema operativo. Entre ellos encontramos: COPY CLS DEL O ERASE DIR TYPE DATE RENAME MD TIME VER Comandos Externos Estos comandos necesitan mucha capacidad de memoria para mantenerse dentro de ella al mismo tiempo, por lo tanto son grabados en el disco, y podemos ascesarlos cuando sea necesario. Son llamados externos porque estos estn grabados fuera de la memoria RAM. Entre estos estn: CLRDSK DISP COMP DELTREE TREE DOSKEY RESTORE FORMAT DISK COPY ATTRIB LAVEL FAT (file allocation table) (comando interno) Tabla de asignacin de archivos. Es la parte del sistema de archivo DOS y OS/2 que lleva la cuenta de donde estn almacenados los datos en el disco. PROMPT (smbolo del sistema) (comando interno) Este cambia la lnea de comando, o sea, se emplea para cambiar la visualizacin de la lnea de comando. PATH (comando interno) Especifica el directorio cuya estructura del directorio desee preguntar. Erase o Delete (comandos internos) Este comando se utiliza para suprimir, borrar o eliminar uno mas archivos de un disquete o disco duro. Otro comando que tiene la misma funcin es el comando interno ERASE. COPY (comando interno)

Copia uno o ms archivos de un disquete a otro. Este comando tambin puede emplearse como un editor de texto. ATTRIB (comando interno) Brinda atributos a los archivos. Despliega o cambia los atributos de los archivos. Ej. TH- atributo de invisibilidad R-atributo de solo lectura T-activa un atributo M-desactiva un atributo XCOPY Comando que permite hacer copias del disco duro o entre disquetes distintos formato. XCOPY lee todos los ficheros que una memoria RAM y a continuacin lo escribe en un disquete. VER (comando interno) Su objetivo es visualizar la versin del sistema operativo en el disco. Despliega informacin de la versin del DOS que esta operando la computadora. VOL (comando interno) Tiene como objetivo mostrar el volumen del disco y su numero de serie si existen. DOS KEY (comando externo) Nos permite mantener residente en memoria RAM las rdenes que han sido ejecutadas en el punto indicativo. PRINT Comando que nos permite imprimir varios ficheros de textos sucesivamente. MIRROR Al grabar cualquier archivo en Array de unidades en espejo el controlador enva simultneamente copias idnticas del archivo a cada unidad del array el cual puede constar nicamente de dos unidades. BACK UP (comando externo) Ejecuta una copia de seguridad de uno o ms archivos de un disco duro a un disquete. RESTORE Este comando restaura los archivos que se hagan hecho copia de seguridad. BUFFERS

Son

unidades

de

memoria

reservadas

para

conservar

informaciones

intercambiadas con las computadoras. SCANDISK Sirve para comprobar si hay errores fsicos y lgicos en el computador. SLASH Comando que cierra el directorio hacia la raz. BACK SLASH Comando que pasa de un directorio a otro principal. CONFIG. SYS Copia los archivos del sistema y el interpretador de comandos al disco que especifique. AUTOEXE BAT Es el primer fichero que el MS-DOS ejecuta. UNDELETE Proporciona una proporcin de distintos niveles para ficheros borrados. UNFORMAT Comando que permite reconstruir un disco recuperando as toda la informacin que contenga. DIR Sirve para ver los archivos, directorios y subdirectorios que se encuentran en el disco duro o en un disquete. COMODINES Son caracteres que facilitan el manejo de los comandos Ej. ?- un carcter *- un grupo de caracteres F DISK Permite crear varias peticiones en un disco duro y seleccionar, cual de ellas ser la particin, es simplemente una divisin del disco duro que el MS-DOS trata como un rea individual de acceso. LABEL (comando externo) Etiqueta el disco. Una etiqueta es el nombre de un dato, archivo o programa. SYS (comando externo) Transfiere los archivos de sistema de dos ocultos para hacer un disquete que tenia para inicial.

TIME (comando interno) Tiene como objetivo visualizar la hora del sistema o ejecutar el reloj interno de la PC. DATE (comando interno) Permite modificar y visualizar la fecha del sistema. DELTREE (comando externo) Usado para borrar un directorio raz no importa que contenga subdirectorios con todos sus contenidos. TREE (comando externo) Su funcin es presentar en forma grfica la estructura de un directorio raz. TYPE (comando interno) Visualiza el contenido de un archivo Desde la lnea de comando. O sea las informaciones que posee un archivo en su interior. EDIT Inicia el editor del DOS, para trabajar con archivos ASCII. REN (rename) Renombra uno o ms archivos, no se puede especificar otro disco o ruta para el o los archivos. RD (rmdir) Remueve o borra directorios, para borrar el directorio debe estar en blanco.

5. Aplicaciones Buscar ayuda Podemos obtener ayuda de un comando determinado, introduciendo el comando y a continuacin /?. Por ejemplo: dir /? Esto nos sacara la ayuda del DOS sobre este comando. Limpieza de pantalla Simplemente se teclea en cualquier directorio que se encuentra: c:\cls y se pulsa enter. Formatear un disquete de 1,44 MB Nos situamos en la ruta correspondient e por ejemplo C:\Windows. C:\> Tecleamos Format a: y pulsamos la tecla enter, seguimos los pasos y presionamos enter. Formatear un disco duro Se siguen los mismos pasos que para formatear un disco de 1,44 MB pero esta vez con otra direccin, ejemplo nos situamos en C:\Windows. C:\ > tecleamos Format c: presionamos enter, y se siguen los pasos. Crear directorios Tecleamos MD [unidad\ruta\]<nombre>, por ejemplo: nos situamos en C:\> escribimos md Alumno pulsamos enter, ya se creo el directorio alumno, pero si deseamos crear un rbol, entonces se tendr: c:\md alumno\sistemas y pulsamos enter, c:\md alumno\sistemas\arquitectura y pulsamos enter, ya se crea el rbol. Existe otra forma de crear rboles: c:\>md alumno y pulsa enter, se crea el primer directorio, luego se abre el directorio con C:\>cd alumno, all se escribe C:\>alumno>md sistemas y se pulsa nuevamente enter, y as se seguir hasta completar el rbol a crear. Mostrar o Cambiar de nombre del directorio Nos ubicamos en algn directorio: c:\, a continuacin tecleamos C:\>cd alumno y pulsamos enter. Borrar un directorio Tecleamos C:\>rd alumno y pulsamos enter. Ver el contenido de un archivo Nos ubicamos en el directorio en que se encuentra el archivo que deseamos ver, Supongamos que se encuentra en la unidad E:\, tecleamos: C:\>type e:\arquitectura.txt y pulsamos enter. Crear o modificar un archivo de texto

Tecleamos C:\>edit C:nuevotexto.txt /H y pulsamos enter, visualizaremos la pantalla del editor de texto, se podr entonces editar y guardar el archivo. Borrar un archivo Podemos utilizar varios comandos para borrar archivo, por ejemplo: C:\>del nuevotexto.txt, o C:\erase nuevotexto.txt Podemos hacer uso de los comodines * e ? Si queremos eliminar todos los archivos con extensin .EXE tendremos: C:\DEL C:\alumnos\*.EXE; Si queremos borrar todos lo archivos del directorio tendremos C:\DEL C:\alumnos\*.* Cambiar de Fecha del Sistema Tecleamos Date, por ejemplo: C:\>Date y pulsamos enter; tendremos: La fecha actual es Mi 03/09/2003 Escriba la nueva fecha (dd-mm-aaaa): Si desea cambiar la fecha slo escribe la fecha sino solo presiona enter. Cambiar la Hora del Sistema Se siguen lo mismos pasa que para cambiar la fecha, ejemplo: C:\>Time y presiona enter, tendremos: La hora actual es 10:54:08.82a Escriba la nueva hora, si desea cambiar escribe la hora sino solo presiona enter. Visualizar los archivos y sub-directorios del directorio actual Si queremos ver los todos los archivos con extensin .EXE tendremos: C:\>dir *.EXE, si desea ver todos los archivos ordenados en columnas de tendr: C:>dir *.EXE /W 5. Conclusiones El MS-DOS es un sistema operativo monousuario y monotarea. Al cumplir las dos condiciones, el procesador est en cada momento est dedicado en exclusividad a la ejecucin de un proceso, por lo que la planificacin del procesador es simple y se dedica al nico proceso activo que pueda existir en un momento dado. El trabajo ha enseado que el sistema no tiene solo comandos internos sino tambin externos y todos no realizan la misma funcin; cada uno de ellos nos hace la vida ms fcil ya que ellos realizan todo el trabajo que tendramos que hacer nosotros.

Captulo 10 Ficheros por lotes (I)


10-1 Introduccin En muchas ocasiones los usuarios de ms-dos repiten una determinada secuencia de rdenes da tras da, suponiendo una tarea bastante molesta e incmoda. Los ficheros por lotes pretenden automatizar una tarea rutinaria ejecutando una serie de rdenes definidas con antelacin. En este captulo aprenderemos aquellas herramientas necesarias para crear un fichero por lotes. En el captulo siguiente, se exponen y estudian tiles ejemplos que abarcan la totalidad del temario estudiado. 10-2 Concepto de fichero por lotes Un fichero por lotes es un fichero ASCII que contiene una serie de rdenes Como ejemplo, vamos a crear un fichero por lotes llamado TIEMPO.BAT. Para su confeccin podemos utilizar la orden Copy o el programa Edit. C:\BATH>copy con tiempo.bat date time ^Z 1 archivo(s) copiado(s) Si ahora ejecutamos el fichero recin creado, vemos como entran en funcionamiento las rdenes Date y Time. C:\BATH>tiempo C:\BATH>date La fecha actual es Mar 15/08/1995 Escriba la nueva fecha (dd-mm-aa): C:\BATH>time La hora actual es 0:53:54,12 Escriba la nueva hora: C:\BATH>

Todos los ficheros por lotes poseen unas caractersticas comunes: Extensin. Todos deben llevar obligatoriamente la extensin BAT. Contenido. Son ficheros de texto ASCII y, por consiguiente, pueden ser creados por Copy o Edit. Cada lnea del fichero debe poseer una orden. Ejecucin. Para hacerlo funcionar simplemente debemos teclear su nombre a continuacin del smbolo del sistema. El fichero por lotes tomar entonces el control del ordenador. Interrupcin. Podemos detener el procesamiento del fichero por lotes en cualquier momento presionando Ctrl+Pausa. Todas las rdenes admitidas despus del smbolo del sistema pueden introducirse tambin en un fichero por lotes. Adems, existen una serie de rdenes diseadas especficamente para estos ficheros: Orden Breve descripcin Echo Controla el eco de las rdenes y visualiza mensajes. Rem Introduce comentarios. Pause Detiene temporalmente el desarrollo de un programa. Goto Desva incondicionalmente el desarrollo de un programa. If Desva condicionalmente el desarrollo de un programa. Choice Permite elegir entre unas opciones establecidas. For Repite una misma orden en un conjunto de ficheros. Call Llama a un fichero por lotes desde otro. Shift Desplaza el valor de los parmetros. La siguiente tabla muestra aquellos smbolos empleados exclusivamente en los ficheros por lotes: Smbolo Significado :etiqueta Nombre de una etiqueta. %nmero Parmetro del fichero por lotes. %variable% Variable del entorno. %%variable Variable de la orden For. 10-3 La orden ECHO Se puede utilizar de cinco formas: ECHO Indica si est activado o desactivado el eco de las rdenes.

ECHO ON Activa el eco ECHO OFF Desactiva el eco ECHO mensaje Visualiza un mensaje en pantalla. ECHO. Visualiza una lnea en blanco en pantalla.

El eco de una orden es el propio nombre de aquella escrito en la pantalla. Al poner en marcha el fichero anterior, observar como aparece el nombre de cada orden en pantalla antes de ejecutarse. Al fichero del ejemplo podemos aadirle la lnea ECHO OFF para desactivar el eco en lo sucesivo. Para eliminar el eco de la propia orden ECHO OFF se antepone el smbolo arroba (@) al nombre de la orden. Vemoslo ms claro en los ejemplos siguientes. Programa: echo off date time Ejecucin: C:\BATH>tiempo C:\BATH>echo off La fecha actual es Mar 15/08/1995 Escriba la nueva fecha (dd-mm-aa): La hora actual es 0:53:54,12 Escriba la nueva hora: Programa: @echo off date time Ejecucin: C:\BATH>tiempo

La fecha actual es Mar 15/08/1995 Escriba la nueva fecha (dd-mm-aa): La hora actual es 0:53:54,12 Escriba la nueva hora: La orden Echo tambin permite mostrar mensajes al usuario del fichero. En el siguiente ejemplo se ha introducido el mensaje "Este es el fichero TIEMPO.BAT": Programa: @echo off echo Este es el fichero TIEMPO.BAT date time Ejecucin: C:\BATH>tiempo Este es el fichero TIEMPO.BAT La fecha actual es Mar 15/08/1995 Escriba la nueva fecha (dd-mm-aa): La hora actual es 1:10:22,72 Escriba la nueva hora: 10-4 La orden REM Permite introducir comentarios internos en el cdigo de un fichero por lotes. Las lneas precedidas por la palabra Rem sern ignoradas durante el funcionamiento del fichero por lotes. Se suele utilizar esta orden para introducir aclaraciones en el cdigo del fichero. Objetivo: facilitar su lectura y correccin de errores. @echo off rem Programa: TIEMPO.BAT rem Cometido: Mostrar al usuario la fecha y la hora del rem sistema y ofrecerle la oportunidad de modificarla. date time

Ejercicios de autocomprobacin 1. Indique la diferencia entre las siguientes rdenes: ECHO Ficheros por lotes REM Ficheros por lotes 10-5 Gestin de parmetros Los parmetros son informaciones adicionales colocadas detrs del nombre de una orden. Si la mayora de las rdenes de ms-dos admiten parmetros, tambin ser posible gestionar parmetros en los ficheros por lotes. Vamos a confeccionar un fichero por lotes que borre dos ficheros introducidos como parmetros. Programa: @echo off rem Programa: BORRA2.BAT del %1 del %2 Ejecucin: A:\>borra2 juan.txt maria.txt En la lnea de rdenes, cada parmetro debe estar separado con un espacio en blanco del anterior. De la forma anteriormente explicada podemos gestionar hasta nueve de ellos (del %1 al %9). Para referirnos a un parmetro introducido en la lnea de rdenes del programa, debemos escribir el signo de porcentaje (%) seguido del nmero de parmetro. El siguiente ejemplo copia los ficheros introducidos como parmetros al disquete de la unidad B: Programa: @echo off rem Programa: COPIAB.BAT echo Se estn copiando los ficheros %1, %2 y %3 a la unidad B: copy %1 b:\ copy %2 b:\ copy %3 b:\ Ejecucin:

A:\>copiab juan.bak alberto.bmp marta.dbf 10-6 La orden PAUSE Detiene temporalmente el desarrollo de un programa. Cuando el dos encuentra una orden Pause en un fichero por lotes visualiza un mensaje en pantalla y espera una tecla para proseguir. Tambin podemos presionar Ctrl+Pausa y as, interrumpir el desarrollo del fichero. Presione cualquier tecla para continuar . . . Para mejorar la presentacin, podemos insertar un mensaje indicando el motivo de la detencin del programa gracias a la orden Echo: echo Inserte un disquete en la unidad B: pause Si no deseamos ver el mensaje de Pause, podemos redireccionarlo al dispositivo ficticio NUL. echo Inserte un disquete en B: y pulse Enter pause >nul Ejercicios de autocomprobacin 2. Qu hace la orden PAUSE >NUL ? 3. Escriba un fichero de procesamiento por lotes que pida un disco en la unidad A: antes de mostrar su directorio raz. 10-7 La orden GOTO Normalmente un fichero por lotes se desarrolla secuencialmente, desde la primera lnea hasta la ltima. Sin embargo, la orden Goto permite desviar la ejecucin del programa hasta una etiqueta especificada como parmetro. GOTO [:]etiqueta Las etiquetas deben ir precedidas de dos puntos (:) para diferenciarse de las

rdenes. Admiten hasta ocho caracteres significativos. Esto ltimo significa que la etiqueta `BALANCE_DE_AGOSTO' es idntica a `BALANCE_DE_ENERO'. El siguiente ejemplo muestra cmo se usan las etiquetas: Programa: @echo off ver goto Final vol :Final Ejecucin: Versin MS-DOS 6.22 En este ejemplo, la orden Vol nunca se ejecutar: al llegar la orden GOTO FINAL, msdos salta hasta la etiqueta :Final y termina el fichero porque no hay ms lneas. Vamos a crear un programa para copiar varios disquetes desde la unidad A: al directorio actual. @echo off rem Programa: DEMO.BAT echo ******************************************** echo ** Este programa copia todos los ficheros ** echo ** de la unidad A: al directorio actual ** echo ******************************************** pause :Proceso copy a:\ . echo Introduzca el siguiente disquete en A: y pulse Enter pause >nul goto Proceso En primer lugar el programa muestra en pantalla su cometido y as, el usuario decide entre continuar (Enter) o abandonar (Ctrl+Pausa). Si pulsa Enter se copian todos los ficheros del directorio raz de A: en el directorio actual. Luego, se ofrece la posibilidad de introducir otro disquete. Si pulsamos Enter se ejecuta la orden GOTO PROCESO, desviando la ejecucin del programa hasta la

etiqueta :Proceso. En cambio, si pulsamos Ctrl+Pausa el programa finaliza, apareciendo el smbolo del sistema. Ejercicios de autocomprobacin 4. Qu hace el siguiente fichero por lotes? @echo off dir c:\ goto etiqueta2 :etiqueta1 ver :etiqueta2 10-8 La orden IF Desva condicionalmente el proceso de ejecucin de un fichero por lotes. Admite 6 sintaxis diferentes: IF EXIST fichero orden Si existe el fichero se ejecuta la orden. IF NOT EXIST fichero orden Si no existe el fichero se ejecuta la orden. IF cadena1==cadena2 orden Si ambas cadenas son iguales se ejecuta la orden. IF NOT cadena1==cadena2 orden Si ambas cadenas son diferentes se ejecuta la orden. IF ERRORLEVEL nmero orden Si el cdigo de salida del ltimo programa es igual o superior al nmero, se ejecuta la orden. IF NOT ERRORLEVEL nmero orden Si el cdigo de salida del ltimo programa es inferior al nmero, se ejecuta la orden. IF EXIST Un programador debe considerar todas y cada una de las situaciones posibles al ejecutarse su programa y, por tanto, debe evitar la aparicin de mensajes de error inesperados en la pantalla. Suponga el siguiente fichero por lotes: @echo off del %1 Si ahora lo hacemos funcionar introduciendo como parmetro un fichero inexistente, el ms-dos tomar el control y dar su correspondiente mensaje de error. Este fichero resulta ms correcto si contiene las siguientes lneas:

@echo off if not exist %1 echo Es imposible borrar un fichero que no existe! if exist %1 del %1 De esta forma, la orden Del slo funciona si el fichero existe. IF cadena1==cadena2 Encuentra su utilidad al trabajar con parmetros en un fichero por lotes. En el fichero BORRA2.BAT hemos supuesto que el usuario siempre introduce dos parmetros. Sin embargo, se producir un error si el usuario slo introduce uno de ellos: la orden DEL %2 quedar transformada en DEL a secas y como Del no funciona sin parmetros, ms-dos mostrar una advertencia. Este problema se soluciona con lo siguiente: @echo off rem Programa: BORRA2B.BAT if "%1"=="" echo Debe introducir uno o dos ficheros como parmetros. if not "%1"=="" del %1 if not "%2"=="" del %2 La primera lnea If avisa si no se ha introducido ningn parmetro. La segunda lnea nicamente borrar el primer parmetro si se ha introducido. La tercera lnea hace lo mismo pero con el segundo parmetro. IF ERRORLEVEL Cada orden externa de ms-dos genera un cdigo de salida a su trmino indicando si pudo realizarse satisfactoriamente. Generalmente un cdigo de salida 0 indica que no hubo ningn problema y un cdigo de salida superior hace referencia a diferentes errores. Muchos ficheros por lotes necesitan saber si la orden anterior cumpli su cometido correctamente: para ello utilizan la orden If errorlevel. Es muy importante recordar que la orden se ejecutar si el cdigo de salida es igual o superior al especificado detrs de ERRORLEVEL. A modo de ejemplo tenemos a continuacin los cdigos de salida de Xcopy: Cdigo Significado 0 Los ficheros fueron copiados sin error. 1 No se encontraron ficheros para copiar.

2 El usuario presion Ctrl+Pausa para suspender el proceso de Xcopy. 4 Ocurri un error de inicio. No hay suficiente memoria o espacio en el disco, se introdujo un nombre de unidad no vlida o se utiliz una sintaxis incorrecta en la lnea de rdenes. 5 Ocurri un error de escritura de disco. Vamos a crear un fichero por lotes para copiar los ficheros de la unidad A: a la B: e informe del resultado de la copia. @echo off rem Programa: COPIA-AB.BAT xcopy a:\ b:\ if errorlevel 1 goto Error if errorlevel 0 echo La copia fue correcta! goto Final :Error echo Se produjo un error durante la copia :Final En primer lugar, Xcopy intenta realizar la copia de ficheros y devolver un cdigo de salida. Si se ha producido algn error el cdigo ser 1 o superior y entonces, el programa se desva hasta la etiqueta :Error, muestra el mensaje y finaliza. Si la copia fue satisfactoria, el cdigo de salida es 0. La segunda lnea If mostrar el mensaje de xito, saltando despus a la etiqueta :Final y como no hay ms lneas, termina el proceso. En muchas ocasiones puede ser fuente de complicaciones que If errorlevel nmero se cumpla si el nmero es igual o mayor. Para cumplirse exclusivamente si el cdigo de salida es 5 -por ejemplo- podemos usar lo siguiente: if errorlevel 5 if not errorlevel 6 dir Esta compleja lnea se traduce as: Si el cdigo de salida es 5 o superior pero inferior a 6 ejecutar Dir, es decir, si el cdigo es 5 ejecutar Dir. 10-9 La orden CHOICE

Permite escoger una opcin entre varias y, dependiendo de la opcin elegida, devuelve un cdigo de salida. Su sintaxis es: CHOICE [mensaje] [/C:opciones] [/N] [/S] [/T:opcin,segundos] /C:opciones Especifica las opciones posibles. Si el usuario pulsa la primera de las opciones, Choice devolver un cdigo de salida 1; si pulsa la segunda opcin, Choice devuelve el cdigo 2 y as sucesivamente. Si no se especifica este parmetro se asumen las opciones por defecto (SN). /N No muestra las opciones admitidas detrs del mensaje. /S Hace distincin entre maysculas y minsculas. Si no se especifica este parmetro se toman como la misma opcin. /T:opcin,segs Toma la opcin indicada si no se pulsa ninguna otra tecla en los segundos especificados. mensaje Contiene el mensaje mostrado al usuario pidiendo que introduzca una de las opciones admitidas. El programa DEMO.BAT podemos mejorarlo sensiblemente si cambiamos las rdenes Pause por rdenes Choice. @echo off rem Programa: DEMOB.BAT echo ******************************************** echo ** Este programa copia todos los ficheros ** echo ** de la unidad A: al directorio actual ** echo ******************************************** choice Desea continuar? if errorlevel 2 goto Final :Proceso copy a:\ . choice Para continuar con otro disquete pulse C y para finalizar, F /C:FC if errorlevel 2 goto proceso :Final

En la primera orden Choice se toman las opciones por defecto S y N. `S' corresponde a un cdigo de salida 1 y `N' a un cdigo 2. En la segunda orden Choice se toman las opciones F y C. `F' corresponde a un cdigo 1 y `C' a un cdigo 2. Con la orden Choice y de una forma muy sencilla podemos crear mens con diferentes opciones: @echo off rem Programa: UTIL.BAT :Menu cls echo UTILIDADES DE MS-DOS echo -------------------echo. echo A. Anti-Virus echo B. Backup echo D. Defragmentar echo E. Editor echo S. Salir echo. choice Qu utilidad desea comenzar? /c:abdes /n /t:s,15 if errorlevel 5 goto Salir if errorlevel 4 goto Editor if errorlevel 3 goto Defrag if errorlevel 2 goto Backup if errorlevel 1 goto Anti if errorlevel 0 goto Menu :Anti MSAV goto Menu :Backup MSBACKUP

goto Menu :Defrag DEFRAG goto Menu :Editor EDIT goto Menu :Salir echo. Observe la orden Choice: el modificador /C indica las opciones admitidas. Si se pulsa la `A' se generar un cdigo de salida 1 y as sucesivamente hasta la `S' que corresponde a un cdigo 5. Gracias al modificador /N Choice no muestra las teclas admitidas detrs del mensaje. El modificador /T toma como opcin por defecto la `S' si pasan 15 segundos sin pulsar ninguna tecla. Observe, asimismo, cmo se ha comenzado en las lneas If por el errorlevel ms alto: as se evitan conflictos. El cdigo de salida 0 se obtiene si el usuario responde con Ctrl+Pausa al mensaje de Choice. Ejercicios de autocomprobacin 5. Escriba un fichero de procesamiento por lotes para borrar el fichero introducido como parmetro. El programa debe comprobar previamente si se ha introducido algn parmetro y si el fichero existe. 6. Para qu devuelven un cdigo de salida las rdenes externas? 7. Escriba un fichero por lotes que nos pregunte si deseamos ver el directorio de A: o el de B: 10-10 Las variables del entorno Se puede recuperar el valor de una determinada variable del entorno introduciendo sta entre signos de porcentajes (%NombreVariable%). Ejemplo: Echo El valor de la variable PATH es %PATH% Echo El valor de la variable PROMPT es %PROMPT%

El siguiente ejemplo da el valor C:\DOS a la variable TEMP si no ha sido definida: if "%TEMP%"=="" set TEMP=C:\DOS 10-11 Otras rdenes Existen otras tres rdenes ms diseadas para su uso en ficheros por lotes. Como estas rdenes tienen un menor uso, se exponen resumidamente a continuacin. La orden FOR Su sintaxis es: FOR %%variable IN (conjunto) DO orden Esta orden repite la orden especificada para cada valor del conjunto. Conjunto es una lista de nombres de ficheros. En ella, se pueden establecer varios nombres separados por espacios y tambin, utilizar comodines. Ejemplo for %%I in (juan.txt maria.txt *.dat) do type %%i La variable %%I va tomando cada uno de los valores del conjunto y se los enva a la orden Type. En este ejemplo se visualizan en pantalla los ficheros JUAN.TXT, MARIA.TXT y todos los que tengan extensin DAT. La orden SHIFT Se traduce al espaol por desplazamiento. Mueve el valor de cada parmetro a la variable anterior. Por ejemplo, si existen 3 parmetros (%1, %2 y %3) y se utiliza la orden Shift, el valor de %1 lo tomar %0, el valor de %2 lo tomar %1 y el valor de %3 lo tomar %2. Programa: @echo off rem Programa: DEMO2.BAT echo El parmetro 1 es %1 shift echo El parmetro 2 es %1 shift echo El parmetro 3 es %1

Ejecucin: C:\BATH>demo2 juan maria alberto El parmetro 1 es juan El parmetro 2 es maria El parmetro 3 es alberto C:\BATH> La orden CALL Se utiliza para llamar a un fichero por lotes desde el interior de otro. Su sintaxis es: CALL fichero [ParmetrosDelFichero] En el siguiente ejemplo, el fichero PRG1.BAT llama a PRG2.BAT. Cuando la ejecucin de PRG2.BAT termina, continua PRG1.BAT en la siguiente lnea a Call. Programa PRG1.BAT: @echo off echo lnea 1 call prg2.bat echo lnea 4 echo lnea 5 Programa PRG2.BAT: @echo off echo lnea 2 echo lnea 3 Ejecucin: C:\BATH>prg1 lnea 1 lnea 2 lnea 3 lnea 4 lnea 5

C:\BATH> Clave de los ejercicios de autocomprobacin -------------------------------------------------------------------------------La lnea ECHO muestra el mensaje "Ficheros por lotes" en pantalla y la lnea REM es ignorada al funcionar el programa. Espera la pulsacin de una tecla. Como la salida de Pause est redireccionada al dispositivo nulo, no se mostrar ningn mensaje en la pantalla. @echo off Echo Introduzca un disquete en la unidad A: Pause dir a:\ Muestra el directorio raz de la unidad C: y luego la versin del sistema operativo. Como el nombre de las etiquetas slo admite ocho caracteres significativos la orden GOTO ETIQUETA2 llevar a la primera etiqueta empezada por ETIQUETA, en este caso ETIQUETA1. @echo off if "%1"=="" goto Error1 if not exist %1 goto Error2 del %1 echo El fichero %1 se ha borrado goto Final :Error1 echo Debe especificar un fichero goto Final :Error2 echo El fichero %1 no existe :Final echo.

Las rdenes externas devuelven un cdigo de salida para ser utilizado en los ficheros por lotes. Posteriormente se podr evaluar este cdigo gracias a la orden If errorlevel. @echo off echo A. Ver el directorio de A: echo B. Ver el directorio de B: choice Elija opcin /c:ab if errorlevel 1 if not errorlevel 2 dir a:\ if errorlevel 2 if not errorlevel 3 dir b:\ Puesta en prctica -------------------------------------------------------------------------------Adems de los ejemplos expuestos en este captulo, en el siguiente encontrar una seleccin de varios ficheros por lotes. Se sugiere comentar cada uno de los ficheros y, una vez comprendidos, introducirlos en el ordenador.

Variables de la shell
Variables de entorno
MS-DOS puede almacenar variables en formato de cadena de texto. Para definir, visualizar, o quitar las variables de entorno en la sesin actual de MS-DOS utilizaremos el comando SET:
SET [variable=[cadena]] variable cadena variable. Especifica el nombre de la variable de entorno. Especifica una serie de caracteres asignados a la

Escriba SET sin parmetros para ver las variables de entorno actuales.

Para utilizar el contenido de la variable, la envolveremos con los signos de porcentaje: %variable% Ejemplo. Definimos dos variables de entorno y las utilizamos:
C:\>SET micasa=C:\Documents and Settings\sirio C:\>CD %micasa% C:\Documents and Settings\sirio> Z:\>SET m=ping -n 1 www.madrid.org Z:\>%m% Haciendo ping a www.madrid.org [195.77.128.9] con 32 bytes de datos: Respuesta desde 195.77.128.9: bytes=32 tiempo=46ms TTL=247 Estadsticas de ping para 195.77.128.9: Paquetes: enviados = 1, recibidos = 1, perdidos = 0 (0% perdidos), Tiempos aproximados de recorrido redondo en milisegundos: mnimo = 46ms, mximo = 46ms, promedio = 46ms

Sin argumentos, nos muestra todas las variables del entorno:


C:\>SET ALLUSERSPROFILE=C:\Documents and Settings\All Users ... COMPUTERNAME=SIRIO ComSpec=C:\WINNT\system32\cmd.exe ... micasa=C:\Documents and Settings\sirio m=ping -n 1 www.madrid.org ...

Path=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\WINNT\sy s32;C:\Archivo s de programa\Java\jdk1.5.0_04\bin;C:\Archivos de programa\Archivos comunes\GTK\ 2.0\bin PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.VBS ... PROMPT=$P$G ... SystemRoot=C:\WINNT TEMP=C:\DOCUME~1\sirio\CONFIG~1\Temp TMP=C:\DOCUME~1\sirio\CONFIG~1\Temp ...

[variables de entorno en W2003 Server] Si slo deseamos ver las que comienzan por USER:
I:\>set user USERDOMAIN=SIRIO USERNAME=andromeda USERPROFILE=C:\Documents and Settings\sirio

Si las extensiones de comando estn habilitadas (por defecto lo estn, ver la ayuda de CMD), algunas variables de entorno son dinmicas y su valor se calcula cuando se hace uso de ellas.
%CD% - se expande a la cadena del directorio actual %DATE% - se expande a la fecha actual usando el mismo formato que el comando FECHA %TIME% - hora actual usando el mismo formato que el comando HORA %RANDOM% - nmero decimal aleatorio entre 0 y 32767 %ERRORLEVEL% - se expande al valor de NIVEL DE ERROR actual %CMDEXTVERSION% - nmero de versin de las Extensiones del comando del procesador. %CMDCMDLINE% - lnea de comando que invoc el Procesador de comandos.

ejemplos:
C:\>echo %time% 11:07:54,50 c:\kk>md tmp%RANDOM% tmp%RANDOM% tmp%RANDOM% c:\kk>dir ... 17/01/2006 11:13 <DIR> tmp14302 17/01/2006 11:13 <DIR> tmp10845 17/01/2006 11:13 <DIR> tmp3102 ... Voy a otro directorio y vuelvo: C:\Documents and Settings\sirio\prueba>set w=%CD%

C:\Documents and Settings\sirio\prueba>cd \ C:\>cd %w% C:\Documents and Settings\sirio\prueba> aunque es mejor usar los comandos PUSHD y POPD

NOTA: Ejecutando [ cmd /e:off ] abrimos una shell con las extensiones de comando deshabilitadas. Comprobar ahora como la variable %DATE% ha dejado de existir. Si ejecutamos una aplicacin windows (p.ej. el NOTEPAD), hasta que no finalice la aplicacin, la shell estar inoperativa: es monotarea 100% - ms cosas en [ cmd /? ]

Variables locales a shell


Las variables que definamos desde una shell son locales a esa shell y a las subshells, no afectan para nada al entorno de Windows ni a las shells superiores. Cuando cerramos una shell todos los cambios que hubisemos hecho en las variables se pierden para siempre:
Z:\>cmd abro una nueva shell

Z:\>prompt [%COMPUTERNAME%] $P$G cambio la variable PROMPT [SIRIO] Z:\>cmd si abro otra shell, hereda sus variables [SIRIO] Z:\>exit [SIRIO] Z:\>exit Z:\> pero cuando vuelvo a la shell original ... el prompt es el original

Variables globales a todas las shells


Desde Windows podemos visualizar, modificar o aadir nuevas variables desde el men de Propiedades del Sistema (icono Mi PC->Propiedades, o bien Panel de Control->Sistema), seleccionando la pestaa Avanzado, botn Variables de entorno:

Ah podremos ver las variables definidas para el usuario particular y las variables definidas para todo el sistema.

SET aritmtico
El comando SET tambin nos permite definir variables de entorno a partir de operaciones aritmticas simples con nmeros enteros, ya que lleva incorporada una calculadora bsica:
SET /A expresin El modificador /A especifica que la cadena a la derecha del signo de igual es una expresin aritmtica que es evaluada. El evaluador de expresiones es bastante simple y es compatible con las siguientes operaciones, en orden de precedencia decreciente: () * / % + << >> & ^ | = *= /= %= += -= &= ^= |= <<= >>= , agrupar operadores aritmticos operadores aritmticos mays lgica AND (de bits) XOR (de bits) OR (de bits) asignacin

- separador de expresin

Si se utiliza cualquiera de los operadores lgicos o de mdulo, ser necesario escribir la cadena entre comillas. Cualquier cadena que no sea numrica en la expresin, sern tratadas como nombres de la variable de entorno cuyos valores son convertidos a nmeros antes de ser utilizados. Si un nombre de la variable de entorno es especificada pero no definida en el entorno actual, entonces se utiliza el valor cero. Esto permite hacer operaciones aritmticas con los valores de la variable de entorno evitando el escribir todos estos signos % para obtener sus valores.

Ejemplos:
Cunto son 1200 euros? J:\>SET /A euros=1200, ptas=euros*166386/1000 199663 multiplicamos esa cantidad por 2 al cubo (i.e., aadimos 3 ceros "binarios" a su derecha) J:\>set /a ptas="ptas<<3" <-- las comillas son necesarias por la 1597304 ambigedad del operador < y si necesitamos lanzar un dado ... J:\>set /a %random% % 6 + 1 4 Podemos utilizar nmeros hexadecimales J:\>SET /A ff=0xF0CA + 0xFEA 65716

Algunas variables de entorno


PATH: Directorios donde buscar comandos Quizs la variable de entorno ms importante sea PATH, que contiene una lista de directorios separados por ; donde la shell buscar las rdenes que nosotros introduzcamos desde lnea de comandos (si no los encuentra en el directorio actual). Esta variable es tan importante que tiene su comando propio:
PATH [ [directorio[;...]] [;%PATH%];] Muestra o fija una ruta de bsqueda para archivos ejecutables. Al incluir %PATH% en la nueva ruta de acceso har que la ruta de acceso anterior se anexe a la nueva configuracin. PATH ; PATH borra la variable path sin parmetros muestra la ruta de acceso actual.

Ejecutando el comando path obtenemos esa lista de directorios:


X:\pruebas>path PATH=C:\WINNT\system32;C:\WINNT;C:\WINNT\System32\Wbem;C:\WINNT\sy s32;C:\Archivo s de programa\Java\jdk1.5.0_04\bin;C:\Archivos de programa\Archivos comunes\GTK\ 2.0\bin

Por ejemplo, si en el directorio "C:\prog\bin" guardamos archivos ejecutables a los que deseamos llamar sin necesidad de escribir toda la ruta hasta ellos, podemos aadir ese directorio a la variable PATH:
C:\>path %PATH%;C:\prog\bin

A partir de ahora podremos ejecutar cualquier programa que se encuentre en ese directorio sin tener que especificar la ruta completa. Si deseamos cambiar la path para todas las shell que abramos, debemos recurrir a las variables de entorno en Windows. En este caso, tambin podremos ejecutar los programas desde Windows con botn Inicio > Ejecutar.... ERRORLEVEL Almacena informacin sobre el resultado de la ejecucin del ltimo comando (0 si tuvo una respuesta exitosa, distinto de 0 en otro caso). - mas informacinPROMPT Define el smbolo del sistema. -ms informacinDIRCMD Permite establecer parmetros por defecto para el comando DIR p.ej. Si queremos que los listados de directorio aparezcan en minsculas, y ordenados alfabticamente:
Z:\>SET DIRCMD=/L/ON

COMPSPEC Ruta completa de la shell de comandos


C:\Documents and Settings\Administrador>set comspec ComSpec=C:\WINNT\system32\cmd.exe

[ Variables de entorno en W2003 Server ]


Locales o de Usuario %ALLUSERSPROFILE% ubicacin de perfil Todos los usuarios.

%APPDATA% ubicacin en que las aplicaciones guardan los datos de forma predeterminada. %CD% directorio actual. %CMDCMDLINE% lnea de comandos exacta utilizada para iniciar el Cmd.exe actual. %LOGONSERVER% nombre del controlador de dominio que valid la sesin actual. %PROMPT% configuracin del smbolo del sistema del intrprete actual. %TEMP% y %TMP% directorios temporales predeterminados que utilizan las aplicaciones. Algunas aplicaciones requieren TEMP y otras TMP. %USERDOMAIN% nombre del dominio que contiene la cuenta de usuario. %USERNAME% nombre del usuario que ha iniciado la sesin actual. %USERPROFILE% ubicacin del perfil del usuario actual.

Sistema %CMDEXTVERSION% nmero de versin de Extensiones del procesador de comandos actual. %COMPUTERNAME% nombre del equipo. %COMSPEC% ruta de acceso al ejecutable del shell de comandos. %DATE% fecha actual. Utiliza el mismo formato que el comando date /t. %ERRORLEVEL% cdigo de error del ltimo comando utilizado. Usualmente, los valores distintos de cero indican que se ha producido un error. %HOMEDRIVE% letra de unidad de la estacin de trabajo local del usuario conectada al directorio particular del usuario. Se establece segn el valor del directorio particular. El directorio particular del usuario se especifica en Usuarios y grupos Locales. %HOMEPATH% ruta de acceso completa del directorio particular del usuario. Se establece segn el valor del directorio particular. El directorio particular del usuario se especifica en Usuarios y grupos Locales. %HOMESHARE% Devuelve la ruta de acceso de red del directorio particular compartido del usuario. Se establece segn el valor del directorio particular. El directorio particular del usuario se especifica en Usuarios y grupos Locales. %NUMBER_OF_PROCESSORS%nmero de procesadores instalados en el equipo. %OS% nombre del sistema operativo. %PATH% ruta de acceso de bsqueda para los archivos ejecutables. %PATHEXT% extensiones de archivo que el sistema operativo considera como ejecutables. %PROCESSOR_ARCHITECTURE% Devuelve la arquitectura de chip del procesador. Valores: x86 o IA64 (basado en Itanium). %PROCESSOR_IDENTFIER% Devuelve una descripcin del procesador. %PROCESSOR_LEVEL% Devuelve el nmero de modelo del procesador instalados en el equipo. %PROCESSOR_REVISION% Devuelve el nmero de revisin del procesador. %RANDOM% nmero decimal aleatorio entre 0 y 32767.

%SYSTEMDRIVE% unidad que contiene el directorio raz del Sistema Operativo (es decir, la raz del sistema). %SYSTEMROOT% ubicacin del directorio raz del Sistema Operativo. %TEMP% y %TMP% directorios temporales predeterminados que utilizan las aplicaciones. Algunas aplicaciones requieren TEMP y otras TMP. %TIME% hora actual. Utiliza el mismo formato que el comando time /t. %WINDIR% Devuelve la ubicacin del directorio del sistema operativo.

C:\> ECHO %date% mar 04/02/2003 C:\> CMD /E:off -- arrancamos una nueva shell con las extensiones de comando deshabilitadas C:\> ECHO %date% %date%

You might also like