Actualizado el 14-01-2007
versión para imprimir
macros con DOSkey
Minimizando esfuerzos ...
Una macro es un conjunto de una o más de comandos que puedes ejecutar a traves de DOSKey, llamandolos mediante una breve clave. Son parecidas a los archivos .bat (bach files) aunque mas limitadas. Las macros de DOSKey se almacenan en memoria con lo cual su ejecución es ultrarápida si bien con la contrapartida de una disminución de memoria libre, y de su volatilidad. Las macros duran lo que dura tu sesión de ventana de comandos (aunque como veremos puedes dejarlas grabadas en un archivo).
Sintaxis
Para crear una macro escribes:
doskey nombre_de_la_macro=comando
asi, por ejemplo, si escribes:
doskey h=doskey /history
te bastará escribir h en la linea de comandos y pulsar enter para obtener la lista del historial de comandos. Se trata solo de un ejemplo básico, evidentemente hay cosas mas interesantes que iremos viendo, por ejemplo:
doskey mc=md $1$tcd $1
Esta macro crearía un directorio, y cambiaría al mismo. Para usarla bastaria
teclear mc minuevodirectorio. Fíjate que podríamos elegir nosotros
el nombre al vuelo y que la macro ejecuta dos comandos distintos
(mc y cd). ¿Como?, con las teclas especiales que a continuación te
listo:
| Teclas de macro | Significado |
| $G o $g | Redirecciona la salida de datos. Se usa para enviar el resultado de la operación a un dispositivo o archivo distinto de la pantalla. Equivalente al carácter > de DOS. |
| $G$G o $g$g | Añade la salida de datos al final de un archivo (en lugar de sobreescribirlo). Equivalente al signo de DOS >>. |
| $L o $l | Redirecciona entrada de datos. Se utiliza para que nuestra macro lea datos de un dispositivo o archivo, en lugar de desde el teclado. Equivalente a <. |
| $B o $b | Envia el resultado de la macro a otro comando para su ejecución. Equivalente a |. |
| $T o $t | Separa comandos y permite su ejecución secuencial. Equivalente a & |
| $$ | Especifica el signo $ |
| $1 a $9 | Representan cualquier información que debe ser introducida por el usuario de la macro. |
Si recordamos la ultima macro que escribimos (doskey mc=md $1$tcd
$1), y cotejamos lo escrito con la tabla anterior, vemos que el nombre de
la macro es mc, y que al invocarla, ejecutará el comando md (crear
directorio), con el nombre $1, es decir, con el nombre que el usuario le
pase en tiempo de ejecución. Seguidamente ($t) ejecutará el comando cd
$1 cambiando a dicho nuevo directorio.
Vamos a ver otro ejemplo. Supongamos que queremos mover un archivo (o grupo) a otro directorio. Podriamos escribir la siguiente macro:
doskey mv=copy $1 $2 $t del $1
Y la usariamos tecleando en la linea de comandos mv archivoamover
destino.
Al invocar la macro, se ejecuta el comando copy
sobre archivoamover (parámetro $1) copiándolo a su
destino (parámetro $2) y a continuación ($T se
borra el original. Aqui tienes un volcado de pantalla de un uso real de esta
macro, que copia el archivo prueba.txt desde el directorio de trabajo al
subdirectorio temp y despues borra el original:
C:>mv prueba.txt tempprueba.txt
C:>copy prueba.txt tempprueba.txt
1 archivos copiados
C:> del prueba.txt
C:>
Para ejecutar esta misma macro sobre un grupo de archivos, de nombre similar, bastaría especificarlo utilizando comodines.
Finalmente podemos volcar nuestras macros a un archivo de texto, para usarlas en cualquier momento:
c:>doskey /macros > mis_macros.bat
guarda todas las macros en memoria al archivo mis_macros.bat
c:>doskey /file = mis_macros.bat
carga las macros existentes en ese archivo en memoria.
Como es un
archivo de texto, puedes editarlo y escribir directamente las macros ahi en
lugar de en la ventana de DOS y luego cargarlas en memoria.