|
Mediante los
comandos,
también
llamados
macros,
encontrará la
forma para
aumentar la
potencia del
Amiga Dos. |
 |
Por Loren Lovhaug
Cuando le hablan de un sistema operativo usted pensará seguramente en una difícil programación en C, Ensamblador u otro complicado lenguaje de programación con el cual poder realizar tareas no incluidas de base en el sistema operativo. Sin embargo, en el directorio C: de su disco WorkBench, podrá encontrar los comandos necesarios para realizar macros (grupos de instrucciones en una determinada secuencia); con los cuales realizar aquellas tareas que no se encuentran de base en el Amiga DOS:
Los requerimientos básicos para crear macros son un editor de textos o un procesador de texto, que permitan la grabación de un fichero en ASCII, así como una idea clara de la función del Macro. Comience escribiendo un plan conteniendo lo que desea que realice su macro, y divida éste en la mayor parte posible de tareas individuales. Estos pasos preliminares hacen que sea mucho más sencilla la elección de los comandos apropiados del AmigaDOS.
Como inspiración para sus propios Scripts a continuación se explican los esquemas, la metodología y pasos dados en la realización de tres Macros expuestos como ejemplo.
1. Doble Tiempo: El Macro DateCopy.
El hecho de que el AmigaDOS almacene la fecha actual en cada fichero que se grabe a disco, abre el camino conveniente para copiar ficheros basándose en la fecha de creación. A continuación se crea un nuevo comando. DateCopy, con el cual se permita especificar un período de tiempo como recurso para la copia de ficheros. La sintaxis de DateCopy será la siguiente:
DATECOPY fuente TO destino SINCE fecha UNTIL fecha
Como en el comando COPY, del AmigaDOS; fuente indica los recorridos así como nombres de ficheros (incluyendo comodines) de los ficheros que se deseen copiar, y destino indica el periférico y directorio donde los ficheros se copiarán. Los parámetros SINCE y UNTIL, le permitirán limitar la copia de ficheros a los que han sido creados antes, después o durante la fecha indicada. La introducción de la fecha debe ser realizada en el formato estándar del comando Date del AmigaDOS o en la notación Día-de la semana (Yesterday, Today, Monday...). Por ejemplo, para copiar ficheros desde DF0: hasta RAM: cuyos nombres comiencen con 'R' y que han sido creados entre el 10 de Marzo de 1990 y el Domingo, introduzca (en una única línea).
DATECOPY df0:R#$? To ram: SINCE 10-Mar-90 uNTIL yesterday
Para abreviar la sintaxis, puede eliminar uno de los dos parámetros UNTIL y SINCE. Utilizando UNTIL sin SINCE, informará a DATECOPY para copiar ficheros fechados desde el 1 de Enero de 1980 hasta la fecha indicada mediante el parámetro UNTIL. Especificando SINCE sin el parámetro UNTIL permitirá a DATECOPY copiar ficheros desde la fecha indicada hasta la actual (incluyendo el mismo día de ejecución). Si se omiten ambos parámetros, DATECOPY duplicará los ficheros creados entre el 1 de Enero de 1980 hasta la fecha actual.
Los pasos dados por la tarea son los siguientes:
-
Tomar la fuente, destino y fechas introducidas pro el usuario.
-
Definir los datos por defecto para los parámetros SINCE y UNTIL
-
Crear una lista de ficheros afectados por la definición dada en los parámetros.
-
Copiar los ficheros.
El Macro correspondiente es:
.Key SOURCE/a,TO/k/a,SINCE/k,UNTIL/k
.def SINCE "01-Jan-80"
.def UNTIL "today"
ECHO "Copiando desde <source> a <to> desde <since> hasta <until>"
LIST>t:templist <source LFORMAT = "COPY %s%s TO <to> CLONE" SINCE <since> UPTO <until>
EXECUTE t:templist
DELETE t:templist
(No elimine los comandos ECHO y LIST, ya que aquí son necesarios; escriba cada una en una sola línea).
Para tomar las especificaciones del fichero, definidas por el usuario, el Macro emplea una técnica llamada sustitución de parámetros. Los parámetros del Macro que necesitan ser definidos por el usuario, deben comenzar con la directiva .Key, informando al AmigaDOS que dichos parámetros son definidos por el usuario o la información necesaria para trabajar sin estos. Los códigos /a que siguen a los nombres de los parámetros SOURCE y TO (destino), en la directiva .Key, informan al AmigaDOS de que el usuario debe suplir estos parámetros para el correcto funcionamiento de la Macro. El código /k después de los últimos tres parámetros informa al AmigaDOS de que el usuario debe escribir las palabras TO, SINCE y UNTIL cuando se estén sustituyendo dichos parámetros. Debido a que los parámetros SINCE y UNTIL pueden ser omitidos, el usuario debe escribir la palabra clave apropiada para identificar cada uno de los parámetros. La instrucción .def, define valores sustitutorios en caso de que alguno (o ambos) de los parámetros sea omitido.
El comando ECHO muestra un mensaje en pantalla informando al usuario de que el proceso de duplicación está a punto de comenzar. Los símbolos '<' y '>' del comando, identifican los parámetros especificados en la directiva .Key, e informa al AmigaDOS para sustituir la información que el usuario a definido, por el nombre del parámetro cuando se ejecuta el comando (en éste caso mostrándolo en la pantalla).
En el paso siguiente se utiliza una técnica llamada redicción de salida, y algunas opciones del comando LIST del AmigaDOS, para compilar una lista de ficheros para copiar. La redirección de salida, envía la salida producida por un comando, que normalmente aparece en pantalla, a un fichero de disco o periférico lógico. En el caso de DATECOPY, se utiliza la sintaxis >t:templist, para redireccionar la salida de LIST al fichero templist en el directorio t: (el Startup-Sequence estándar del sistema operativo 1.3, crea el directorio t automáticamente).
Ahora es cuando las opciones de LIST entran realmente en juego: LIST es el único que posee la habilidad de filtrar ficheros acorde con la fecha de creación, a través de las opciones SINCE y UPTO en el comando. En adición, la opción LFORMAT del comando LIST, le permite manejar la salida creada por LIST. En éste caso le permite al AmigaDOS trabajar con el comando COPY, tomando los datos de dicho fichero. Por último la última línea del Macro, tiene como misión el borrado del fichero creado mediante el comando LIST (t:templist).
2. Basado en el Tiempo: el Macro DATEDELETE.
Ahora, que ya podemos copiar ficheros basándonos en la fecha de creación, escribiremos un Macro similar; cuya función es borrar ficheros basándose en la fecha de creación. La sintaxis de DATEDELETE es:
DATEDELETE source SINCE date UNTIL date
Como el DATECOPY, se pueden omitir opciones SINCE y UNTIL, sin embargo al contrario que su primo duplicador, al comenzar su ejecución preguntará al usuario si desea borrar los ficheros. En caso de que se pulse la tecla 'y' y se pulse RETURN el proceso comenzará, en caso de que se pulse cualquier otra tecla, la ejecución de la Macro será abortada.
Los pasos de ejecución son los siguientes:
-
Toma la fuente y fechas del usuario.
-
Define los valores por defecto para los parámetros UNTIL y SINCE.
-
Crea una lista con los ficheros que siguen el criterio definido por el usuario.
-
Muestra los ficheros seleccionados para su borrado.
-
Pregunta al usuario para confirmar el proceso.
-
Borra los ficheros y sale, o simplemente sale.
Como puede observar, el listado del Macro DATEDELETE es bastante similar al anterior:
.Key SOURCE/a,SINCE/k,UNTIL/k
.def SINCE "01-Jan-80"
.def UNTIL "today"
LIST >t:templist <source LFORMAT="DELETE %s%s" SINCE <since> UPTO <until>
ASK "está seguro de querer borrar los ficheros?"
IF NOT WARN
ECHO "Operación de borrado abortado."
SKIP done
ENDIF
EXECUTE t:templist
LAB done
DELETE t:templist
El macro DATEDELETE ilustra dos nuevos conceptos. Primero usa el comando ASK para solicitar una entrada del usuario; entonces entra en funcionamiento los comandos IF...ENDIF, SKIP y LAB para alterar el flujo de ejecución dependiendo de la respuesta dada. El comando ASK, muestra un mensaje preguntando al usuario si realmente desea borrar los ficheros, y detiene la ejecución hasta recibir la respuesta. Si el usuario responde pulsando 'y' y RETURN, el AmigaDOS define el flag de condición acorde con WARN" (=5) el estado de la respuesta.
Usted puede testar dicho estado usando el comando del AmigaDOS IF...ENDIF, con la opción WARN. Si la condición IF resulta cierta, entonces la Macro ejecuta, la secuencia, las instrucciones entre IF y ENDIF; de otro modo se ignoran dichos comandos. En la Macro DATEDELETE si la condición NOTWARN es cierta (el usuario ha presionado otra tecla distinta de 'y') la Macro ejecuta el comando SKIP. SKIP informa al AmigaDOS de saltar la ejecución del programa hasta encontrar la etiqueta especificada (done) en una instrucción LAB. Si NOT wARN es falto (el usuario a presionado y), el AmigaDOS ejecuta el comando que sigue a ENDIF, en éste caso EXECUTE t:tempolist, con lo cual se borran los ficheros.
3. Reacciones de tiempo: La Macro WAITCOPY.
El ejemplo final de Macros, WAITCOPY, toma las ventanas de los mecanismos basados en el tiempo y su habilidad en aplicaciones multimedia. WAITCOPY permanece en el fondo y copia todos los ficheros especificados de un directorio o periférico deseado a intervalos de tiempo. Si desea utilizar el disco RAM: como periférico de almacenamiento, debido a su velocidad y conveniencia, deberá añadir cierto tipo de protección contra los niños y las visitas de los 'GURUS'. La sintaxis del comando es la siguiente:
WAITCOPY ram:#?.txt TO df0: 5
Con lo que se copiarán todos los ficheros en RAM: que terminen con el sufijo .txt a df0: cada cinco minutos.
Para detener WAITCOPY, seleccione la ventana CLI sobre la cual se encuentra funcionando y siga la secuencia CTRL-C, CTRL-D, para finalizar el Macro. Si no se especifica el intervalo de tiempo, la Macro asume por defecto un intervalo de 10 minutos.
La tarea es la siguiente:
-
Tomar la fuente, destino e intervalos de tiempo.
-
Esperar el período de tiempo denifido.
-
Copiar todos los ficheros desde la fuente hasta el destino.
-
Mostrar un mensaje cuando ocurra la última copia.
-
Volver al punto 2.
El listado de la Macro es el siguiente:
.Key SOURCE/a,TO/k,MINS
.def MINS "10"
LAB start
WAIT <min> MINS
COPY <source> TO <to> ALL CLONE QUIET
ECHO "Última operación de BackUp de <source> a <to>:"NOLINE
DATE
SKIP start BACK
Una de las funciones de WAITCOPY es el comando WAIT, cuya función es detener la ejecución de la macro durante un período de tiempo en minutos o segundos. En la macro WAITCOPY el comando LAB se encuentra antes de SKIP; sin embargo mediante el uso de la opción BACK en éste comando la búsqueda de la etiqueta correspondiente se realiza en el sentido contrario al anterior caso (Macro DATEDELETE).
Protegido para la ejecución
Después de grabar los anteriores Macros al directorio c: como ficheros ASCII, hay que realizar un último paso antes de que estos puedan ser utilizados como comandos estándar. Para crear sus Macros ejecutables, como el resto de los comandos del directorio c:, debe definir los bits de protección y ejecución con el comando PROTECT. Ejemplo:
PROTECT c:DATECOPY +SE
Simplemente debe repetir el proceso para cada uno de los otros Macros, y sus nuevos comandos se encontrarán listos para funcionar. |