Dentro de nuestros sistemas de información es normal tener varios procesos por lotes (batch) que se ejecuten siempre a determinadas horas, un ejemplo típico son las copias de seguridad (backups). Si trabajáis en entornos Windows, es habitual programar pequeñas tareas en MS DOS Script (o CMD Script o Command Script), los famosos .bat.

Los scripts de MS DOS no tienen la potencia de los scripts de cualquier shell de UNIX, sin embargo para las tareas de mover/borrar/copiar ficheros resultan especialmente útiles por su sencillez.

Además de trabajos con ficheros se pueden hacer muchas más cosas con un script de MS DOS, pero resultan extremadamente complejas y poco potentes en comparación con otras soluciones para entornos Windows, por ejemplo el uso de WSH (Windows Script Host) o VBS (Visual Basic Script).

Una de las tareas más frecuentes que he realizado al crear un fichero/carpeta es la necesidad de incorporar la fecha de creación al nombre del fichero/carpeta. Para resolver este problema llevo años utilizando el siguiente script:

   1: rem ------------------------------------------------------
   2: rem Obtenemos la fecha en la variable de sistema %mifecha% 
        en formato yyyymmdd
   3: rem Obtenemos la variable %tmpfecha%, tiene espacios 
        en blanco.
   4: for /f  "usebackq tokens=1,2,3 delims=/" %%i in (`date /t`)  
        do set tmpfecha=%%k%%j%%i
   5: rem Limpiamos los espacios en blanco.
   6: for /f  "usebackq tokens=1,2,3 delims= " %%i in 
         (`echo %tmpfecha%`) do set mifecha=%%i%%j%%k
   7: rem ------------------------------------------------------

Primero obtenemos la fecha del sistema y le quitamos los caracteres “/”, después quitamos los caracteres en blanco que quedan. El formato de la fecha obtenida es yyyymmdd y para utilizarla sólo debemos hacer lo siguiente:

   1: copy mifichero.txt "mifichero_backup_%mifecha%.txt"

Be Sociable, Share!