El propósito de este BAT es realizar la compresión de ciertos archivos que se encuentran en cierto directorio.
Pero además de hacer la compresión de archivos por medio del fichero bat, primero deseamos que se realice una copia de los archivos a comprimir, copia sobre la cual realmente trabajaremos (por si surgen problemas, mejor trabajar sobre copias, y mantener intactos los archivos originales).
El contenido del archivo BAT podría ser el siguiente:
robocopy D:\informes\ D:\informes\comprimidos /xf *.bat
for %%F in (*.csv) do rar a -ad -o- -r -m5 "%%F.rar" "%%F"
rem después borraremos los csv del subdirectorio destino (\comprimidos)
del *.csv
El resultado de este bat sería el siguiente:
IMPORTANTE: En nuestro caso el script .bat debe ejecutarse desde el subdirectorio destino (en este caso el subdirectorio \comprimidos) y hemos de copiar en dicho subdirectorio, los archivos RAR.exe y rar.Ing (disponibles en el directorio de instalación de WinRar), ya que la orden FOR con el comando rar se ejecutará en el subdirectorio donde se encuentre el .bat
Paso 1: Copia de los archivos que posteriormente comprimiremos:
Para copiar los archivos desde el Bat, podemos utilizar XCOPY o ROBOCOPY
Con XCOPY:
Si utilizamos XCOPY podríamos utilizar:
xcopy F:\testcomprimir2 F:\testcomprimir3 /E
/E incluye copia de subdirectorios
Con ROBOCOPY:
Si utilizamos ROBOCOPY podríamos utilizar:
robocopy F:\test F:\test2 /E /MaxAge:1 /xf *.bat
Explicación de estos parámetros de Robocopy:
/MaxAge:2 /MaxAge: . Especifica la edad máxima de archivo (excluye los archivos más viejos que n días o fecha)
/E Copia directorios y subdirectorios, incluidos los vacíos
xf excluye la copia de archivos mencionados (en este caso todos los archivos con extensión .bat)
XCOPY origen [destino] [/A | /M] [/D[:fecha]] [/P] [/S [/E]] [/V] [/W]
[/C] [/I] [/Q] [/F] [/L] [/G] [/H] [/R] [/T] [/U] [/K]
[/N] [/O] [/X] [/Y] [/-Y] [/Z] [/B]
[/EXCLUDE:archivo1[+archivo2][+archivo3]…]
Enlace de ayuda: Sintaxis de COPY, XCOPY y MOVE
COPY: copia archivos
XCOPY: copia archivos y el árbol de directorios.
MOVE: Mueve archivos y renombra archivos y directorios.
La utilización básica de XCOPY podría ser:
XCOPY source [destination]
xcopy F:\directorio1 F:\directorio2
Parámetros interesantes de XCOPY:
/D:m-d-y Copia archivos cambiados en la fecha proporcionada o posteriormente.
/EXCLUDE:file1[+file2][+file3]… Permite añadir una lista de archivos conteniendo ciertas cadenas. Cuando se encuentre esa cadena en un archivo, no se copiará.
/E Copia directorios y subdirectorios, incluso si están vacios.>/br>
/U Copia solo los archivos que ya existen en el directorio destino.
Si en la consola de comandos cmd ejecutamos: xcopy /?
veremos la ayuda del comando:
Copia datos de archivos.
Sintaxis básica de ROBOCOPY:
Robocopy <Source><Destination>[<File> […]] [<Options>]
Por ejemplo:
robocopy F:\test F:\test2 /E /xf *.bat
Algunas opciones de copia interesantes de ROBOCOPY:
/s Copia subdirectorios, pero no los vacíos.
/e igual que el comando anterior, pero incluye subdirectorios vacios.
/Move Mueve los archivos y directorios y los elimina después.
/xf : Puede incluir caracteres comodín (* y ?)
/XD : Excluye los directorios que coinciden con la ruta y nombres especificados.
/Xn : Excluye los archivos más recientes
/xo : Excluye los archivos más recientes.
/MaxAge: . Especifica la edad máxima de archivo (excluye los archivos más viejos que n días o fecha)
Enlace de ayuda sobre la Sintaxis de ROBOCOPY
A continuación vemos la ayuda de Robocopy. Pero es inmensa así que solamente muestro una pequeña parte…
En el BAT utilizaremos RAR para comprimir.
Para ello, como decíamos al principio del post, copiaremos el archivo Rar.exe y rar.Ing (disponibles en el directorio de instalación de Winrar) en el directorio desde el que ejecutaremos el archivo batch.
Uso: rar <orden> -<modificador 1> -<modificador N> <archivo> <ficheros…>
<@lista de ficheros…> <ruta_de_extracción\>
A : Agregar a un archivo
D: Eliminar un archivo
F: Actualizar los ficheros de un archivo.
M: Mover ficheros y carpetas a un archivo.
-ad : añadir el nombre de archivo a la carpeta destino.
-ag[formato] : generar un nombre de archivo usando la fecha y la hora actual.
-df : eliminar los archivos tras la compresión.
-ed : no añadir carpetas vacías.
-f : actualizar los ficheros.
-m : establecer el método de compresión. m5 es la máxima compresión.
-o[+|-] : establecer modo de sobreescritura
-o- No sobrescribir los ficheros existentes
-r : recorrer carpetas recursivamente
-r- : desactivar recursión
-u : actualizar los ficheros
-x : excluir el fichero especificado.
-ta : procesar ficheros modificados después de la fecha especificada
-tn : procesar los ficheros posteriores al tiempo especificado.
Enlace útil para ver todas las opciones de sintaxis de rar