DEJE QUE EXCEL HAGA EL TRABAJO SUCIO

Descomprimir múltiples archivos .zip en una carpeta

Hace poco descargué el material complementario de un libro que compré. El material complementario venía en numerosos archivos .zip, uno por cápitulo. Ciertamente se pueden seleccionar todos los archivos y manteniendo el botón derecho del ratón presionado, arrastrarlos a la ubicación en donde quiero descomprimirlos todos y seleccionar "Extraer...", para extraerlos todos allí. Sin embargo, pensé que podría haber una forma de automatizar esto y extraer todos los archivos .zip con un archivo batch o un script de VB (vbs).


Al final me incliné por la segunda opción, siguiendo el mismo método que ya había mencionado alguna vez para descomprimir archivos .zip en VBA: Descomprimir un archivo por medio de VBA.

Basta con copiar el siguiente Script en el bloc de notas (u otro editor de texto plano) y guardarlo con extensión .vbs. El script se deberá guardar en la misma ubicación en donde se encuentran los archivos .zip a extraer y creará una nueva carpeta para cada archivo .zip que se extraerá, extrayendo allí el contenido.

Option Explicit

Dim oApp, FSO, FLD, FIL
Dim strFolderOrigen, strFolderDestino

'  Obtiene la ruta en donde se encuentran los archivos .zip
strFolderOrigen = Replace(WScript.ScriptFullName, WScript.ScriptName, "")

'  Se crean los objetos con los que se van a trabajar
Set FSO = CreateObject("Scripting.FileSystemObject")
Set oAPP = CreateObject("Shell.Application")

'  Se carga el folder en el que se encuentran los .zip
Set FLD = FSO.GetFolder(strFolderOrigen)

'  Recorre cada uno de los archivos .zip
For Each FIL In FLD.Files

 '  Si el nombre del archivo termina en .zip,
 '  se pasa a trabajar con él.
    If Right(FIL.Name, 4) = ".zip" Then
 
  '  Se guarda el nombre para la carpeta de destino
  strFolderDestino = Replace(FIL.Path, ".zip", "")
  
  '  Se crea la carpeta de destino, en donde se descomprimirá
  '  el archivo .zip. Este folder tiene el mismo nombre que el .zip
  FSO.CreateFolder strFolderDestino
  
  '  Se usa un objecto Shell.Application para descomprimir el archivo
  '  en la nueva carpeta creada
  oAPP.Namespace(strFolderDestino).CopyHere oAPP.Namespace(FIL.Path).items
  
  '  Se borra el archivo .zip
  FIL.Delete
    End If
 
Next

Quizás usted conozca una manera más sencilla de automatizar este proceso, si es así, por favor compártala en los comentarios.

0 comentarios:

Publicar un comentario en la entrada