MUko Informazio Sistemak

Bat files

Con la llegada de Windows a nuestras vidas, se perdió la costumbre de crear pequeños ficheros con comandos que nos permitían ejecutar programas sin recordar una larga lista de parámetros, o ejcutar una serie de operaciones una detrás de otra. Los que empezaron cacharreando con los PCs con los sistemas operativos DOS (MS-DOS, DR-DOS, …) sabrán a lo que me refiero. Y algunos de los que empezaron con Windows también, pero la mayoría pensará, ¿”DOS”? ¿qué es eso? ¿ficheros con comandos para ejecutar programas? (¡Dios! que sensación de contar historias del abuelo cebolleta)

En fin, supongo que sabréis que estoy hablando de los ficheros BATCH. Ficheros con extensión BAT (o CMD en Windows).

Aunque hoy en día estemos acostumbrados a mover el cursor con el ratón, abrir y cerrar ventanas y hacer click a diestro y siniestro, los ficheros BATCH pueden resultar útiles para automatizar ciertas cosas. Por ejemplo, un sistema de backup rudimentario.

@echo off
c:
cd c:\backups
mkdir %date:~0,4%%date:~5,2%
echo Comenzando copia…
xcopy /s c:\lo_que_quiero_guardar\*.* c:\backups\%date:~0,4%%date:~5,2%
echo Terminado.

Analicemos este ficherillo línea a línea:

@echo off
Podríamos no poner esto, pero así tengo la excusa para explicarlo :-). Si no se dice lo contrario, al ejecutar un fichero BAT se muestra en pantalla cada una de las líneas que se va a ejecutar. Con esta línea, conseguimos que no se muestren en pantalla esas líneas (echo off). Pero el “echo” no está deshabilitado en esa primera línea, por lo que necesitamos “silenciarlo”. Por eso se pone la “@”. Todas las líneas que comiencen con ese carácter, no se mostrarán en pantalla.
cd c:\backups
El comando “cd” cambia el directorio actual al que le pasemos como parámetro (en este caso c:\backups). Este comando no nos cambia de unidad, por lo que hemos tenido que hacerlo previamente (c:).
mkdir %date:~0,4%%date:~5,2%
El comando “mkdir” crea un directorio, que se llamará como el parámetro que le pasemos. En este caso, no es una ruta completa, por lo que creará el directorio dentro del que nos encontremos. %date% es una variable de entorno que contiene la fecha actual del sistema. Ejecutando “echo %date%”, podréis ver el valor que tiene. Con los modificadores que le he añadido, obtenemos el año (%date:~0,4%) y el mes (%date:~5,2%). En este caso, mi sistema tiene la fecha en euskara, y tendréis que comprobar los valores de los modificadores que sirvan para el vuestro. Por cierto, %date:~i,l% devuelve la parte de %date% que comienza en la posición “i”, y con una longitud “l”.
echo Comenzando copia…
En la primera línea hemos visto que “echo” sirve para que no se muestren en pantalla las operaciones que se van ejecutando, pero también lo podemos utilizar para escribir en pantalla un texto.
xcopy /s c:\lo_que_quiero_guardar\*.* c:\backups\%date:~0,4%%date:~5,2%
Esta línea es la que hace el backup propiamente dicho. El comando xcopy hará la copia del contenido del directorio c:\lo_que_quiero_guardar (incluyendo subdirectorios) en c:\backups\%date:~0,4%%date:~5,2%.
echo Terminado.
¿Necesito explicar lo que hace esta línea? 😉

Como veis, es un ejemplo sencillo, pero creando una tarea programada que se ejecute cada día 1 de mes, tendremos una copia mensual del contenido de una carpeta, sin que tengamos que preocuparnos de hacerla nosotros mismos.

Por cierto, si escribís “help” en una ventana de comandos, veréis que hay muchas más operaciones que se pueden utilizar en un fichero BAT. Y si queréis saber más sobre esos comandos, escribid “help comando” (por ejemplo, help xcopy), para ver todas las opciones de ese comando y una explicación de su propósito.

Espero que os haya hecho picar la curiosidad, y si os habéis quedado con ganas de más, puede que escriba otro post…

Exit mobile version