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…

5 iruzkin daude

Zurea gehitu
    • 2
      mkortabarria

      Eskerrik asko iruzkinagatik, agaldos.
      Efectivamente, hay mucho más en el scripting que los ficheros BAT, y dependiendo de la necesidad, se podría optar por uno o por otro lenguaje.
      En este caso, lo de las copias de seguridad ha sido una excusa para mostrar a los lectores que hay más cosas que ventanas y botones en los entornos Windows, y que ciertas tareas repetitivas se pueden automatizar.

  1. 3
    agaldos

    Aupa, eskerrik asko erantzunagatik.

    Así es, a veces creo que estáis muy orientados a ese SO en agonía que es Windows, y quería mencionar los shell scripts (bourne, Korn,..) y Perl, que son todavía muy demandados en el mercado de trabajo (a diferencia de los BAT files), sobre todo en grandes corporaciones que usan Unix/linux.

    venga, besarkadak eta aste bukaera ona izan.

  2. 4
    JokinAU

    Eta gaur egungo windows sistemetan gauza asko egin ditzakegu VBS(Visual Basic Script) erabiliz!
    Zoritxarrez, virus asko VBS erabiliz sortu zirenez(“I love you”) sistemak asko mugatu dira, baña oraindik OSO erabilgarria, PowerShell-en sartu gabe oraindik

    • 5
      mkortabarria

      Aupa JokinAU, aspaldiko.
      Arrazoirik ez duzu falta. VBS erabilita askoz gauza gehiago egin daitezke, baina programazio ezagutza minimo batzuk eduki behar dira, eta horrek jendea atzera bota dezake.
      Ni ere ez naiz sartu PowerShell-en munduan. Datorren urteko kudeaketa planean sartu beharko dut…

+ Iruzkin bat laga