Autor Tema: Zipear un archivo.  (Leído 5850 veces)

0 Usuarios y 1 Visitante están viendo este tema.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Zipear un archivo.
« en: Abril 25, 2012, 04:12:19 pm »
Estoy probando para zipear un archivo usando el código que adjunto que encontré en la web del Guille. Funciona bien cuando tengo el archivo a zipear en la ruta del proyecto pero no logro darle la ruta del archivo que este en otro carpeta.

Proyecto

Este es el codigo que modifique para zipear:
Código: (VB) [Seleccionar]
Dim NombreFicheroNormal As String
Dim Resultado As Long
Dim intContadorFicheros As Integer

Dim FuncionesZip As ZIPUSERFUNCTIONS
Dim OpcionesZip As ZPOPT
Dim NombresFicherosZip As ZIPnames
FuncionesZip.DLLComment = DevolverDireccionMemoria(AddressOf FuncionParaProcesarComentarios)
FuncionesZip.DLLPassword = DevolverDireccionMemoria(AddressOf FuncionParaProcesarPassword)
FuncionesZip.DLLPrnt = DevolverDireccionMemoria(AddressOf FuncionParaProcesarMensajes)
FuncionesZip.DLLService = DevolverDireccionMemoria(AddressOf FuncionParaProcesarServicios)

'For intContadorFicheros = 0 To File1.ListCount
'    NombresFicherosZip.s(intContadorFicheros) = File1.List(intContadorFicheros)
'Next
'YO SOLO QUIERO ZIPEAR EL PRIMERO DE LA LISTA DEL CONTROL FILE1 QUE EN MI CASO
'TAMBIÉN ESTOY USANDO ESE CONTROL PERO SOLO ME INTERESA EL PRIMERO.
'EL FILE SE LLENA CON EL CONTENIDO QUE TENGO EN LA CARPETA C:\SoftX\Respaldo\

NombreFicheroNormal = "C:\SoftX\" & Mid(File1.List(0), 1, Len(File1.List(0)) - 4) 'Para tener el puro nombre del archivo
NombresFicherosZip.s(0) = NombreFicheroNormal & ".FBK"

Resultado = ZpInit(FuncionesZip)
Resultado = ZpSetOptions(OpcionesZip)
Resultado = ZpArchive(0, "C:\SoftX\Respaldo\Zipeados\" & NombreFicheroNormal & ".Zip", NombresFicherosZip)

Estoy queriendo poner la aplicación que zipea digamos en una carpeta X, leer de una carpeta Y el archivo para zipear y el archivo zipeado mandarlo a una carpeta Z y me trabo en mandarle el archivo que quiero zipear que se encuentra en otra carpeta.
Debo decir que siempre sera de la misma carpeta pero por temas que no vienen al caso narrar no debo poner la aplicacion que zipea en la misma carpeta de donde leo los archivos.

Espero haberme explicado debidamente, muchas gracias.

RESUMEN POR SIACA (un ejemplo):
En la carpeta C:\SoftX\Respaldo\ tengo archivos backups de base de datos que son de esta forma: Archivo1.FBK
En la carpeta C:\SoftX\Respaldo\Zipeados\ Quiero poner por ejemplo el archivo zipeado de Archivo1.FBK, osea deberá quedar Archivo1.ZIP

Este aplicativo que zipeara digamos por ejemplo que estará en  C:\SoftX\


Gracias.
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Zipear un archivo.
« Respuesta #1 en: Abril 25, 2012, 04:19:22 pm »
Debes agregar en las Referencias Microsoft Scripting Runtime

Código: (VB) [Seleccionar]
Private Sub Command1_Click()
   
    Dim Resultado As Long
    Dim intContadorFicheros As Integer
   
    Dim FuncionesZip As ZIPUSERFUNCTIONS
    Dim OpcionesZip As ZPOPT
    Dim NombresFicherosZip As ZIPnames
   
    Dim RutaArchivo As String
    Dim RutaDestino As String
   
    FuncionesZip.DLLComment = DevolverDireccionMemoria(AddressOf FuncionParaProcesarComentarios)
    FuncionesZip.DLLPassword = DevolverDireccionMemoria(AddressOf FuncionParaProcesarPassword)
    FuncionesZip.DLLPrnt = DevolverDireccionMemoria(AddressOf FuncionParaProcesarMensajes)
    FuncionesZip.DLLService = DevolverDireccionMemoria(AddressOf FuncionParaProcesarServicios)
   
    RutaArchivo = "C:\carpeta\azipear\"
    RutaDestino = "C:\carpeta\zipeado\"
       
    Set fso = New FileSystemObject
    Set fold = fso.GetFolder(RutaArchivo)
   
    I = 0
   
    For Each fil In fold.Files
        NombresFicherosZip.s(I) = fil.Path
        I = I + 1
    Next
   
    Resultado = ZpInit(FuncionesZip)
    Resultado = ZpSetOptions(OpcionesZip)
    Resultado = ZpArchive(I, RutaDestino & "\" & TxtNombreZip.Text & ".Zip", NombresFicherosZip)

End Sub
« última modificación: Abril 25, 2012, 04:59:29 pm por E N T E R »
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Zipear un archivo.
« Respuesta #2 en: Abril 25, 2012, 07:46:01 pm »
Gracias Enter, voy a probarlo.
Para un archivo especifico ya no tendria que usar esto no?
Código: (VB) [Seleccionar]
For Each fil In fold.Files
    NombresFicherosZip.s(I) = fil.Path
    I = I + 1
Next
Porque entiendo que eso es para zipear varios archivos y yo solo quiero zipear uno, es decir todos los dias se generara un archivo, ese archivo quiero zipearlo, moverlo a otra carpeta, luego borrare el archivo y al dia siguiente se generará un nuevo archivo y ese nuevo y unico archivo volver a zipearlo. Logicamente el nombre del archivo esta compuesto por la fecha y la hora.
 Entonces sino uso eso ya que alli bastara con esto
Código: (VB) [Seleccionar]
NombreFicheroNormal = "C:\SoftX\" & Mid(File1.List(0), 1, Len(File1.List(0)) - 4)
NombresFicherosZip.s(0) = NombreFicheroNormal & ".FBK"

En el control File1 ya tengo cargado el nombre del archivo, aunque no se indica la ruta y por eso mi confusion, voy a ensayar lo tuyo a ver que me resulta.

Gracias

P.D: Doc, la referencia creo que es para crear carpeta ¿o me equivoco? las carpetas ya las creadas. Sino es eso entonces es para recorrer una carpeta, pero no necesito hacerlo porque ya se el archivo que quiero zipear lo que no logro es direccionarlo... seguiré viendo.
« última modificación: Abril 25, 2012, 08:04:17 pm por YAcosta »
Me encuentras en YAcosta.com

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Zipear un archivo.
« Respuesta #3 en: Abril 25, 2012, 08:11:18 pm »
------------------------------------

Bueno, ando medio torpe, no logro descubrir porque no se crea el zip siendo que el proyecto original si lo hace, yo solo quiero zipear un unico archivo que por otros metodos ya se su nombre, en el adjunto pongo la estructura de las carpetas, de donde tomo el archivo y adonde quiero que vaya.
Ojala me puedan echar una mano, muchas gracias

ProyectoZ
Me encuentras en YAcosta.com

E N T E R

  • Petabyte
  • ******
  • Mensajes: 1062
  • Reputación: +57/-13
  • www.enterpy.com
    • Ver Perfil
    • www.enterpy.com
Re:Zipear un archivo.
« Respuesta #4 en: Abril 25, 2012, 08:37:27 pm »
No funciona para descarar tu proyecto.

Error (404)
We can't find the page you're looking for. Check out our Help Center and forums for help, or head back to home.


Creo que no se puede indicar solo un archivo sino que lo que existe en un directorio completamente.

Saludos...
CIBER GOOGLE - CONCEPCIÓN PARAGUAY
www.enterpy.com
Primera regla de la programacion, para que vas a hacerlo complicado si lo puedes hacer sencillo

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Zipear un archivo.
« Respuesta #5 en: Abril 25, 2012, 09:30:49 pm »
El descarado proyecto (jeje) no bajaba porque no había terminado de subir.

Ya lo tengo resulto con esto que Enter me paso, asi que el problema ya se supero, pero igual me queda la duda de porque el otro proyecto no funcionaba.
Me encuentras en YAcosta.com

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:Zipear un archivo.
« Respuesta #6 en: Abril 25, 2012, 10:14:42 pm »
no encontré lo que te había dicho por msn, pero checkea esto: http://www.recursosvisualbasic.com.ar/htm/ocx-componentes-activex-dll/15-dll-para-comprimir-y-descomprimir-zip.htm

de ser posible no uses ocx, 99% son una porquería y un problema para el OS.

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Zipear un archivo.
« Respuesta #7 en: Abril 25, 2012, 10:33:22 pm »
Esas son las dlls que estoy usando y las que justamente me dan el inconveniente que no pude resolver.
Me encuentras en YAcosta.com

xkiz ™

  • Moderador Global
  • Gigabyte
  • *****
  • Mensajes: 283
  • Reputación: +30/-11
    • Ver Perfil
    • xkiz ™
Re:Zipear un archivo.
« Respuesta #8 en: Abril 25, 2012, 10:37:09 pm »
yo me acuerdo de haber viste algo referido a zipear con las librerias standars de Windows echo por @Leandro o @cobein, pero no lo pude encontrar...

YAcosta

  • Moderador Global
  • Exabyte
  • *****
  • Mensajes: 2853
  • Reputación: +160/-38
  • Daddy de Qüentas y QüeryFull
    • Ver Perfil
    • Personal
Re:Zipear un archivo.
« Respuesta #9 en: Abril 25, 2012, 10:48:33 pm »
Acabo de encontrarlo, esta dentro del proyecto Proyecto RAT (parte 1) le estoy revisando para extirpar solo esa parte pero aun no la chunto como extraer solo esa funcionalidad.

Código: (VB) [Seleccionar]
....
If IsPathZip Then
    AppendMenu hMenu, MF_STRING Or IIf(bRead, 0, MF_GRAYED), 16, "Descomprimir"
Else
    AppendMenu hMenu, MF_STRING Or IIf(bRead, 0, MF_GRAYED), 15, "Comprimir en Zip"
End If
Me encuentras en YAcosta.com