Bienvenido: ( Identificarse | Registrarse )      
Foros de Trucos Windows
 
Closed TopicStart new topicStart Poll

Outline · [ Estándar ] · Lineal+

> Manual de Programación BATCH, Libro Realmente Perfecto de Program. en Bat (Dedicado a Albertofu)

vitrox2007
post Feb 24 2008, 01:16 AM
Publicado: #1


..::Omnipresente::..
Group Icon

Grupo: Miembros Vitalicios
Mensajes: 2.282
Registrado: 21-December 07
Desde: Prados Argentinos - Coordoobee's!
Miembro nº: 220.375



Hola Comunidad !!!

Un libro que encontré en un ordenador 486DX en un formato bastante extraño, pero tras probarlo con distintos editores logre encontrar uno que si lo leyó bastante bien, el libro esta espetacular, es el mejor que he leído y es del 1993, época en el que el BATCH predominaba las computadoras :P

DEDICADO A LOS AMADORES DE ESTE LENGUAJE
----------------------------------------------------------------------------------------------


Carlos Mesa

################################################
# TECNICAS DE PROGRAMACION PARA ARCHIVOS BATCH #
################################################

Se incluye con el disquete de la recopilaci¢n UTILIDADES+2
(S¢lo en la versi¢n registrada)


















Tercera revisi¢n: Noviembre 1994








Indice
------



Introducci¢n............................................... 1


C¢mo utilizar este libro electr¢nico....................... 2


Cap¡tulo 1
Organizaci¢n y personalizaci¢n en el arranque del ordenador

1.1 A prop¢sito de los archivos por lotes.................. 4
1.2 El primer fichero batch es el de arranque.............. 4


Cap¡tulo 2
Ordenes del DOS

2.1 Los diez mandamientos..................................8
2.1.1 Orden @.........................................8
2.1.2 Orden ECHO......................................8
2.1.3 Orden REM.......................................8
2.1.4 Orden PAUSE.....................................9
2.1.5 El s¡mbolo % identifica a un par metro..........9
2.1.6 Orden CALL......................................11
2.1.7 Orden SHIFT.....................................12
2.1.8 Orden IF........................................12
2.1.9 Orden GOTO......................................17
2.1.10 Orden FOR......................................18


Cap¡tulo 3
Nuevos comandos para los ficheros por lotes

3.1 Norton, el rey Midas de la inform tica, proporciona un
nuevo comando..........................................20
3.2 El an¢nimo LETRA.COM...................................24
3.3 El otro DOS............................................25
3.4 Y a£n hay m s..........................................26


Cap¡tulo 4
Programaci¢n con ANSI.SYS y secuencias de escape

4.1 ANSIS.SYS es un controlador de dispositivo.............29
4.2 Un artista del color en la pantalla....................30
4.3 No hace falta Windows para perder el cursor............33
4.4 Un virtuoso de las teclas..............................36
4.5 La pantalla muestra sus atributos con otras ¢rdenes....41
4.6 Reduzca el trabajo pesado con otras herramientas.......43
4.7 M£sica, maestro........................................44
4.8 Ejecutando reclusos ANSI...............................46
/ i


Cap¡tulo 5
Uso del DEBUG para preguntas interactivas

5.1 El depurador, un tipo duro, que trata a los archivos como
series de bytes........................................48
5.2 ¨C¢mo desnudar a un programa?..........................48
5.3 Ensamblador para inmortales............................52


Cap¡tulo 6
C¢digos de control para impresora

6.1 El lenguaje de la impresora no es nada vulgar..........55
6.2 Los experimentos del doctor Escape.....................56
6.3 El c¢digo ASCII 12 es hembra...........................60


Cap¡tulo 7
M s all del DOS 5

7.1 La batalla de los titanes del DOS......................62
7.2 ¨MS-DOS 6? ­No es para tanto!..........................62
7.3 Novell DOS 7, la £ltima frontera.......................73
7.4 PC-DOS 6.3, recogiendo las migas.......................76
7.5 4DOS, todo lo que siempre quiso del DOS y gratis.......77
7.6 El legado del DOS......................................81


Cap¡tulo 8
Ejemplos, trucos y t‚cnicas para los archivos batch

8.1 La prueba de fuego.....................................82
8.2 Se¤or batch, ¨me da fuego, por favor?..................87
8.2.1 Desactivando el eco para todas las versiones del
DOS...................................................87
8.2.2 Borrar ficheros validando el mensaje de
confirmaci¢n..........................................88
8.2.3 Bucles concatenados.............................88
8.2.4 Comprobar la existencia de un directorio........89
8.2.5 Comprobando si un programa est en el directorio o
path actual...........................................89
8.2.6 A¤adir un nuevo directorio al path..............89
8.2.7 Comparando dos ficheros.........................89
8.2.8 Comprobando par metros con caracteres comodines.90
8.2.9 Protecci¢n para los ficheros bacth..............90
8.2.10 C¢mo obtener el primer car cter de un par metro91
8.2.11 Algo m s acerca de los par metros..............91
8.2.12 C¢mo redefinir algunas teclas..................92
8.2.13 Prompts de gran vistosidad.....................92
8.3 Una obra maestra.......................................94
8.4 A toda potencia con el DOS.............................97


Ap‚ndice...................................................99

/ ii


Introducci¢n
------------

Cuando comenc‚ a escribir el presente libro electr¢nico
sobre t‚cnicas de programaci¢n de archivos batch, nunca pens‚
que se convertir¡a en un informe de esta extensi¢n. La verdad
es que hay mucho que decir acerca de los archivos de proceso
por lotes. Lo cierto es que ide‚ estas p ginas como una serie
de art¡culos para una desaparecida publicaci¢n inform tica.
Pero a medida que fu¡ escribiendo p gina tras p gina, probando
ejemplos una y otra vez, y buscando informaci¢n indocumentada
sobre el DOS, pens‚ en la posibilidad de convertir el informe
en un libro que acompa¤ase a una serie de utilidades y
herramientas imprescindibles para el programador y usuario
avanzado de los archivos batch. As¡ nacieron las UTILIDADES+2,
una recopilaci¢n de utilidades capaces de convertir los
ficheros batch en un potente compilador que no precisa grandes
conocimientos de lenguajes de programaci¢n.

As¡ pues, junto al libro electr¢nico, encontrar los tan
anhelados ficheros: una selecci¢n de programas propios y de
dominio p£blico. El disquete dispone de un fichero de
instalaci¢n en el disco duro y un archivo de documentaci¢n
sobre los servicios que presta cada fichero.

Aprender es s¢lo cuesti¢n de tiempo. Lo digo porque soy
el primero en reconocer que no est ante un manual dedicado a
las ¢rdenes del DOS, apto para todo tipo de usuarios. He de
confesar que se requiere conocer el conjunto de ¢rdenes que el
DOS utiliza para comunicarse con el usuario, es decir, es
obligatorio poseer ciertos conocimientos pr cticos. De modo
que no se llame a enga¤o. Si acaso s¢lo se le exige un nivel
b sico; es cuesti¢n de hacer pruebas con su sistema operativo,
comprobando en la pr ctica qu‚ hace y qu‚ no hace cada
comando. ­As¡ empezamos todos!

Una vez est‚ desenvuelto en la pr ctica de los ficheros
batch, encontrar que este libro electr¢nico es un manual
imprescindible para hacer sus primeros pinitos. Dispondr de
todo lo necesario para crear programas con men£s, gr ficos,
entradas de datos y sonido. Y le aseguro que desarrollar un
programa de este tipo es muy sencillo, tanto que con media
docena de l¡neas de c¢digo ya tendr una aplicaci¢n. A menudo
le ocurrir que cuando muestre los resultados de su programa a
sus amigos, estos le mirar n con incredulidad diciendo que no
es posible que un fichero batch haga todo eso. Deje que otros
sigan programando en Clipper o C, si bien usted, con escasa
dedicaci¢n, habr desarrollado en un corto espacio de tiempo
lo mismo que esos otros han tardado en realizar varios d¡as.

Carlos Mesa
Barcelona, enero 1993 / octubre 1994



P gina 1


C¢mo utilizar este libro
------------------------

Este libro trata de los ficheros batcor
cien la potencia de los ficheros batch.































P gina 3

Cap¡tulo 1
ORGANIZACION Y PERSONALIZACION EN EL ARRANQUE DEL ORDENADOR
-----------------------------------------------------------




1.1 A prop¢sito de los archivos por lotes

Ser¡a del m ximo atrevimiento afirmar que los archivos de
procesamiento por lotes son un lenguaje de programaci¢n. Pero
con las herramientas adecuadas, un conocimiento exhaustivo del
DOS y un gran derroche de imaginaci¢n -aqu‚l que han perdido
los programamadores ante la facilidad de los nuevos
compiladores- se pueden construir extraordinarios programas,
impensables para quienes desconocen las posibilidades que
brindan las ¢rdenes del sistema operativo. El siguiente libro
electr¢nico -complemento de las UTILIDADES+2- aborda en
profundidad el estudio de tales ¢rdenes, ofreciendo
soluciones, trucos, herramientas, mostrando programas,
estudiando ensamblador, y explicando sencillas propuestas de
programaci¢n gr fica.


1.2 El primer fichero batch es el de arranque

Muchos usuarios personalizan su sistema cambiando el
indicador del DOS. Se entiende que, por defecto, el DOS
presenta el indicador de la unidad de disco con la que estemos
trabajando m s el s¡mbolo mayor (>).

El comando PROMPT dispone de una serie de combinaciones a
las que se denomina metacaracteres. Cada metacar cter va
precedido del signo de d¢lar ($). Al ejecutarse el PROMPT, se
presenta el texto que tiene asociado cada metacar cter o el
mensaje que nosotros le hayamos indicado.

Cuando se arranca el ordenador, el DOS busca en el
directorio ra¡z un archivo AUTOEXEC.BAT. Si existe, el DOS lo
lee, y ejecuta l¡nea por l¡nea los comandos contenidos, desde
el primero al £ltimo. Si el DOS no puede encontrar el fichero
AUTOEXEC.BAT en el directorio ra¡z, aparece un mensaje de
derechos de autor y ejecuta los comandos DATE y TIME.

Un ejemplo de archivo AUTOEXEC.BAT ser¡a el siguiente:

@ECHO OFF
PATH C:\DOS
PROMPT $P$G

Como puede verse, el PROMPT personaliza el sistema
haciendo aparecer el disco y directorio actuales m s el
s¡mbolo mayor. La mayor¡a de usuarios presenta en el indicador
del DOS el directorio en el que se encuentran, siendo ‚sta la
orden m s frecuente de un archivo AUTOEXEC.BAT. No obstante,
hay usuarios que se complican mucho m s el PROMPT e incluso
P gina 4

Digital Research, en su DR-DOS 6.0, agregaba un mensaje en el
PROMPT durante el proceso de instalaci¢n.

Resulta muy dif¡cil recordar todos los metacaracteres.
Hay que acudir al manual del DOS o a un libro; y, por cierto,
he de decir que no siempre est n contemplados todos ellos.
Para compensarlo, he aqu¡ la lista:

Metacar cter Texto asociado al mismo
$b |
$d Fecha del sistema
$e Car cter de escape (al que m s
adelante me referir‚ como parte b sica
de la programaci¢n gr fica y ANSI)
$g >
&h Car cter de retroceso
$l <
$n Disco actual
$p Disco y directorio actuales
$t Hora actual del sistema
$v Versi¢n actual del sistema
$_ Vuelta de carro, salto de l¡nea
$q =
$texto texto

Este £ltimo agrega el mensaje que nosotros deseemos
-hasta un m ximo de 127 caracteres, pues ‚ste es el m ximo
permitido en cada orden-, personalizando de ese modo nuestro
sistema.

Con todo, este comando sirve adem s para simular mensajes
con preguntas simples al usuario. Comprob‚moslo. Supongamos el
siguiente listado:

@ECHO OFF
PROMPT $P$G
IF "%1"=="" GOTO ERROR
IF NOT EXIST %1 GOTO ERROR
COPY %1 C:\BACKUP > NUL
ECHO Copiando el fichero %1 en C:\BACKUP
GOTO FIN
:ERROR
PROMPT No ha indicado el programa a copiar o ‚ste no existe
:FIN

Este fichero que se puede llamar GRABA.BAT, copia el
fichero introducido como par metro de GRABA en el directorio
C:\BACKUP. Lo primero que hace el programa es comprobar si se
ha introducido alg£n par metro y, luego, si existe el fichero
que se desea copiar. Si no es as¡, la orden GOTO env¡a el
control a la etiqueta :ERROR (esto es as¡, porque los archivos
de procesamiento por lotes s¢lo pueden ejecutar una orden
v lida en cada l¡nea). El PROMPT emite un mensaje que no
desaparecer de pantalla, por mucho que se intente, hasta que
no se introduzca el nombre del programa con el par metro
adecuado. Cuando esto sucede, el primer PROMPT restablece el
P gina 5

indicador del DOS, comprueba de nuevo el par metro, y copia el
fichero al directorio establecido. Con NUL redireccionamos el
mensaje del DOS de copiado a un dispositivo nulo, y ECHO hace
aparecer el nuestro (en castellano). El pr¢ximo GOTO env¡a la
secuencia a la etiqueta :FIN, salt ndose el PROMPT que
contiene el mensaje de error.

Un aviso. Se puede evitar el mensaje de salida de algunas
¢rdenes, redireccionando la salida a un dispositivo nulo, pero
existen algunas ¢rdenes que no se ejecutan, de este modo,
correctamente. Un ejemplo t¡pico es la orden DEL. Si no
encuentra el fichero a borrar, sigue apareciendo un mensaje;
en este caso, el de "Fichero no encontrado". Con un poco de
inventiva, se pueden soslayar estos problemas. Por ejemplo, el
caso anterior se soluciona con un IF EXIST FICHERO DEL
FICHERO.

Volviendo al tema; como puede verse, el PROMPT,
sabi‚ndolo usar, puede sernos de utilidad en algunas
circunstancias.

Pero ya que estamos con las ¢rdenes m s frecuentes de un
archivo AUTOEXEC.BAT, conviene hacer un inciso sobre uno de
los comandos de los que pocas veces nos servimos: PRINT.

Por defecto, siempre que queremos imprimir un fichero de
texto ASCII desde la l¡nea de comandos, escribimos PRINT
seguido del fichero de texto. El problema est en que,
dependiendo del tipo de impresora y del trabajo a realizar
habitualmente, obtenemos resultados desastrosos, como colapsos
y desajustes del papel por falta de tiempo entre la impresi¢n
de archivos. Con los distintos par metros que admite PRINT se
pueden indicar preferencias, como la impresora utilizada (PRN
para las impresoras en paralelo y COM1 para las impresoras
serie), el tama¤o de la cola de impresi¢n (hasta 32 archivos)
y varios indicadores que establecen el tiempo empleado en la
impresi¢n. Por consiguiente, es necesaria la tabla antes de
proseguir con m s aclaraciones.


[Par metros] [Funci¢n]
/b Especifica el tama¤o de la memoria de
impresi¢n.
/c Cancela los archde los nombres de los
comandos cuando el DOS los ejecuta como parte de un archivo
batch. Pero esto no es todo. En muchas ocasiones querr
mejorar la apariencia de la pantalla y dejar una l¡nea en
blanco entre los distintos mensajes que ha asociado a la orden
ECHO. Para dejar una l¡nea en blanco tiene que utilizar este
comando seguido de un punto (ECHO.). Si no emplea el DOS 5 (o
superior) y desea conseguir una l¡nea en blanco, tendr que
usar el car cter 255 del juego de caracteres extendido ASCII
(ALT-255, despu‚s de la orden ECHO). Por otro lado, la orden
ECHO admite par metros. Cuando aparece un car cter %n£mero que
identifica los par metros de los ficheros por lotes, se
sustituye por el valor del par metro al que corresponde. Para
que lo veamos m s claro, si el primer par metro de un fichero
por lotes es C:\NORTON, para la siguiente orden:

ECHO Usando el directorio %1

... obtendr¡amos el siguiente mensaje:

Usando el directorio C:\NORTON

Tenga en cuenta que los s¡mbolos especiales deben ir
encerrados entre comillas (ej. ECHO Utilice el car cter '>').


2.1.3 Orden REM

La orden REM sirve para introducir comentarios internos
dentro de un fichero por lotes. Suele identificar la cabecera
de un archivo batch con informaci¢n complementaria acerca del
programador y del programa. Y ya que se hace menci¢n del
principio de un fichero, vayamos al final de ‚ste. Podemos
interrumpir la ejecuci¢n de un archivo con la secuencia
P gina 8

Control-C (F6). Veamos un ejemplo:

REM Programa HORA.BAT
REM Por Pepe Botella
TIME
@ECHO ¨Es correcta la hora?
@ECHO Si no es as¡, salga del programa y c mbiela
^C
DATE

Cuando ejecute el programa, ‚ste le dar‚ el informe de la
hora actual. Si no es correcta, cuando aparezca el mensaje
"¨Terminar el procesamiento por lotes?", teclee S. Si la hora
es correcta, tecleando N, pasar la acci¢n al siguiente
comando, que le informar del d¡a actual.


2.1.4 Orden PAUSE

Evidentemente, existe una orden para detener
temporalmente la ejecuci¢n de un fichero por lotes hasta que
se pulsa una tecla: PAUSE. Si le asociamos un mensaje,
presentar ‚ste en pantalla. Pero cuidado, ECHO OFF suprime la
aparici¢n del mensaje de usuario que se haya asociado con
PAUSE. Para habilitar la aparici¢n de los mensajes debe
activar y desactivar el ECHO antes y despu‚s de PAUSE.

@ECHO OFF
VER
VOL
ECHO ON
PAUSE ¨Quiere seguir con el proceso?
ECHO OFF

Otro truco consiste en avisar al usuario cuando el
proceso haga una pausa, haciendo sonar un pitido en el altavoz
del ordenador. Para ello, simplemente debemos a¤adir la
secuencia Control-G. Tomaremos como referencia el ejemplo
anterior:

@ECHO OFF
VER
VOL
ECHO ON
PAUSE ^G ^G ¨Quiere seguir con el proceso?
ECHO OFF


2.1.5 El s¡mbolo % identifica a un par metro

El s¡mbolo %n£mero sirve para identificar dentro de un
fichero por lotes, los distintos par metros que recibe del
archivo batch al ejecutarse. La constante NUMERO ha de ser un
n£mero decimal entero comprendido entre 0 y 9 (ambos
incluidos). %1 ser¡a el primer par metro, %2 el segundo
par metro, %3 el tercero..., mientras que %0 ser¡a el nombre
P gina 9

(con o sin trayectoria) del archivo batch.

Si crea un archivo por lotes que haga uso de tres
par metros, piense que algunas ¢rdenes no se pueden usar sin
par metros. Por ejemplo, si crea un programa que haga tres
TYPE de los par metros asociados al fichero batch y luego s¢lo
recibe dos, el programa generar un error, pues no se puede
utilizar la orden TYPE sin par metros.

Adem s del par metro %NUMERO, el DOS admite par metros
con nombre, entendidos como variables de entorno para archivos
batch. Cuando el sistema encuentra un par metro con nombre
-encerrado entre dos signos de tanto por ciento: %NOMBRE%-,
explora el entorno buscando una variable con ese mismo nombre.

El comando del DOS, SET, asigna datos a la variable de
entorno. Pongamos un caso: si queremos asignar un valor a la
variable %FILE%, como por ejemplo, el contenido del
AUTOEXEC.BAT, debemos escribir lo siguiente: SET
FILE=AUTOEXEC.BAT. Si queremos comprobar el uso de las
variables de entorno, simplemente escribiremos SET sin
argumentos. El DOS presentar la lista de variables de entorno
en ese momento:

C>SET
COMSPEC=C:\DOS\COMMAND.COM
PATH=C:\DOS
FILE=AUTOEXEC.BAT

Por el contrario, para eliminar el valor de una variable
de entorno, basta con emplear el comando SET de esta forma:

SET FILE=

Cuando el DOS encuentra una variable de entorno, recorre
el entorno en busca de ‚sta. Si no existe, asigna a %NOMBRE%
una cadena vac¡a. En este caso, el sistema operativo crea el
archivo en el directorio actual. Si existe, desaparece el
valor anterior y permanece el nuevo que se le pueda dar.

Con todo lo aprendido, veamos un ejemplo.

@ECHO OFF
REM EXTRAE.BAT
SET EXTRAE=
FOR %%A IN (/%1) DO IF "%EXTRAE%"=="" SET EXTRAE=%%A
ECHO %EXTRAE%

El programa EXTRAE.BAT, como su propio nombre indica,
extrae la primera letra de cualquier palabra que le hayamos
pasado como par metro al programa, visualizando el resultado
en la pantalla. Para adentrarnos en su explicaci¢n, si no se
tiene muy claro c¢mo funcionan las ¢rdenes IF y FOR, habr de
saltarse el siguiente p rrafo, continuar con la lectura y
volver luego a estas explicaciones cuando los conceptos hayan
sido esclarecidos.
P gina 10


La primera l¡nea despu‚s de ECHO borra la variable de
entorno si la hubiese. F¡jese en la barra espaciadora del
conjunto entre par‚ntesis. No es ning£n separador; se trata de
una caracter¡stica no documentada del MS-DOS. Con ella se
logra que en la primera pasada del FOR, la variable %%A tome
el valor de la primera letra pasada como par metro, mientras
que en la segunda, se tome el valor del resto de las letras
del par metro. Es decir, la barra espaciadora separa el primer
car cter de una cadena del resto. En nuestro ejemplo, durante
la primera pasada, SET colocar la primera letra en la
variable de entorno, mientras que en la segunda -y como se ha
mencionado-, desaparece el valor anterior y permanece el
nuevo, que ser el resto de la cadena a visualizar con ECHO.


2.1.6 Orden CALL

Cuando se ejecuta un segundo archivo batch desde un
primer archivo batch, se debe llamar a este segundo con una
orden de llamada -COMMAND o CALL-. De lo contrario, el DOS
deja de ejecutar los comandos del primer archivo batch cuando
se ha completado la ejecuci¢n del primero.

Si se emplea DOS 3.3 o posterior se debe utilizar el
comando CALL -al que se le pueden a¤adir par metros desp£es
del archivo batch-.

@ECHO OFF
VER
VOL
CALL FORMATEA %1

FORMATEA.BAT es un archivna 12

archivo no existe contin£a la ejecuci¢n del archivo batch con
el siguiente comando. T‚ngase en cuenta que el DOS s¢lo admite
una orden v lida para cada l¡nea de un fichero por lotes. Si
quiere ejecutar dos o m s ¢rdenes, se han de agrupar ‚stas
detr s de una etiqueta y utilizar una orden 'GOTO :etiqueta'
detr s de la condici¢n. No obstante, si DOSKEY (programa de
MS-DOS 5.0 y superior) fue cargado (en el AUTOEXEC.BAT), puede
introducir varias ¢rdenes separ ndolas por el car cter ' '
(CTRL-T). El par metro NOT, si se coloca, invierte la
condici¢n.

La condici¢n 'IF [NOT] cadena1==cadena2 orden' comprueba
si dos cadenas de caracteres son id‚nticas; caso de que lo
sean, ejecuta el comando del DOS siguiente. La comparaci¢n de
las dos cadenas de caracteres se hace letra a letra. Las
cadenas han de coincidir exactamente, incluyendo may£sculas y
min£sculas (no importan los espacios en blanco).

Si no se especifican dos cadenas de caracteres, en la
l¡nea de comandos aparece un mensaje de error. Este error es
muy com£n cuando se comprueba un par metro del archivo batch:

IF %1==MES GOTO BALANCE

Si no se especifica un valor para el par metro %1, la
condici¢n comparar¡a una £nica cadena, pues %1 desaparece,
resultando un error de sintaxis. Para solucionarlo, basta con
colocar entre comillas las cadenas de caracteres:

IF "%1"=="MES" GOTO BALANCE

Por esta misma regla de tres, podemos decir que para
comprobar si se ha introducido un par metro o no, basta con
escribir en el fichero por lotes lo siguiente:

IF "%1"=="" orden

La condici¢n 'IF [NOT] ERRORLEVEL n£mero_c¢digo orden'
examina la situaci¢n de terminaci¢n de los comandos y contin£a
con el proceso de la condici¢n de acuerdo con los valores
obtenidos. La situaci¢n de terminaci¢n de algunos comandos se
basa en los c¢digos de salida generados por los comandos del
DOS. Normalmente, dichos c¢digos sirven para describir la
causa del error que ha provocado la finalizaci¢n del programa.
No obstante, s¢lo hay diez ¢rdenes est ndar del DOS que
devuelven c¢digos de salida para ser procesados con la orden
IF ERRORLEVEL.

Aqu¡ esta la tabla que resume los valores de situaci¢n de
salida y sus significados:

Comando Valor Significado

BACKUP 0 Realizada copia de seguridad
BACKUP 1 No existen archivos para copiar
BACKUP 2 Conflicto de ficheros compartidos
P gina 13

BACKUP 3 Abortado por el usuario con CTRL-C
BACKUP 4 Error fatal. Copia de seguridad incompleta
DISKCOMP 0 Comparaci¢n correcta
DISKCOMP 1 Comparaci¢n incorrecta (discos distintos)
DISKCOMP 2 Abortado por el usuario con CTRL-C
DISKCOMP 3 Error de lectura o escritura
DISKCOMP 4 Memoria insuficiente, unidad no v lida
DISKCOPY 0 Copia realizada con ‚xito
DISKCOPY 1 Error de lectura o escritura
DISKCOPY 2 Abortado por el usuario con CTRL-C
DISKCOPY 3 Imposible leer disco fuente o escribir
DISKCOPY 4 Memoria insuficiente, unidad no v lida
FORMAT 0 Formateo con ‚xito
FORMAT 3 Abortado por el usuario con CTRL-C
FORMAT 4 Error fatal. Operaci¢n incompleta
FORMAT 5 Respuesta N a ¨Formatear otro disco(S/N)?
GRAFTABL 0 Tabla de caracteres cargada correctamente
GRAFTABL 1 Se sustituy¢ la tabla previamente cargada
GRAFTABL 2 Error de fichero
GRAFTABL 3 Par metro incorrecto
GRAFTABL 4 Versi¢n del DOS incorrecta
REPLACE 0 Actualizaci¢n de fichero realizada
REPLACE 2 Ficheros origen no encontrados
REPLACE 3 Trayectoria no encontrada
REPLACE 5 Archivo destino s¢lo de lectura
REPLACE 8 Memoria insuficiente
REPLACE 11 Comando incorrecto
REPLACE 15 Unidad de disco no v lida
REPLACE 22 Versi¢n del DOS incorrecta
(no funciona para MS-DOS)
RESTORE 0 Ficheros restaurados correctamente
RESTORE 1 Ficheros a restaurar no encontrados
RESTORE 2 Conflicto debido a archivo compartido
(no funciona para MS-DOS)
RESTORE 3 Abortado por el usuario con CTRL-C
RESTORE 4 Error fatal. RESTORE incompleto

Pero es que el MS-DOS 5 proporciona, adem s, nuevos
c¢digos de salida para algunos comandos:

Comando Valor Significado

KEYB 0 Fichero de teclado cargado correctamente
KEYB 1 C¢digo de teclado incorrecto
KEYB 2 KEYBOARD.SYS no encontrado o incorrecto
KEYB 3 No se puede crear la tabla
KEYB 4 Error al comunicarse con dispositivo CON
KEYB 5 La p gina de c¢digos no ha sido preparada
KEYB 7 Versi¢n del DOS incorrecta
KEYB 8 Memoria insuficiente
SETVER 0 SETVER ejecutado correctamente
SETVER 1 Par metro no v lido
SETVER 2 Nombre de archivo incorrecto
SETVER 3 Memoria insuficiente
SETVER 4 N£mero de versi¢n incorrecto
SETVER 5 Entrada no hallada en la lista de SETVER
P gina 14

SETVER 6 No se encuentra el archivo SETVER.EXE
SETVER 7 Unidad incorrecta
SETVER 8 Demasiados par metros
SETVER 9 Falta alg£n par metro
SETVER 10 Error al leer la tabla de SETVER.EXE
SETVER 11 La tabla de SETVER es incorrecta
SETVER 12 SETVER no soporta una lista de programas
SETVER 13 Espacio insuficiente en la lista
SETVER 14 Error de escritura
XCOPY 0 Copia realizada correctamente
XCOPY 1 No hay ficheros para copiar
XCOPY 2 Abortado por el usuario con CTRL-C
XCOPY 4 Error de inicializaci¢n
XCOPY 5 Error al escribir los ficheros (INT 24)

Mientras que MS-DOS 6 utiliza los siguientes c¢digos de
error.

Comando Valor Significado

CHOICE 0 Interrumpido por el usuario con CTRL-C.
CHOICE 1 Aceptaci¢n del primer car cter dado
despu‚s del par metro C:teclas
CHOICE 2 Aceptaci¢n del segundo car cter dado
despu‚s del par metro C:teclas, y as¡
sucesivamente
CHOICE 255 Error general
DEFRAG 0 Desfragmentaci¢n correcta
DEFRAG 1 Error interno de DEFRAG
DEFRAG 2 Disco lleno
DEFRAG 3 Desfragmentaci¢n abortada por usuario
DEFRAG 4 Error general
DEFRAG 5 Error de lectura en cluster
DEFRAG 6 Error de escritura en cluster
DEFRAG 7 Error al modificar la FAT
DEFRAG 8 Error de memoria
DEFRAG 9 No hay memoria suficiente
DELTREE 0 Eliminaci¢n de ficheros correcta
EMM386 EMMXXXX0 Soporte de memoria expandida activado
(este c¢digo constituye una excepci¢n, al
tratarse en realidad de una cadena)

Examinemos unos ejemplos de utilidad. El primero,
DESARC.BAT desencripta los ficheros con extensi¢n .LZH (del
popular programa compactador de dominio p£blico).

FOR %%A IN (*.LZH) DO LHA U %%A

El segundo, ORDENA.BAT, emplea la orden IF EXIST para
borrar un archivo donde se guardan los datos de los ficheros
con extensi¢n que especifiquemos como par metro de ORDENA.BAT.
Despu‚s, el programa usa ECHO para direccionar y adicionar con
'>>' la lista de pantalla al archivo ORDENA.DAT. Una vez
creado el archivo, SORT ordena su contenido, presentando los
nombres en pantalla. Por £ltimo, se borra el archivo .DAT que
ya no se necesita.

@ECHO OFF
IF EXIST ORDENA.DAT DEL ORDENA.DAT
FOR %%A IN (%1) DO ECHO %%A >> ORDENA.DAT
SORT < ORDENA.DAT
DEL ORDENA.DAT

***********************************************
* > Redirecci¢n de salida para un archivo *
***********************************************
* >> Adici¢n de un fichero *
***********************************************
P gina 18

* < Redirecci¢n de entrada para un archivo *
***********************************************

El tercero, SALIR.BAT, sale de un supuesto men£ creado
por un fichero por lotes y presenta un mensaje por pantalla.
En cualquier caso, el comando FOR se ejecuta tantas veces como
elementos hay en conjunto.

@ECHO OFF
CLS
FOR %%A IN (0 1 2 3 4 5 6 7 8 9 10 11) DO ECHO.
ECHO GRACIAS POR TRABAJAR CON NUESTRO PROGRAMA
FOR %%A IN (0 1 2 3 4 5 6 7 8 9 10) DO ECHO.

Como puede verse a trav‚s de estos ejemplos, el comando
FOR a¤ade una enorme flexibilidad a los archivos batch, pero
lo que muchos no saben es que tambi‚n puede ejecutarse desde
la l¡nea de comandos, sin necesidad de crear una l¡nea para un
fichero por lotes. En este caso, las variables han de
escribirse con un s¢lo car cter '%', es decir %LETRA.




































P gina 19

Cap¡tulo 3
NUEVOS COMANDOS INTERACTIVOS PARA LOS FICHEROS POR LOTES
--------------------------------------------------------




3.1 Norton, el rey Midas de la inform tica, proporciona un
nuevo comando

Podemos extraer como una primera conclusi¢n que: los
archivos batch son herramientas muy potentes para mejorar la
eficiencia del trabajo con DOS. Desgraciadamente, el DOS no
proporciona los comandos necesarios para trabajar en tiempo
real, bas ndose en la entrada desde el teclado. Esta omisi¢n
limita seriamente las posibilidades de los ficheros por lotes.
No obstante, podemos hacer uso de programas externos, como
Ampliar Batch, de las Utilidades Norton, donde se a¤aden
nuevas posibilidades. A pesar de esto, como se ver m s
adelante, el DOS guarda algunos trucos para realizar algunos
de los trabajos que se esperan de estas utilidades.

El comando AB (Ampliar Batch) de las Utilidades Norton
(BA en la versi¢n americana) obtiene nuevos modos de
funcionamiento para los ficheros por lotes. Dado que estas
utilidades son muy conocidas por los usuarios, conviene
estudiar AB con detalle, a modo de ejemplo de expansi¢n con
otros comandos externos del DOS.

AB hace uso de subcomandos y par metros para estos
subcomandos. As¡, el subcomando AB ?, ofrece pantallas de
ayuda con texto acerca del modo de trabajo de Ampliar Batch.

Los subcomandos de AB son: PREGUNTA, SONIDO, RECUADRO,
CLS, PAUSA, GOTO, IMPCAR, FILACOL, VENTANA y AP. Todos estos
subcomandos manejan, a su vez, una serie de par metros que
ahora conoceremos.

Cabe recordar que para poder utilizar el comando AB desde
cualquier directorio, aparte de la instalaci¢n de las
Utilidades Norton, se ha de a¤adir el nombre del directorio en
el que se encuentran las utilidades a la instrucci¢n PATH del
AUTOEXEC.BAT.

Por cierto que si queremos a¤adir un PATH al archivo
AUTOEXEC.BAT desde un fichero por lotes de instalaci¢n, s¢lo
hay que combinar un fichero con otro. Por ejemplo, el programa
INSTALA.BAT a¤ade una l¡nea al AUTOEXEC.BAT.

@ECHO OFF
CLS
REM Programa INSTALA.BAT
ECHO ¨INSTALA [unidad origen:] [unidad destino:]?
ECHO Si no es correcto pulse CTRL-C
PAUSE > NUL
%2
P gina 20

CD %2\
COPY %2\AUTOEXEC.BAT+%1\AYUDA %2\AUTOEXEC.BAT
MD INSTALL
CD INSTALL
COPY %1\*.*

El fichero AYUDA contendr¡a lo siguiente:

PATH=C:\NORTON

El programa INSTALA.BAT env¡a una pregunta acerca de los
par metros dados a INSTALA. El fichero por lotes detiene el
proceso y direcciona el mensaje de salida de la orden PAUSE a
un dispositivo nulo. El par metro %2 obliga al programa a
activar esa unidad, mientras que CHDIR (CD) cambia el
directorio activo al directorio ra¡z. La orden COPY utilizada
de esta forma, combina el fichero de texto AYUDA -el cual
contiene una l¡nea PATH- con el AUTOEXEC.BAT, a¤adiendo esta
£ltima l¡nea al final. Las otras tres ¢rdenes abren un nuevo
directorio y copian el programa que requiere de este PATH al
directorio especificado.

1. El subcomando PREGUNTA hace una pregunta y espera una
respuesta. Cuando se llama al comando PREGUNTA aparece el
texto de la pregunta con varias opciones. Se responde a
PREGUNTA pulsando una tecla de la lista de contestaciones.
Despu‚s de seleccionar una de las teclas de la lista, PREGUNTA
devuelve la informaci¢n sobre la tecla elegida con un
ERRORLEVEL. As¡, la primera opci¢n corresponder¡a a ERRORLEVEL
1, la segunda a ERRORLEVEL 2, la tercera a ERRORLEVEL 3, etc.
El programa batch puede bifurcarse a diferentes etiquetas,
seg£n el ERRORLEVEL indicado.

AB PREGUNTA "Ejecutar (W)ordPerfect, (d)BASE o (S)alir", wds
IF ERRORLEVEL 3 GOTO SALIR
IF ERRORLEVEL 2 GOTO DBASE
IF ERRORLEVEL 1 GOTO WP
:WP
CD\WP51
WP
GOTO SALIR
:DBASE
CD\DBASE
DBASE
GOTO SALIR
:SALIR

La sintaxis de este subcomando es la siguiente:

AB PREGUNTA MENSAJE [,TECLAS] [DEFECTO=TECLA] [ESPERA=N]
[AJUSTE=N] [COLOR]

Donde TECLAS corresponder¡a a las iniciales de la lista
de opciones, DEFECTO=TECLA a la tecla de respuesta, ESPERA=N
al tiempo en segundos para esperar antes de tomar como
respuesta la tecla, AJUSTE=N al ajuste del valor devuelto por
P gina 21

ERRORLEVEL (hasta un m ximo de 254), y COLOR al par metro que
colorea el texto del mensaje.

La sintaxis de todas las ¢rdenes se encuentran
convenientemente detalladas en la gu¡a del usuario de las
Utilidades Norton. Las explicaciones aqu¡ referidas han de
tomarse como ejemplo de las posibilidades que abren otros
comandos externos del DOS.

Existe otro m‚todo para formular preguntas al usuado el controlador de
dispositivo. Para remediarlo, puede arrancar un controlador
ANSI.COM. El ANSI ejecutable no es tan dif¡cil de encontrar.
Una primera versi¢n producida por Jordi Mas y este servidor ha
sido incluida en la recopilaci¢n de utilidades adjunta al
libro.

Se pueden emplear distintos colores, como un fondo de
color, o atributos como v¡deo inverso o texto parpadeante con
este subcomando. Tambi‚n se puede utilizar AP junto con SONIDO
para producir efectos interesantes. Los resultados obtenidos
var¡an en funci¢n de la pantalla gr fica que tengamos; habr
que experimentar para comprobar las mejores combinaciones. Los
programadores de ficheros por lotes habr n de probar en
distintos ordenadores antes de decidirse por incluir una
pantalla as¡ creada en su programa.
P gina 23


La sintaxis del subcomando es la siguiente:

AB AP [INTENSIDAD] [PRIMER-PLANO] [EN FONDO] [/N] [/CLS]

Los valores para intensidad son Brillo, Negrita o
Parpadeo. Los valores de primer-plano y fondo son Blanco,
Azul, Negro, Rojo, Verde, Magenta, Cyan y Amarillo. Todas
estas opciones pueden abreviarse con las tres primeras letras.
Puede prescindirse de todas las opciones y escribirse unos
valores generales, que son: Normal, Inverso y Subrayado.

El par metro /N no var¡a el color del borde, mientras que
el par metro /CLS borra la pantalla despu‚s de cambiar los
atributos de color.

Para las versiones americanas de las Utilidades Norton,
consulte el manual de Symantec donde encontrar la
correspondencia de los subcomandos en castellano con los
similares en lengua inglesa.


3.2 El an¢nino LETRA.COM

Como se est viendo, la capacidad de funcionamiento en
modo interactivo de los ficheros batch, es bastante potente,
desmintiendo las palabras de aquellos que, sin entender
demasiado, pretenden desacreditar el potencial de los ficheros
por lotes. A ello, pueden achacar que se trata de programas
donde, una vez comenzado su proceso, es imposible interrumpir
su funcionamiento. Bueno, ya se ha visto que esto no es as¡.
Comandos como AB PREGUNTA de las Utilidades Norton requiere de
informaci¢n externa, as¡ como hay trucos con el DOS 5 y 6 o el
DEBUG que permiten esto mismo. Con todo, existe un programa de
dominio p£blico, incluido en las UTILIDADES+2, que utiliza el
concepto de ERRORLEVEL para crear ficheros interactivos. El
autor de este programa es desconocido. Se trata de LETRA.COM.

La £nica informaci¢n disponible sobre este programa, es
el ejemplo que viene a continuaci¢n.

1 @ECHO OFF
2 ECHO PULSE (A-C) PARA VER LOS MENSAJES O 'S' PARA SALIR
3 LETRA ABCS
4 REM Los argumentos de LETRA (por ejemplo 'ABCS' deben darse
5 REM en may£sculas.
6 REM N¢tese que el usuario puede introducir tanto may£sculas
7 REM como min£sculas en su respuesta.
8 IF ERRORLEVEL 19 GOTO FIN
9 IF ERRORLEVEL 3 GOTO MENSAJEC
10 IF ERRORLEVEL 2 GOTO MENSAJEB
11 IF ERRORLEVEL 1 GOTO MENSAJEA
12 REM Obs‚rvese que ERRORLEVEL se define de acuerdo con el
valor
13 REM ASCII del car cter en may£sculas menos 64 (por ejemplo
14 REM 'A'= (65-64) = 1)
P gina 24

15 :MENSAJEA
16 ECHO ^G
17 ECHO Se ha pulsado la tecla A
18 GOTO FIN
19 :MENSAJEB
20 ECHO ^G
21 ECHO Se ha pulsado la tecla B
22 GOTO FIN
23 :MENSAJEC
24 ECHO ^G
25 ECHO Se ha pulsado la tecla C
26 :FIN

F¡jese que la l¡nea "LETRA ABCS" define las respuestas
permitidas. Cualquier intento de teclear otra letra congela el
fichero hasta obtener la respuesta definida. El esquema de
ERRORLEVEL consiste en restar 64 del valor ASCII de cada
respuesta permitida. Como se cit¢ en el apartado
correspondiente, ERRORLEVEL analiza el n£mero devuelto mayor,
desde el m s alto hasta el m s bajo. Combinando los errores
devueltos por LETRA.COM con las bifurcaciones, se pueden
desarrollar ficheros interactivos. En el ejemplo, cuando se
pulsa la tecla correcta -que bien pudiera emitirse un mensaje
con ECHO para dar a entender cu les son las opciones de
respuesta- se transfiere el proceso.

En otro ejemplo imaginario, una respuesta S devolver¡a 19
como ERRORLEVEL (83-64) y una respuesta N un ERRORLEVEL 14
(78-64). Piense en sus aplicaciones. N¢tese, por £ltimo, que
la resta se hace del valor ASCII de las may£sculas.


3.3 El otro DOS

El sistema operativo DR DOS 6, de Digital Research,
utilizaba dos ¢rdenes en los ficheros por lotes, no
contempladas en MS-DOS. Puede valerse de ellas si dispone del
sistema operativo o copi ndolas directamente al sistema
operativo de Microsoft. Las ¢rdenes son: GOSUB y SWITCH.

GOSUB es similar a GOTO. Ambos se utilizan para
transferir el control de la ejecuci¢n. La £nica diferencia
estriba en que GOSUB debe incluir el comando RETURN para que
el procesamiento contin£e en la l¡nea que sigue a GOSUB. Es
similar en cuanto a caracter¡sticas a la orden de Basic.
Veamos un ejemplo para a¤adir al AUTOEXEC.BAT:

IF EXIST *.BAK GOSUB BORRABAK
GOTO SIGUE
:BORRABAK
DEL *.BAK
RETURN
:SIGUE

El archivo AUTOEXEC.BAT comprueba en el directorio ra¡z
si existe alguna copia de seguridad. Caso de que encontrase
P gina 25

alguna, el procesamiento saltar¡a a la etiqueta :BORRABAK y
borrar¡a estas copias de seguridad. El comando RETURN
devolver¡a el control a la l¡nea siguiente que pasar¡a a la
etiqueta :SIGUE, donde se continuar¡an las ¢rdenes que uno
desee del AUTOEXEC.

SWITCH es muy parecido a GOSUB, salvo que SWITCH permite
conmutar entre distintas reas de trabajo del fichero por
lotes. La orden es similar en cuanto a caracter¡sticas a la de
QBASIC/ QuickBASIC y a la de cualquier compilador de C. Veamos
c¢mo act£a a trav‚s de un ejemplo:

ECHO 1 = WORDPERFECT
ECHO 2 = dBASE
ECHO 3 = LOTUS 1-2-3
SWITCH 1, 2, 3
GOTO FIN
:1
CD\WP51
WP
RETURN
:2
CD\DBASE
DBASE
RETURN
:3
CD\LOTUS
LOTUS
RETURN
:FIN

Como puede ver, al principio del fichero se presentan
tres opciones -que pueden ser tantas como uno quiera, hasta un
total de nueve etiquetas-, visualizadas en pantalla merced al
comando ECHO. SWITCH espera a que seleccione entre 1, 2 ¢ 3.
Una vez realizada la elecci¢n, SWITCH le lleva a la etiqueta
adecuada, se ejecutan los comandos de ‚sta y RETURN devuelve
el control de la ejecuci¢n a la sentencia que sigue a SWITCH,
en este caso un GOTO a la etiqueta FIN. Tambi‚n se podr¡a
haber enviado el control a una etiqueta al principio del
programa, con lo que ‚ste entrar¡a en un bucle infinito que
s¢lo permitir¡a la ejecuci¢n de los programas indicados en las
etiquetas.

Despu‚s de DR DOS 6, Novell absorbi¢ el sistema operativo
de Digital Research y lanz¢ Novell DOS 7, que compatibiliza
las mismas ¢rdenes interactivas de su antecesor. Si quiere
saber m s sobre ‚ste y otros sistemas operativos de reciente
aparici¢n, rem¡tasna de las posiciones de un array. El
programa copia la cadena pasada como argumento o par metro al
fichero que se mencion¢ como primer par metro. 'strcat'
concatena la cadena batch, d ndole esta extensi¢n al nombre
del fichero. Se crea un fichero y el bucle 'for' escribe cada
par metro en una l¡nea del fichero batch, con la longitud
precisa de cada cadena ('strlen'). Despu‚s de pasados todos
los par metros, el programa cierra el fichero.

Los que utilicen otro compilador, como Borland C++,
habr n de obviar los mensajes fat¡dicos que se¤alan el tipo de
dato del valor devuelto por la funci¢n. El programa se ejecuta
correctamente, aunque con unas cuantas correcciones y
variaciones se podr¡a mejorar much¡simo. Lo dejo por cuenta
del lector y usuario avanzado con conocimientos de C.
























P gina 28

Cap¡tulo 4
PROGRAMACION CON ANSI.SYS Y SECUENCIAS DE ESCAPE
------------------------------------------------




4.1 ANSI.SYS es un controlador de dispositivo

ANSI.SYS es un controlador de dispositivo formado por un
conjunto de rutinas de programaci¢n, que se encargan de
supervisar la entrada desde el teclado y la salida por la
pantalla. Cada vez que se transfieren datos por esta entrada o
salida est ndar, las rutinas del controlador de dispositivo
analizan los datos buscando la presencia de una secuencia de
caracteres especial identificadora de las ¢rdenes ANSI. Hay
que tener en cuenta que todos los caracteres de entrada y
salida son comprobados por ANSI.SYS. As¡, cuando encuentra
esta secuencia de caracteres especial, se ejecutar la orden
indicada en dicha secuencia, siempre y cuando tengamos cargado
el controlador de dispositivo en la memoria. Para resumirlo
brevemente, ANSI.SYS es un filtro superpuesto a la entrada y
salida de teclado y pantalla que solamente intervendr cuando
aparezca una secuencia de caracteres determinada que ‚ste
pueda reconocer. Si no existe esta secuencia, el controlador
filtra los caracteres y cede el control a otras rutinas que
gestionan el teclado y la pantalla habitual.

Como se puede ver, ANSI.SYS es un programa que incrementa
la capacidad del teclado y y la pantalla del ordenador. La
extensi¢n .SYS quiere decir que el archivo pertenece al
sistema operativo. Para cargarlo en memoria, debe insertarse
una l¡nea en el CONFIG.SYS, que es el archivo que emplea el
DOS cada vez que el ordenador se arranca para configurar la
memoria. La l¡nea debe ser:

DEVICE=ANSI.SYS

O en todo caso, con la v¡a completa de acceso si el DOS
se encuentra en un PATH diferente del ra¡z. Tambi‚n es posible
cargar el controlador de dispositivo en la memoria superior
(en un bloque UMB), ahorrando memoria convencional, con la
orden DEVICEHIGH=.

Si a la l¡nea ANSI.SYS le a¤adimos el par metro /K, se
fuerza a que el controlador use las funciones del teclado
normal (84 teclas), aunque el sistema tenga presente un
teclado ampliado (101 teclas). El par metro /K proporciona
compatibilidad con los programas que no soportan las funciones
del teclado ampliado. Si se usa este par metro debe
introducirse adem s en el CONFIG.SYS la orden SWITCHES = /K.
El par metro /X a¤adido a la l¡nea ANSI.SYS permite que las
teclas repetidas de los teclados ampliados puedan ser
reasignadas independientemente (este tema lo veremos despu‚s
con m s detalle).

P gina 29

Una vez activado ANSI.SYS se puede realizar cualquier
operaci¢n que tenga que ver con la pantalla y el teclado, como
mover el cursor, borrar la pantalla, salvar y restaurar la
posici¢n del cursor, activar varios modos de v¡deo, modificar
los colores, emitir un parpadeo y hasta remapear todo el
teclado asignando a cada tecla un valor diferente. He aqu¡ la
importancia del controlador de dispositivo, bien usado, para
la programaci¢n de los ficheros por lotes.

Recuerde que todas estas ventajas s¢lo ser n v lidas,
siempre y cuando se tenga instalado ANSI.SYS en el CONFIG.SYS.
As¡ que ahora viene una cuesti¢n de suma importancia. Como
programador de ficheros batch ¨cu ndo estoy seguro de que el
usuario al que le haya vendido mi programa tenga instalado el
controlador de dispositivo? La respuesta es ­que usted no lo
sabe! Pero todo tiene soluci¢n. Mi amigo Jordi Mas y un
servidor creamos un programa llamado EMUANSI.COM que ser¡a el
primero en ejecutarse en su fichero por lotes antes de hacer
uso de las secuencias de escape. Si esto es as¡, no debe
preocuparle que est‚ o no instalado el controlador de
dispositivo original. Esta herramienta se encuentra en las
UTILIDADES+2.

Las ¢rdenes de ANSI.SYS se identifican mediante las
llamadas secuencias de caracteres (secuencias de escape).
Estas secuencias de caracteres se env¡an mediante dos m‚todos:
empleando el comando ECHO o el comando PROMPT. La orden TYPE
seguido de un fichero de texto tambi‚n acepta ¢rdenes ANSI
para desarrollos m s complejos.

Una secuencia de escape es una combinaci¢n £nica de
caracteres que empieza con el car cter de escape ASCII 27. El
car cter de escape no se introduce escribiendo las letra E, S
y C, sino introduciendo el c¢digo ASCII 27 que aparece en
pantalla simbolizado por una flecha a la izquierda ( ). Hace
falta un segundo car cter, un simple corchete ([), cuyo valor
es ASCII 91.


4.2 Un artista del color en la pantalla

Para comenzar viendo el funcionamiento de ANSI.SYS,
establezcamos los colores de una pantalla. La secuencia de
escape que establece los colores es

ESC[colorm

donde ESC es el car cter de escape ASCII y color, un
valor de los siguientes:

[Valor] [Color]

0 Letras blancas sobre fondo negro.
1 Alta intensidad o negrita. Azul para EGA color.
2 Verde para EGA color.
3 Cian para EGA color.
P gina 30

4 Subrayado (monitor monocromo). Azul sobre negro
(monitor color). Rojo para EGA color.
5 Parpadeo de las letras. Magenta para EGA color.
6 Texto parpadeante (r pido). Marr¢n para EGA color.
7 V¡deo inverso. Blanco para EGA color.
8 Invisible (negro sobre negro). Gris para EGA color.
9 Azul claro para EGA color. Subrayado en alta
intensidad para EGA monocromo.
10 Verde claro para EGA color. Alta intensidad para EGA
monocromo.
11 Cian claro para EGA color. Alta intensidad para EGA
monocromo.
12 Rojo claro para EGA color. Alta intensidad para EGA
monocromo.
13 Magenta (granate) claro para EGA color. Alta
intensidad para EGA monocromo.
14 Amarillo para EGA color. Alta intensidad para EGA
monocromo.
15 Blanco en alta intensidad para EGA color. Alta
intensidad para EGA monocromo.
16 Negro parpadeante para EGA color. Negro parpadeante,
si el fondo es 7, para EGA monocromo.
17 0;133 0;135 0;137 0;139
F12 0;134 0;136 0;138 0;140
Ins * 224;82 224;82 224;146 224;162
Inicio * 224;71 224;71 224;119 224;151
ReP g * 224;73 224;73 224;132 224;153
Supr * 224;83 224;83 224;147 224;163
Fin * 224;79 224;79 224;117 224;159
AvP g * 224;81 224;81 224;118 224;161
Cursor arriba* 224;72 224;72 224;141 224;152
Cursor izqda.* 224;75 224;75 224;115 224;155
Cursor abajo * 224;80 224;80 224;145 224;160
Cursor dcha. * 224;77 224;77 224;116 224;157
Inicio 0;71 55 0;119 -
Cursor arriba 0;72 56 0;141 -
ReP g 0;73 57 0;132 -
Cursor izqda. 0;75 52 0;115 -
Cursor dcha. 0;77 54 0;116 -
Fin 0;79 49 0;117 -
Cursor abajo 0;80 50 0;145 -
AvP g 0;81 51 0;118 -
Ins 0;82 48 0;146 -
Supr 0;83 46 0;147 -
ImprPant - - 0;114 -
A 97 65 1 0;30
B 98 66 2 0;48
C 99 67 3 0;46
D 100 68 4 0;32
E 101 69 5 0;18
F 102 70 6 0;33
G 103 71 7 0;34
H 104 72 8 0;35
I 105 73 9 0;23
J 106 74 10 0;36
K 107 75 11 0;37
L 108 76 12 0;38
M 109 77 13 0;50
N 110 78 14 0;49
O 111 79 15 0;24
P 112 80 16 0;25
P gina 37

Q 113 81 17 0;16
R 114 82 18 0;19
S 115 83 19 0;31
T 116 84 20 0;20
U 117 85 21 0;22
V 118 86 22 0;47
W 119 87 23 0;17
X 120 88 24 0;45
Y 121 89 25 0;21
Z 122 90 26 0;44
1 49 33 - 0;120
2 50 64 - 0;121
3 51 35 - 0;122
4 52 36 - 0;123
5 53 37 - 0;124
6 54 94 - 0;125
7 55 38 - 0;126
8 56 42 - 0;127
9 57 40 - 0;128
0 58 41 - 0;129
Tecla ¦/§ 167 166 28 0;41
Tecla ?/' 39 63 31 0;130
Tecla ?/­ 173 168 - 0;131
Tecla ^/`/[ 96 94 27 0;26
Tecla */+/] 43 42 29 0;27
Tecla /'/{ 39 249 - 0;40
Tecla ‡/} 128 135 - 0;43
Tecla ;/, 44 59 - 0;51
Tecla :/. 46 58 OMPT ha de usar otro m‚todo para generarlo. Quien genera el
c¢digo Intro es el par metro $_ dentro de la cadena valor.
Siguiendo el ejemplo anterior, ‚ste quedar¡a de la siguiente
forma:

PROMPT $E[0;68;"|MORE$_"p

- Puede redefinir alguna tecla con la orden externa
"HELP" o con la cadena "/?" seguida de un Intro. De esta forma
s¢lo tendr que pulsar esta tecla antes o despu‚s de una orden
del DOS (seg£n utilice el HELP o el interrogante) para obtener
la pantalla de ayuda de alg£n comando.

- Las teclas m s f ciles de redefinir son las teclas de
funci¢n, pero recuerde que hay algunas teclas que se utilizan
para generar un car cter o que son usadas por DOSKEY. Por
tanto, no reasigne las teclas F6, F7, F8 y F9 y ALT-F9, adem s
de las teclas que tienen un significado como CTRL-C o CTRL-Z.

Vayamos ahora con la siguiente orden para
activar/desactivar la reasignaci¢n de teclas repetidas en los
teclados ampliados (101 teclas).

La orden 'q' de ANSI.SYS sirve para redefinir estas
teclas repetidas. Se puede hacer de dos formas:

Esc[0q
Esc[1q

Empecemos por ver c¢mo trabaja el valor m s alto. Si
activamos Esc[1q nos permite reasignar independientemente las
teclas repetidas del teclado ampliado. Si no activamos esta
orden, entonces cuando redefinamos una tecla con otro valor
(seg£n el m‚todo explicado con anterioridad, usando la orden
'p'), al cambiar el valor de una tecla tambi‚n se cambiar la
correspondiente en el teclado ampliado (si es que existe).

Si activamos Esc[1p, dos teclas iguales (en el teclado
normal y teclado ampliado) pueden tener dos valores
diferentes. Sin embargo, para el perfecto funcionamiento de
esta orden conviene tener en cuenta lo siguiente:

- Si configura ANSI.SYS en el fichero CONFIG.SYS con el
par metro /K no funciona la orden 'q'. El par metro /X tiene
la misma funci¢n que la orden Esc[1p. Decida cu l de las dos
formas es la que quiere utilizar. Por defecto, el controlador
ANSI.SYS carga desactivada la orden de reasignaci¢n de teclas
ampliadas.

- Hay que tener en cuenta que el controlador ANSI.SYS
guarda un valor asignado, pese a que no tenga efecto si la
redefinici¢n del teclado ampliado no fue activada. Suponga un
P gina 40

ejemplo:

Esc[224;71;"valor de Inicio en teclado ampliado"p

Esta orden no tendr efecto como nuevo valor de la tecla
Inicio del teclado ampliado si no est activada la
reasignaci¢n del teclado ampliado, valga la redundancia. Esto
significa que cuando se active Esc[1q se activar el nuevo
valor sin tener que repetir la secuencia.

La orden Esc[0q es muy sencilla de entender. Desactiva la
reasignaci¢n de los valores dados para los teclados ampliados.


4.5 La pantalla muestra sus atributos con otras ¢rdenes

Como se ha visto, las ¢rdenes PROMPT y ECHO permiten
generar ¢rdenes ANSI de formas diferentes. PROMPT utiliza el
metacar cter $E que indica el car cter de escape ASCII. ECHO
utiliza el car cter ESC (ASCII 27) representado en pantalla
por una flecha dirigida hacia la izquierda (<-). Las ¢rdenes de
ANSI.SYS se identifican mediante una secuencia de caracteres
que se reconoce por sus dos primeros bytes. El primer byte
ser el car cter de la secuencia de escape y el segundo, un
simple corchete izquierdo ([), con valor ASCII 91.

Hasta este punto, queda claro como generar ¢rdenes ANSI
con lo aprendido, pero existe otro m‚todo con la orden TYPE
del DOS. La orden TYPE visualiza ficheros usando la salida
est ndar (el monitor CON). Por tanto, si se crea un fichero de
texto con el c¢digo ANSI Esc[2J y luego se lee mediante la
orden TYPE tambi‚n se borra la pantalla.

El m‚todo para escribir ¢rdenes TYPE es el descrito para
la orden ECHO. Para introducir el car cter de escape puede
hacerlo con la combinaci¢n ALT-27 del teclado num‚rico, o bien
pulsando CTRL-P y luego la tecla ESC desde el editor EDIT del
DOS.

Ejecutada una orden ANSI ‚sta se generar , si bien el
indicador del PROMPT se habr desplazado una fila hacia abajo.
Para evitar esto (un retorno de carro, el resultado de pulsar
una vez Intro) conviene eliminarlo introduciendo el c¢digo de
fin de fichero (el car cter CTRL-Z). De esta forma, todo lo
dem s no se tiene en cuenta. Para introducir este c¢digo desde
el editor EDIT del DOS, pulse CTRL-P y luego CTRL-Z. El
s¡mbolo que aparecer en pantalla ser el de una flecha hacia
la derecha (->).


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
rob1104
post Feb 24 2008, 04:11 AM
Publicado: #2


Xbox Live... The best thing ever happened around videogames
Group Icon

Grupo: Moderadores
Mensajes: 1.665
Registrado: 7-March 05
Desde: Matamoros, Tamaulipas, Mexico
Miembro nº: 93.342



Muy bueno, gracias. Lo paso a Manuales y Tutoriales.

Saludos bye1.gif


User is offlineProfile CardPM
Go to the top of the page
+Quote Post
vitrox2007
post Feb 24 2008, 09:53 AM
Publicado: #3


..::Omnipresente::..
Group Icon

Grupo: Miembros Vitalicios
Mensajes: 2.282
Registrado: 21-December 07
Desde: Prados Argentinos - Coordoobee's!
Miembro nº: 220.375



Dale!
:biggrin2:

Aqui la segunda parte..

-----------------------------------------------------------------------------------------------

El porqu‚ de la orden TYPE viene explicado a
continuaci¢n, pues esta orden no visualiza en pantalla ning£n
car cter, dado que las ¢rdenes ANSI se filtran de la entrada y
salida est ndar. Es un m‚todo muy pr ctico para averiguar si
hay alg£n error en un fichero de texto con ¢rdenes ANSI.
Piense que si al leer el fichero mediante TYPE apareciese
alg£n car cter en pantalla, significar¡a que este car cter no
P gina 41

se ha interpretado como orden ANSI y que, por consiguiente,
existe alg£n error en la programaci¢n del archivo. Es el
m‚todo m s semejante a un depurador de ¢rdenes de un
compilador. Ahora, ello no quiere decir que las ¢rdenes del
fichero sean correctas si no se produce ninguna salida en la
pantalla. Tampoco hay salida si no se han introducido todos
los par metros de la orden.

Un £ltimo consejo, antes de entrar con los ejemplos.
Reasigne alguna de las teclas de funci¢n de su teclado con el
car cter Esc[. De este modo, siempre que llame a la tecla de
funci¢n y a¤adiendo los par metros adecuados de la orden,
podr ejecutar ¢rdenes ANSI desde la l¡nea de comandos.

Con todo lo estudiado, podemos aventurarnos a crear un
fichero batch complejo. Este archivo por lotes que har uso de
las secuencias de escape utilizando para ello la orden PROMPT,
convertir el indicador de comandos del sistema en una
visualizaci¢n m s agradable y con informaci¢n diversa mostrada
por pantalla.

@ECHO OFF
PROMPT $e[s $e[1;1H$e[41;1;33mDirectorio = $p$e[K$e[1;60HFecha
= $e$d$e$u$e[40;37m$e[25;1HCOMANDO $e[K$e[37;40m

Escriba toda la longitud del listado en una sola l¡nea
l¢gica de su editor de textos.

El primer par metro especificado en el comando PROMPT
($e[s) graba la posici¢n del cursor cuando se invoca un
comando. El siguiente par metro ($e[1;1H) mueve el cursor a la
fila 1, columna 1 de la pantalla, asegurando con esto que el
directorio actual aparezca en la parte superior de la
pantalla, sin importar d¢nde estaba el cursor cuando se llam¢
a la orden. Las siguientes ¢rdenes ($e41;1;33m) definen la
primera l¡nea para una pantalla en color. "41" crea un fondo
rojo; "1" activa la alta intensidad y "33" hace que el color
de primer plano (letras) sea amarillo. Con todo, escribimos el
texto "Directorio =" acompa¤ado del par metro ($p) que nos
informar del disco y directorio actuales. Pero existe un
problema: la l¡nea en la que queremos escribir tiene unos
colores preestablecidos en la configuraci¢n por defecto del
ordenador. Para arreglarlo y establecer los colores elegidos
por nosotros para la primera l¡nea completa, debemos borrar la
l¡nea actual desde la posici¢n del cursor hasta el final
($e[K). Los par metros siguientes ($e[1;60H) colocan la
presentaci¢n de la fecha en la columna 60 de la primera fila.
El texto asociado, evidentemente, es "Fecha =". Para hacer
aparecer la fecha debe estar el par metro "$d" presente.

La siguiente l¡nea utiliza el par metro "$e[u" para
devolver el cursor a la posici¢n anterior a la ejecuci¢n del
PROMPT, donde empezar a escribir el nuevo indicador de
comandos. Los par metros siguientes alteran los atributos de
color para la segunda l¡nea del indicador de comandos. "40"
crea un fondo negro; y "37" hace que el color de primer plano
P gina 42

(letras) sea blanco. Por norma, trabajamos en modo 25x80
(aunque si est trabajando en modo texto VGA o SVGA, utilizar
el modo 50x80), con lo que debemos mover el cursor a la fila
25, columna 1. El texto asociado al PROMPT es "COMANDO ".
"$e[K" borra de nuevo hasta el final de la l¡nea,
estableciendo el negro como color de fondo y el blanco como
color de primer plano para esta l¡nea. Finalmente, "$e[37;40m"
establece el blanco sobre fondo negro para cualquiera de las
respuestas escritas en el indicador de comandos.


4.6 Reduzca el trabajo pesado con otras herramientas

Para trabajar adecuadamente con las secuencias de escape
y la programaci¢n gr fica de la pantalla, conviene hacerse con
algunas herramientas. En el disquete que viene con las
UTILIDADES+2 se incluyen varios programas.

KC-PAL y KCSETPAL permiten controlar las opciones de
color por defecto para las tarjetas gr ficas EGA y VGA desde
el DOS. El primer paso consiste en pedir los servicios de KC-PAL.
Se obtendr una visualizaci¢n de los diecis‚is colores en
el estado de asignaci¢n por defecto. Usando las teclas del
cursor se puede seleccionar cualquiera de ellos. De este modo,
se puede cambiar la asignaci¢n por defecto con las teclas '+'
y '-' o introduciendo el n£mero del color mediante el teclado
num‚rico. Cuando se han elegido las nuevas asignaciones se
pulsa ESC y el programa se configura dejando las nuevas
asignaciones en su lugar.

Esta herramienta es de utilidad para, por ejemplo, cuando
un programa como WordPerfect llame al color 1 (azul) de la
pantalla, aparezca la nueva opci¢n asignada por nosotros. Es
una forma de personalizar el ordenador, que bien se puede
incluir dentro de un fichero por lotes como AUTOEXEC.BAT.
Ve moslo.

Cuando se sale de KC-PAL se da informaci¢n sobre un
conjunto de par metros para utilizar con su programa
compa¤ero, KCSETPAL. Este programa es el que restaura los
colores preferidos por el usuario desde un fichero batch o una
macro.

Act£a, por ejemplo, eligiendo un color para el fondo de
la pantalla del ordenador. Tras elegir un nuevo color para el
fondo desde KC-PAL y si elegimos un color verde claro, se ver
el mensaje "KCSETPAL 24". Este mensaje es el comando necesario
para incluirlo dentro del fichero AUTOEXEC.BAT y que dejar un
color de fondo verde claro en la pantalla.

Otro tema interesante es la posibilidad de disponer de
men£s en la pantalla y otras informaciones en recuadros. Para
presentar estos men£s basta con crear un archivo batch que
realice un ECHO de un men£ creado con varias l¡neas gr ficas
del juego de caracteres ASCII extendido, o bien un TYPE de un
fichero gr fico ASCII o ANSI.
P gina 43


Para crear un archivo ANSI se debe utilizar un editor
ANSI. El editor realiza un archivo de texto con todo tipo de
efectos: parpadeo, negrita, colores e incluso animaci¢n. En el
disquete de las UTILIDADES+2 se incluye un programa de
shareware, TheDraw, de TheSoft Programming Services. Por un
m¢dico precio, la versi¢n registrada incluye macros, ayuda y
ejemplos de aprendizaje. El entorno gr fico del programa
UTILIDADES++ est realizado con el ejemplo del PROMPT que
antes hemos estudiado, donde el fichero por lotes que incluye
este PROMPT hace despu‚s un TYPE de un fichero de texto
gr fico realizado con este editor ANSI. En el disquete de las
UTILIDADES+2 se encuentra este ejemplo de entorno gr fico.

Las t‚cnicas de men£s gr ficos descritas hasta ahora son
muy £tiles y funcionan tanto en monitores color como en
monocromo. No obstante, existe un procedimiento para
visualizar men£s cinco veces m s r pido que usando el comando
TYPE o ECHO. La clave consiste en utilizar men£s que se hayan
grabado en formato binario. Se pueden crear desde el editor
ANSI TheDraw o bien desde un programa como Menu Maker, de
Andrew Fluegelman. Los men£s se visualizan llam ndolos desde
la funci¢n BASIC: BLOAD.

Otra programa de la recopilaci¢n de utilidades, RESPUEST,
realiza una pausa en el proceso del fichero de lotes,
esperando la pulsaci¢n de una tecla. Cuando ‚ste se produce,
se puede examinar la secuencia de escape de la tecla para
producir una acci¢n.

Estas y otras herramientas para la programaci¢n de los
archivos por lotes se encuentran dentro del disquete de las
UTILIDADES+2. Estudie los ficheros de documentaci¢n y vea las
posibilidades y el rendimiento que puede extraer a estos
programas en sus ficheros batch. Ad¢ptelos para sus
necesidades.


4.7 M£sica, maestro

Cuando se implant¢ el controlador ANSI.SYS en la versi¢n
2.0 del DOS no se consider¢ la posibilidad de a¤adir m£sica y
sonido a esta potente herramienta. Con el paso del tiempo, los
artistas de los gr ficos ANSI buscaron nuevas opciones
extendidas para este controlador de dispositivo del DOS. Los
CD-ROM de utilidades de dominio p£blico est n plagados de
nuevas versiones ANSI (hay que andarse con cuidado, pues
algunas de estas versiones no siguen el est ndar de las
rutinas del controlador). Los resultados, cada vez m s
espectaculares, han llevado a los artistas ANSI (en su mayor¡a
programadores de rutinas de instalaci¢n de CD-ROM bajo DOS y
sysops de BBS) a la concepci¢n de una fabulosa idea: la
posibilidad de escuchar sonido y m£sica a trav‚s del altavoz
del PC o la tarjeta de sonido,orada y que imita a un
teclado. Todas sus funciones derivan a la generaci¢n de c¢digo
musical que pueda ser grabado en un fichero. Tal fichero puede
sumarse, mediante una orden adicional, a cualquier fichero
ANSI est ndar, para que al ejecutarse, produzca sonidos junto
al resto de instrucciones. Merece la pena hacerse con este
programa, aunque s¢lo sea para ver la pantalla de presentaci¢n
ANSI y que muestra letras alej ndose en el espacio.

Todo lo dicho est muy bien, pero hay un problema en la
nueva emulaci¢n ANSI, o mejor dicho, un conflicto. El actual
est ndar usa la secuencia Esc[M para borrar una l¡nea de la
pantalla. Una soluci¢n a este inconveniente la han aportado
algunos programas de comunicaciones que ya incorporan las
secuencias ANSI musicales. Telemate, Procomm Plus para Windows
y BananaCom soportan el nuevo controlador de dispositivo
sustituyendo la secuencia Esc[M por Esc[N, al tiempo que
proponen cambiar la secuencia de borrado de una l¡nea por
Esc[Y. Esto £ltimo dejar¡a las puertas abiertas a la
implantaci¢n de la secuencia correcta, cuando aparezca el
nuevo est ndar. Pi‚nsese que el mundo de las BBS es el que m s
uso hace de las pantallas gr ficas ANSI y que, por eso,
algunos programas de emulaci¢n de terminal han querido ser los
primeros en incorporar las nuevas posibilidades musicales.

Baste decir que la norma propuesta aportar¡a una nueva
dimensi¢n, la del sonido, a las ventajas de las facilidades de
los c¢digos ANSI. Adem s, las secuencias musicales
reconocer¡an la presencia de tarjetas de sonido como la Sound
Blaster y Adlib o el altavoz interno del PC, emitiendo los
sonidos por uno u otro canal.


4.8 Ejecutando reclusos ANSI

Este cap¡tulo le resultar imprescindible a la hora de
elaborar sus dise¤os de pantalla o en la reasignaci¢n y
control de teclas. Por lo tanto, repasemos algo de importancia
y que quiz s no haya quedado suficientemente claro.

Hay varios m‚todos para activas las ¢rdenes ANSI.SYS.
Desde el DOS se suele utilizar la orden TYPE seguida de un
P gina 46

fichero de texto con ¢rdenes ASCII, o en su defecto la orden
PROMPT.

Una secuencia de caracteres ANSI ser reconocida como
par metro de la orden PROMPT, dado que cuando se termina de
escribir el comando y se pulsa Intro, se est produciendo una
entrada y es entonces cuando ANSI supervisa la gesti¢n.
Recuerde que el s¡mbolo $[E detr s de la orden PROMPT
representa el c¢digo Esc.

La orden TYPE del DOS visualiza ficheros utilizando la
salida del monitor. Por tanto tambi‚n es gestionado por ANSI.
Para leer c¢digos ANSI, se tiene que crear un fichero con
c¢digos ASCII que contenga las secuencias del controlador de
dispositivo. El £nico problema est en c¢mo generar el
car cter Esc; tan f cil como pulsar ALT y teclear 27 en el
teclado num‚rico. Sin embargo en el editor EDIT deber
utilizar la combinaci¢n de teclas CTRL+P y soltar para que
aparezca el car cter ^P; luego pulse la tecla Esc de su
teclado. Normalmente, ver que el car cter Esc se visualiza en
pantalla mediante una flecha a la izquierda ' '. As¡ que no le
extra¤e ver listados en libros, manuales o revistas utilizando
indistintamente cualquiera de los caracteres de representaci¢n
para las secuencias de escape.

Como ha podido ver se pueden efectuar todo tipo de
operaciones y utilidades gr ficas muy potentes desde los
archivos batch del DOS. Si desea mejorar las posibilidades,
a£n no est dicho todo. En el siguiente cap¡tulo usaremos el
comando DEBUG para escribir programas muy sencillos (no se
trata de estudiar ensamblador, ni de infundir ese respeto que
muchos padecen ante este comando), sino de proporcionar una
utilidad para programadores que permita encontrar errores en
los programas, para beneficio de nuestros ficheros por lotes.





















P gina 47

Cap¡tulo 5
USO DEL DEBUG PARA PREGUNTAS INTERACTIVAS
-----------------------------------------



5.1 El depurador, un tipo duro que trata a los archivos como
series de bytes

DEBUG es una orden externa del DOS que sirve como
depurador binario para visualizar la memoria del sistema o el
contenido de un fichero. Se gestiona con ¢rdenes propias cuya
explicaci¢n est fuera de las posibilidades de este libro,
aunque s¡ que resumir‚ brevemente las mismas y sus diferencias
para cada microprocesador, am‚n de conocer lo m s b sico para
crear programas sencillos, compa¤eros de nuestros ficheros por
lotes.

Antes de conocer su uso en la programaci¢n de los
ficheros por lotes, convendr¡a un estudio b sico de las
instrucciones b sicas para el microprocesador, lo que se
entiende por ensamblador. Para que lo entienda, la redacci¢n
de un programa con DEBUG requiere que se conozca c¢mo act£an
sus 18 comandos.

DEBUG se usa, normalmente, para volcar en pantalla
contenidos de programas y realizar peque¤os programas en
ensamblador.

Conviene saber las ¢rdenes m s esenciales de DEBUG si se
quieren aprovechar los recursos de los ficheros por lotes y
todas las ventajas del DOS. Por ejemplo, para entender los
ejemplos que vienen a continuaci¢n y que no le suene a chino,
conviene saber que el comando 'A' significa "assembler" y que
todos los programas escritos con DEBUG deben comenzar en la
direcci¢n 100H. De todas formas, si ‚ste no es su caso (no es
ninguna aberraci¢n no conocer los secretos de DEBUG; muchos
programadores de los que se dicen profesionales jam s han
trabajado directamente con ‚l) no se desespere. Tome los
ejemplos aqu¡ descritos para su uso personal y extraiga una
conclusi¢n: el ensamblador le puede sacar de algunos apuros en
aquellas aplicaciones excesivamente complejas. De todas
formas, buscando encontrar multitud de programas y
herramientas que le har n el mismo servicio que la rutina
pensada en ensamblador.

Cuando se carga el programa DEBUG, aparece un indicador
propio, el car cter '-' (gui¢n). Si a continuaci¢n se
introduce la orden ? se visualizar una pantalla de ayuda con
todas las ¢rdenes que acepta DEBUG. Para salir del programa y
regresar al DOS ha de ejecutar la orden Q.


5.2 ¨C¢mo desnudar a un programa?

Para empezar, crearemos un programa, IMPRIMIR.COM que
P gina 48

imprime el contenido de la pantalla. Sup¢ngase, por ejemplo,
que un programa de los ejecutados en un archivo batch presenta
en pantalla unos datos de inter‚s para el operador. Para
asegurarse de que el usuario dispone de esta informaci¢n, el
archivo batch puede ejecutar el programa IMPRIMIR despu‚s de
que el programa ejecutado complete su ejecuci¢n.

Ejecute DEBUG, indicando en la l¡nea de comandos el
nombre del archivo a crear:

C:\>DEBUG IMPRIMIR.COM

DEBUG responder en su programa que el archivo no ha sido
encontrado, lo que quiere decir que no exist¡a previamente y
que ‚ste se crear por primera vez.

Ahas respuestas interactivas dentro de un
fichero por lotes. Observe que en su archivo batch, primero
deber llamar al programa SN.COM y luego realizar las
comprobaciones correspondientes a los valores (tres l¡neas que
deber n situarse despu‚s de realizada la pregunta). Para que
los valores resulten verdaderos se han de situar de mayor a
menor, tal y como est n en el listado. La comprobaci¢n
resultante llevar la ejecuci¢n del programa a la etiqueta
(por usted definida) SI o NO.

Para establecer el programa SN.COM

C:\>DEBUG SN.COM
Archivo no encontrado

-A 100
1CAE:0100 MOV AH,08 ; Rutina para obtener caracteres del
; DOS
1CAE:0102 INT 21 ; Llamada a la rutina
1CAE:0104 CMP AL, 53 ; ¨Se ha pulsado la tecla S?
1CAE:0106 JZ 010E ; Letra v lida. Saltar al final del
; programa
1CAE:0108 CMP AL, 4E ; ¨Se ha pulsado la tecla N?
1CAE:010A JZ 010E ; Letra v lida. Saltar al final del
; programa
1CAE:010C JMP 0100 ; Bucle para insistir hasta obtener
; un car cter v lido
1CAE:010E MOV AH, 4C ; Rutina para terminar un programa
; DOS
1CAE:0110 INT 21 ; Fin del programa
1CAE:0112
-R CX
CX 0000
:12
-W
Escribiendo 0012 bytes
-Q

C:\>

Este programa podr¡a emplearse en el arranque de un
ordenador, durante la ejecuci¢n del AUTOEXEC.BAT, a fin de
liberar memoria o no ante la carga de determinados programas
(tal y como hace la orden CHOICE de MS-DOS 6). Algunos juegos,
sobre todo los m s recientes, necesitan obligatoriamente 580
Kb de memoria convencional. Si nuestro arranque ejecuta varios
P gina 51

programas residentes, utilidades, DOSKEY, un rat¢n, etc.,
puede que sea necesario preguntar si desea o no ejecutar estos
programas a fin de liberar parte de la memoria convencional.
MS-DOS 6 y Novell DOS s¡ disponen de esta funci¢n, tan
sencilla como introducir el car cter '?' delante de la l¡nea
de comandos que deba ejecutarse. El fichero por lotes se
detendr en este punto y preguntar al usuario si desea o no
ejecutar esa l¡nea de comandos.

Si bien los dos ejemplos de programaci¢n en ensamblador
son muy elementales, no se ha pretendido en ning£n momento dar
una introducci¢n al estudio del ensamblador. Simplemente, se
ha querido ilustrar la capacidad de los archivos batch con
otras herramientas, algunas de las cuales las podemos crear
nosotros con programas en ensamblador. Si ‚ste no es su caso,
no se preocupe; tan s¢lo le interesa conocer estas
posibilidades y buscar los programas adecuados para acogerlos
en sus ficheros por lotes interactivos. Le garantizo que
buscando -y no me cansar‚ de repetirlo- uno siempre encuentra
lo que quiere.


5.3 Ensamblador para inmortales

Hay una parte del DOS que pertenece a los mortales y es
aquella en la que hacemos uso de los comandos y ¢rdenes del
sistema operativo, ya sea para movernos por ‚ste o para
programar nuestros propios ficheros por lotes. Sin embargo,
cuando se menciona DEBUG o el BASIC del DOS parece que se est‚
hablando para los dioses del ciberespacio, esos geniecillos
que realizan aut‚nticas proezas con estas herramientas.

Aunque la realidad es bien distinta, he dejado para este
apartado algunos trucos adicionales para quienes deseen entrar
en el limbo de los dioses.

Para empezar, existe un truco que evita tener que teclear
¢rdenes desde el propio DEBUG. Consiste en crear un listado de
texto con las ¢rdenes en ensamblador. Por ejemplo, utilice el
editor del DOS para escribir lo que vea en cualquier listado
de ensamblador (tal como est , incluyendo l¡neas en blanco) y
gr belo como SCRIPT.TXT. Seguidamente haremos uso de una de
las ¢rdenes para redireccionar entradas con DEBUG <
SCRIPT.TXT; lo que generar el fichero ejecutable SCRIPT.
Sustituya SCRIPT por el nombre del programa.

Con lo sabido, experimente con estos ejemplos y que le
ser n de gran utilidad para sus ficheros batch.

El primer ejemplo est basado en crear un programa que
sustituya al controlador de dispositivo ANSI, prescindiendo de
utilizar cualquier sustituto ejecutable.

:HAZESC
ECHO OFF
ECHO Creando ESC.COM en el directorio activo
P gina 52

DEBUG ESC.COM <HAZESC.BAT > NUL
GOTO TEST
A100
MOV SI,80
MOV CH,0
MOV CL, [SI]
MOV BYTE PTR[SI+1],1B
MOD DX,81
MOV BX,1
MOV AH,40
INT 21
INT 20

RCX
17
W
Q

:TEST
IF EXIST ESC.COM GOTO OK
ECHO ESC.COM no ha sido creado
ECHO DEBUG.COM debe encontrarse en el directorio activo
ECHO o estar especificado en la ruta del PATH
GOTO FIN
:OK
ECHO ESC.COM ha sido creado
:FIN

Lo mejor de este programa es que no es un listado
ensamblador de los habituales, sino que mezcla t‚cnicas de
programaci¢n batch con el ensamblador. Para ello deber
teclear y guardar el listado anterior en su editor preferido
con el nombre de HAZESC.BAT

A continuaci¢n, desde el DOS, teclee

HAZESC (Intro)

lo que generar el ejecutable ESC.COM

Para utilizar ESC.COM como orden ANSI, s¢lo tiene que
agregar la orden ESC antes de la secuencia de escape (ejemplo:
ESC [2J).

El siguiente ejemplo testea la presencia de una unidad
duplicada. Le servir de ayuda para determinar si sus ficheros
batch van a ser ejecutados sobre una unidad DoubleSpace o no,
actuando en consecuencia.

Cree el listado TESDS.SCR desde su editor de textos.

E 100 B4 19 CD 21 88 C2 B8 11
E 108 4A BB 01 00 CD 2F 09 C0
E 110 75 09 F6 C3 80 74 05 B0
E 118 01 EB 02 B0 00 B4 4C CD
E 120 21
P gina 53

RCX
21
N TESTDS.COM
W
Q

Utilice el metodo DEBUG < TESDS.SCR para crear el fichero
ejecutable.

El siguiente listado batch hace uso de TESDS.COM para
supervisar la presencia de una unidad duplicada.

@ECHO OFF
REM DOBLESN.BAT
TESTDS
IF ERRORLEVEL 1 GOTO SI
ECHO La unidad ha sido comprimida con DoubleSpace
GOTO EXIT
:SI
ECHO La unidad ha sido comprimida con DoubleSpace
:FIN

El c¢digo de error 1 es el que determina si el disco duro
ha sido duplicado o no. Cualquier otro c¢digo de error
diferente indicar que la unidad no ha sido compactada.

Aparte de las funciones que pueden desempe¤ar, los m s
expertos deber¡an considerar el estudio de las t‚cnicas usadas
en estos ejemplos, pues contienen rutinas avanzadas para
aplicar en sus desarrollos.


























P gina 54

Cap¡tulo 6
CODIGOS DE CONTROL PARA IMPRESORA
---------------------------------




6.1 El lenguaje de la impresora no es nada vulgar

.

La tabla de los c¢digos de control de impresi¢n que viene
a continuaci¢n, combina estos c¢digos con otros caracteres de
control. Por ejemplo, para enviar un texto con cursiva a las
impresoras Epson, debe teclear el c¢digo de escape <Alt-27>
(recuerde, pulsando la tecla ALT junto al n£mero
correspondiente del teclado num‚rico) seguido del n£mero 4.
Una excepci¢n a esta norma es que algunas impresoras utilizan
el c¢digo de escape FS (Alt-28).

[C¢digo [Car cter
ASCII] de control [Descripci¢n]
/(en decimal)]
14 Modo ampliado (s¢lo una l¡nea)
20 Cancela el modo ampliado
27 W1 (87 1) Modo ampliado
27 W0 (87 0) Modo ampliado
15 Modo condensado
18 Cancela el modo condensado
27 4 (52) Cursiva o it lica (Epson)
27 5 (53) Cancela it lica (Epson)
27 -1 (45 1) Subrayado
27 -0 (45 0) Cancela subrayado
27 E (69) Negrita
27 F (70) Cancela negrita
27 G (71) Doble pasada
27 H (72) Cancela doble pasada
P gina 56

27 M (77) Letra Elite (Epson)
27 : (58) Letra Elite (IBM)
27 x1 (120 1) Letra NLQ (de calidad)
27 P (80) Letra Pica Normal (Epson)
27 S0 (83 0) Super¡ndice
27 S1 (83 1) Sub¡ndice
27 T (84) Cancela super¡ndice y sub¡ndice
27 @ (64) Resetea todos los c¢digos
27 g (103) Microimpresi¢n (15 cpi)
27 p1 (112 1) Escritura proporcional (Epson)
27 p0 (112 0) Desactiva esc. proporcional (Epson)
27 P0 (80 1) Escritura proporcional (IBM)
27 P1 (80 1) Desactiva esc. proporcional (IBM)
27 w1 (119 1) Altura doble de caracteres (Epson)
27 w0 (119 0) Des. altura doble caracteres (Epson)
27 q1 (113 1) Outline o contorno (Epson)
27 q2 (113 2) Shadow o sombra (Epson)
27 q3 (113 3) Contorno y sombreada (Epson)
27 q0 (113 0) Desactiva contorno y/o sombra (Epson)

Recuerde que si el c¢digo de escape 27 no funciona en su
impresora, deber¡a probar con el c¢digo de escape 28.

Como es evidente, se pueden combinar dos o m s c¢digos
para obtener el estilo de letra deseado. Por ejemplo, doble
pasada con negrita o ampliado con doble pasada y elite.

Si todav¡a no lo ha visto muy claro, nada mejor que un
programa que hace uso de todos los modos de impresi¢n, a fin
de que compruebe el funcionamiento de cada uno de los c¢digos
de control de impresi¢n.

El programa prepara la impresora para el env¡o de un
fichero de texto. Seg£n la opci¢n que hayamos elegido,
obtendremos un resultado u otro cuando enviemos el texto a
imprimir. El programa, llamado SETTIPO.BAT espera a que le
pasemos el par metro correcto (uno o varios) para preparar la
impresora.

@ECHO OFF
CLS
REM Programa SETTIPO.BAT
IF "%1"=="" GOTO AYUDA
ECHO Preparando estilos de impresi¢n
GOTO %1
:BUCLE
SHIFT
IF "%1"=="" GOTO FIN
GOTO %1
:AYUDA
ECHO Use cualquiera de estos nombres como par metro de SETTYPE
ECHO.
ECHO AMPL (modo ampliado activado)
ECHO COND (modo condensado activado)
ECHO SUBR (modo subrayado activado)
ECHO NEGR (modo negrita activado)
P gina 57

ECHO BOLD (modo doble pasada activado)
ECHO RESET (resetea todos los c¢digos de control)
GOTO FIN
:AMPL
ECHO <Alt-27>W1 > LPT1
GOTO BUCLE
:COND
ECHO <Alt-15> > LPT1
GOTO BUCLE
:SUBR
ECHO <Alt-27>-1 > LPT1
GOTO BUCLE
:NEGR
ECHO <Alt-27>E > LPT1
GOTO BUCLE
:BOLD
ECHO <Alt-27>G > LPT1
GOTO BUCLE
:RESET
ECHO <Alt-27>@ > LPT1
:FIN

Quiz s ahora comprenda c¢mo es posible que las impresoras
lleven consigo estilos de impresi¢n, que no dejan de ser los
mismos que los descritos anteriormente. Un simple fichero
batch da el mismo resultado y es igualmente efectivo.

Una impresora l ser puede hacer mucho m s que su
equivalente de matriz de puntos, con la excepci¢n de que
incorpora m s comandos para controlar ciertas caracter¡sticas,
como los gr ficos de trescientos puntos por pulgada (300 ppp),
tipos de letra escalables, estilos y tipos de letra
recargables. El lenguaje m s habitual (despu‚s de PostScript)
que controla estas caracter¡sticas es el PCL, al que antes se
ha hecho referencia. A diferencia de la impresora de matriz de
puntos, una impresora l ser no imprime hasta que ha recibido
una p gina completa de texto; es obvio que los comandos de la
impresora HP deben estar contenidos en un archivo.

A continuaci¢n y como en el caso de las impresoras
matriciales, adjunto una lista con algunos de los comandos
principales del lenguaje de descripci¢n de p ginas PCL.
Consulte siempre la documentaci¢n de su impresora para ver el
conjunto completo de las secuencias de escape especificadas
para su utilizaci¢n (tanto para impresoras matriciales como
l ser o inyecci¢n de tinta).

[C¢digo [Car cter
ASCII] de control] [Descripci¢n]

27 (10U) Conjunto de s¡mbolos PC-8
27 (8U Conjunto de s¡mbolos Roman-8
27 (s1P Espaciado (proporcional)
27 (s0P Espaciado (fijo)
27 (sanchoH Ancho (en caracteres por pulgada)
27 (spuntosV Altura
P gina 58

27 (s1S Cursiva
27 (s4S Condensada
27 (s8S Comprimida
27 (s24S Ampliada
27 (s32S Fuera de l¡nea
27 (s64S En l¡nea
27 (s128S Sombreada
27 (s0S Desactiva todos los estilos a normal
27 (s-3B Impresi¢n de borrador
27 (s0B Impresi¢n media
27 (s3B Negrita
27 (s0T Letra normal
27 (s1T Letra Pica
27 (s2T Letra Elite
27 (s3T Letra Courier
27 (s4T Letra Helv‚tica
27 (s5T Letra Times Roman
27 &d0D Subrayado
27 &d@ Cancela subrayado
7 Suena pitido impresora
27 E Resetea impresora y expulsa una
p gina

Existen otro tipo de c¢digos de control de impresi¢n que
son los que hacen referencia a los comandos de formato, es
decir, aquellos que controlan caracter¡sticas como el espacio
interlineal, los saltos de l¡nea o p gina, el tama¤o de
p gina, los m rgenes y los tabuladores; los comandos de
gr ficos, que controlan la impresi¢n d 911
17 968
18 1025
19 1082
20 1139
21 1196
22 1253
23 1310
24 1367
25 1424
26 1481
27 1538
28 1595
29 1652
30 1709
31 1766
32 1823
33 1880
34 1937
35 1994

No creo que sus documentos vayan m s all de las dos mil
l¡neas, pero si es as¡, s¢lo tiene que ampliar la plantilla
aplicando el modificador de +57 a cada nueva p gina.

No olvide a¤adir en la primera l¡nea un comando de
impresi¢n de salto de p gina. Se hace servir para una primera
prueba de avance de p gina; si ve que funciona correctamente,
el resto de la documentaci¢n se imprimir en su totalidad.

Con toda probabilidad, lo que m s utilizar en la
programaci¢n de sus ficheros por lotes ser la peque¤a tabla
de control de la impresora, aparte de la plantilla para ver en
qu‚ lugar de la hoja se produce el avance de p gina. Ahora
bien, conviene conocer el resto de comandos de impresi¢n para
aquellas ocasiones en que tenga que programar aplicaciones m s
complejas.








P gina 61

Cap¡tulo 7
MAS ALLA DEL DOS 5
------------------




7.1 La batalla de los titanes del DOS

A finales de 1980, IBM contact¢ con Bill Gates para
revelarle que estaban considerando la producci¢n de un
ordenador de ocho bits. IBM quer¡a que Microsoft dise¤ase una
versi¢n del Basic para esta nueva m quina, incluida en la
memoria ROM. Gates recomend¢ a IBM la posibilidad de dise¤ar
un ordenador de 16 bits. Sugiri¢, entonces, que IBM se pusiese
en contacto con Gary Kildall, de Digital Research, para
dise¤ar un sistema operativo de 16 bits. No obstante, Digital
se sobrepas¢ con IBM y se asoci¢ con la competencia para
dise¤ar aplicaciones para el sistema operativo CP/M.

En cualquier caso, Gates e IBM compraron los derechos del
sistema operativo 86-DOS de Patterson. El 12 de agosto de 1981
se present¢ el primer PC y el sistema operativo DOS 1.0 (al
cual IBM llam¢ PC-DOS). En marzo de 1983, IBM anunci¢ su PC-XT
y la versi¢n 2.0 de DOS. Con la llegada del AT llegaron las
versiones 3.x. El resto es historia. Una versi¢n 4.0x que dio
much¡simos quebraderos de cabeza. Una sorprendente versi¢n 5,
m s completa y agradable. Una versi¢n 6.x que a¤adi¢ programas
adicionales y un duplicador de discos...

Toda esta historia se complica cuando Digital Research
decide dise¤ar su propio sistema operativo compatible con DOS.
DR-DOS 5 y DR-DOS 6 calaron hondo en el mercado europeo por
sus caracter¡sticas: un interfaz gr fico agradable, utilidades
para transferir ficheros, soporte de redes, comandos
avanzados... Por su parte, Microsoft decide divorciarse de IBM
para casarse con Intel. IBM contin£a su carrera y contin£a
dise¤ando su propio sistema operativo PC-DOS. A su vez, Novell
compra en 1993 a Digital y absorbe su sistema operativo.
Consecuencia de todo ello (a la hora de escribir este libro
electr¢nico) es que mientras que Microsoft ha llegado hasta la
versi¢n MS-DOS 6.21 (de la que se ha extra¡do el duplicador de
discos, por problemas jur¡dicos con Stac Electronics), Novell
acaba de presentar Novell DOS 7, mientras que IBM ha
presentado su PC-DOS 6.3 (con un salto extra¤o de d¡gitos para
evitar confusiones a los usuarios). De todas estas versiones
hablaremos ahora y de las herramientas incluidas para la
programaci¢n de archivos batch.


7.2 ¨MS-DOS 6? ­No es para tanto!

Durante un tiempo, todos los medios de comunicaci¢n
especializados en inform tica, coincidieron en afirmar que las
nuevas prestaciones del m s reciente sistema operativo de
Microsoft no superan las de ciertos programas de dominio
P gina 62

p£blico, y mucho menos las expectativas creadas a su
alrededor.

A la vista de las innovaciones incluidas (la mayor parte
aplicaciones de otras empresas de reconocido prestigio), los
cr¡ticos creyeron injustificado hablar de la subida de un
punto en la numeraci¢n de la nueva versi¢n.

Pese a estas consideraciones, MS-DOS 6 y versiones 6.x
posteriores, incluyeron las siguientes caracter¡sticas:

- DoubleSpace, un programa integrado para comprensi¢n de
discos (duros o flexibles) que aumenta el espacio disponible
mediante la compactaci¢n de archivos.

- MemMaker, un programa de optimizaci¢n de memoria.

- Comandos mejorados, como es el caso del modificador /C
para el comando DIR que presenta informaci¢n de las tasas de
comprensi¢n; el comando MEM que ahora proporciona m s detalles
acerca de la memoria; LOADHIGH y DEVICEHIGH que incluso
permiten especificar el sector de memoria donde se desee
cargar un programa.

- Un nuevo programa de copias de seguridad (Backup) para
Windows.

- Microsoft Anti-virus, programa que identifica y elimima
unos mil virus electr¢nicos.

- El programa Restablece (Undelete) mejorado, con tres
niveles de protecci¢n y versi¢n para Windows.

- MS-DOS Defragmentar, un nuevo programa que reorganiza
los archivos del disco duro.

- El programa SMARTDrive mejorado y que ahora almacena
informaci¢n que vaya a ser escrita en el disco duro.

- Microsoft Diagnostics (MSD) que presenta informaci¢n
t‚cnica del sistema.

- Interlink, programa para transferir ficheros entre
PC.

- Comando POWER que desactiva la energ¡a de la bater¡a de
los ordenadores port tiles.

- Nuevos comandos: MOVE, para mover ficheros de un
directorio a otro; y DELTREE, que elimina un directorio y sus
subdirectorios y archivos subordinados.

- Un controlador para el CD-ROM (MSCDEX.EXE).

- SCANDISK, un chequeador del disco para corregir
posibles errores, incluyendo los derivados de la duplicaci¢n
P gina 63

con DoubleSpace.

- Mejoras de ¢rdenes y controladores tales como
CHKDSK.COM, DOSKEY.COM, DEBUG.COM, ANSI.SYS, EDIT.COM,
DOSSHELL.EXE, FDISK.COM, FORMAT.COM, QBASIC.ESE, UNDELETE.EXE,
HIMEN.SYS, XCOPY.EXE y UNFORMAT.COM.

La verdad es que las novedades son bastantes.
Personalmente, y pese a los comentarios adversos de la cr¡tica
especializada, he encontrado bastantes caracter¡sticas que
convencen de por s¡ solas para cambiarse de versi¢n en
cualquier ordenador.

En cuanto a lo que nos interesa, las facilidades para los
archivos batch, ‚sta es la s¡ntesis de las nuevas mejoras:

- Capacidad para definir m s de una configuraci¢n en el
sistema en un archivo CONFIG.SYS, a trav‚s de men£s agradables
y vistosos.

- Resoluci¢n de problemas en los programas de arranque
del ordenador. Se pueden desviar los comandos de inicio cuando
se enciende el PC con algunas teclas de funci¢n.

- El nuevo comando CHOICE que espera informaci¢n del
usuario y devuelve un ERRORLEVEL.

- El nuevo comando NUMLOCK palla, siempre y cuando despu‚s del nombre de
elemento, coloque una ',' (coma). Aunque es posible indicar un
nombre de bloque largo, es recomendable que ‚ste sea corto,
puesto que el mismo se almacena en una variable de entorno,
ocupando espacio. Cada bloque de men£ puede contener hasta un
m ximo de 9 opciones MENUITEM. Si se desea crear m s
configuraciones, deber utilizarse la orden SUBMENU para crear
nuevos bloques de men£, cada uno de los cuales podr tener sus
9 opciones. Si se pulsa F5 cuando aparezca en pantalla el men£
no se procesar ninguno de los bloques de men£, mientras que
si se pulsa F8 se pedir confirmaci¢n para cada una de las
¢rdenes a ejecutar en el men£ elegido.

Sintaxis: MENUITEM = bloqueOrdenes,t¡tulo

MENUDEFAULT Especifica el elemento de men£
predeterminado. Especifica el bloque de men£s que se arrancar
por defecto si el usuario no hace ninguna elecci¢n. Este
comando es opcional; si no se especifica, la configuraci¢n
predeterminada se establecer en el elemento 1. Este comando,
seguido de una coma ',' permite a¤adir el valor de tiempo
opcional en el que el ordenador esperar tantos segundos como
haya indicado, antes de arrancar la configuraci¢n por defecto.

Sintaxis: MENUDEFAULT = bloqueOrdenes,segundos

MENUCOLOR Establece los colores para el texto de arranque
y el fondo del men£. Los valores num‚ricos pasados como
par metros de estas orden son los siguientes:

[N£mero] [Color]
0 Negro
1 Azul
2 Verde
3 Ci n
4 Rojo
5 Magenta
6 Marr¢n
7 Blanco
8 Gris
9 Azul brillante
10 Verde brillante
11 Ci n brillante
12 Rojo brillante
13 Magenta brillante
14 Amarillo
15 Blanco brillante

Sintaxis: MENUCOLOR = colorTexto,colorFondo

No se puede dejar ning£n espacio en blanco entre la coma
que separa los dos par metros.

P gina 66

SUBMENU Especifica un elemento de men£ que presenta otro
juego de opciones. El comando especifica una desviaci¢n a otro
bloque del men£ con nuevas elecciones. Como puede comprobar,
MS-DOS abre ramificaciones de men£s en forma de rbol.

Sintaxis: SUBMENU = bloqueMen£, t¡tulo

Un bloque de configuraciones puede contener cualquier
comando que normalmente situar¡a en su archivo CONFIG.SYS con
cualquier versi¢n del DOS. Pero adem s, MS-DOS 6 a¤ade, aparte
de los comandos ya descritos, otros dos m s, particularmente
£tiles en los bloques de configuraciones:

INCLUDE Este comando indica al DOS que ejecute los
comandos de otro bloque de configuraciones, dentro del bloque
de configuraciones en el que se encuentre.

Sintaxis: INCLUDE bloqueOrdenes

[COMMON] Nombre del bloque de configuraciones que ser
com£n a todas las configuraciones de arranque. Microsot
recomienda a¤adir este bloque al final del archivo CONFIG.SYS,
puesto que algunas aplicaciones y programas modifican este
archivo agregando nuevas ¢rdenes al final, y que deber¡an ser
com£nes a todas las configuraciones. Si no se especificase
este nombre de bloque, las ¢rdenes nuevas se situar¡an en el
£ltimo bloque, activ ndose £nicamente para ‚ste.

Veamos qu‚ significado tiene todo lo explicado hasta
ahora, con otro ejemplo:

[MENU]
menuitem=Windows, Configuraci¢n para Windows
menuitem=DOS, Configuraci¢n para DOS
menuitem=Juegos, Configuraci¢n para juegos con memoria
expandida
menucolor=15,1
menudefault=Windows, 20

[WINDOWS]
set path=c:\windows;c:\dos
set temp=c:\windows\temp

[DOS]
path=c:\;c:\dos

[JUEGOS]
include=windows
device=c:\dos\emm386.exe 2048

[COMMON]
device=c:\dos\ansi.sys

Este archivo CONFIG.SYS define un bloque [COMMON] que
incluye comandos comunes a todas las configuraciones; en este
caso, el controlador de dispositivo ANSI.SYS.
P gina 67


Tambi‚n incluye tres configuraciones: Windows, DOS y
Juegos. El bloque de configuraciones [JUEGOS] incluir los
comandos del bloque de configuraciones de [WINDOWS], dado que
algunos juegos, como es l¢gico, se ejecutar n bajo Windows.

El comando MENUCOLOR establece el color del texto en 15
(blanco brillante) y el color del fondo en 1 (azul).

El comando MENUDEFAULT especifica a [WINDOWS] como la
configuraci¢n y el elemento de men£ predeterminados, dando un
valor de intervalo de 20 segundos antes de que se inicie el
men£ por defecto.

Veamos otro ejemplo que activa una opci¢n de submen£.

[MENU]
menuitem=dosespa¤ol, Ejecutar DOS 6 en castellano
submenu=otros, Ejecutar DOS 6 en otros idiomas
menudefault=dosespa¤ol, 5

[OTROS]
menuitem=dosingl‚s, Ejecutar DOS 6 en ingl‚s
menuitem=dosfranc‚s, Ejecutar DOS 6 en franc‚s
menuitem=dosalem n, Ejecutar DOS 6 en alem n
menudefault=dosingl‚s

[DOSESPA¥OL]
country=34,,c:\dos\country.sys

[DOSINGLES]
country=1,,c:\dos\country.sys

[DOSFRANCES]
country=33,,c:\dos\country.sys

[DOSALEMAN]
country=49,,c:\dos\country.sys

[COMMON]
files=30
buffers=20
shell=c:\dos\command.com /e:512 /f /p c:\dos

Este fichero CONFIG.SYS mostrar en pantalla un men£
principal con dos opciones, donde la primera se asume por
defecto y se activa a los 5 segundos si el usuario no indica
lo contrario.

Si se escoge la segunda opci¢n del men£ principal aparece
el submen£ [OTROS], donde se asume por defecto la opci¢n de
ejecutar el teclado en ingl‚s y sin l¡mite de tiempo para que
el usuario tome una decisi¢n.

¨Se va viendo para qu‚ pueden servirnos l