Muchas veces por razones laborales o de otra indóle necesitamos comprimir un archivo o carpeta de manera regular, de manera periódica, ya sea diaria o semanalmente con el programa winrar con el fin de crear un backup o respaldo de la carpeta de archivos con que se trabajó el día anterior..
Existe una forma de automatizar el proceso con un archivo .bat que llama a una función del programa winrar, lo que haremos a través de este código es automatizar el proceso de la comprensión, ya que con solo hacer clic en el botón el programa selecciona la carpeta configurada en el código, la guarda y le asigna el nombre que deseemos. (Todo esto se configura dentro del código).
El código con sus respectivos comentarios es el siguiente:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Private Declare Sub InitCommonControls Lib "comctl32" ()
Dim Dia, Mes, Anio As Integer
Dim Fecha_Hoy, Fecha_Ayer As Date
Dim Fecha, DiaSemana As String
'Parametros para elegir el método de compresión
'-m0 Almacenamiento Agrega ficheros al archivo sin compresión
'-m1 El más rápido El método más rápido (el que menos comprime)
'-m2 Rápido Método rápido de compresión
'-m3 Normal Método normal de compresión (predeterminado)
'-m4 Bueno Buen método de compresión (más compresión)
'-m5 El mejor El mejor método de compresión (el que más comprime, pero también el más lento)
'---------------------------------------------------------------------------------------------
'Código que se ejecuta cuando se presiona el botón
Private Sub cmdComprimir2014_Click()
If Dir(App.Path & "\archivo2014.bat") = "" Then 'Si no existe el archivo .bat lo creamos
Open "archivo2010.bat" For Append As #1
Print #1, "cd C:\Archivos de programa\WinRar"
Print #1, "winrar a -m2 C:\" & Fecha & "-2014.rar c:\Ruta Carpeta2014" 'Aca se coloca la ruta de la carpeta a comprimpir
Close #1
End If
Call Comprimir2014 'Llamo al procedimiento que comprime la carpeta
End Sub
Sub Comprimir2014()
Dim Ret As Long
Ret = ShellExecute(Me.hwnd, "Open", "archivo2014.bat", "", "", 1)
End Sub
Private Sub Form_Initialize()
'Estilo Xp
InitCommonControls
End Sub
Private Sub Form_Load()
Fecha_Hoy = Date 'Fecha actual
Select Case Weekday(Date, vbMonday)
Case 1
DiaSemana = "lunes"
Case 2
DiaSemana = "martes"
Case 3
DiaSemana = "miercoles"
Case 4
DiaSemana = "jueves"
Case 5
DiaSemana = "viernes"
Case 6
DiaSemana = "sabado"
Case 7
DiaSemana = "domingo"
End Select
Fecha_Ayer = Date - 1 'Fecha de día anterior (ayer)
If DiaSemana = "lunes" Then Fecha_Ayer = Date - 3
Dia = Day(Fecha_Ayer)
If Len(Dia) = 1 Then Dia = "0" & Dia
Mes = Month(Fecha_Ayer)
If Len(Mes) = 1 Then Mes = "0" & Mes
Anio = Year(Fecha_Ayer)
Fecha = Dia & Mes & Anio 'Concateno el día,mes y año
End Sub
La línea que se encarga de realizar el proceso de comprensión es la siguiente:
"winrar a -m2 C:\" & Fecha & "-2014.rar c:\Ruta Carpeta2014"
Si revisamos la ayuda del programa WinRar observamos que el comando 'winrar a' sirve para añadir archivos a una carpeta a ser comprimida.
el parámetro -m2 ('-m2 Rápido Método rápido de compresión), podemos escoger entre -m0 hasta -m5 tal cual como se muestra en los comentarios del código.
Luego se coloca la ruta donde se va a guardar el archivo comprimido. En este ejemplo el nombre del archivo lo guardo con la fecha del día anterior, por ejemplo, si estoy ejecutando el archivo hoy martes 10 de mayo de 2014, lo más probable es que deba comprimir el archivo del día anterior, asi que el nombre del archivo creado quedará con el nombre "09052014" y se guardará en la ruta "C:\".
El último parámetros es la ruta del archivo que se va a comprimir.
Espero que haya sido de utilidad y no duden en comentar susis inquietudes.
No hay comentarios:
Publicar un comentario