En nuestro día a día con Powershell seguramente tendremos que gestionar tareas o scripts en los que intervengan archivos comprimidos ya sea para trabajar con archivos que recibimos o para por ejemplo crear y gestionar logs o copias de seguridad. Vamos a ver en el Cybertruco de hoy cómo podemos gestionar estos sin tener que abandonar la consola de Powershell.
Comprimir archivos
Para esta tarea de comprimir archivos utilizaremos el cmdlet Compress-Archive. Para su utilización básica simplemente necesitaremos el nombre del archivo a comprimir que lo indicaremos en el parámetro -Path, e indicar el destino en el parámetro -DestinationPath como vemos a continuación
Compress-Archive -Path fichero.txt -DestinationPath ficherocomprimido.zip
Si queremos comprimir múltiples ficheros a la vez, simplemente habremos de separar sus nombres con comas, como vemos en el siguiente ejemplo.
Compress-Archive -Path fichero.txt,fichero2.txt,fichero3.pdf -DestinationPath ficherocomprimido.zip
Comprimir todos los archivos de un directorio
En este caso usaremos el asterisco como wildcard para indicar los ficheros a comprimir, como vemos a continuación para comprimir todos los archivos de c:\carpeta
Compress-Archive -Path 'C:\carpeta\*' -DestinationPath ficherocomprimido.zip
Comprimir todos los archivos de un cierto tipo
Igual que en el caso anterior, usaremos el asterisco para por ejemplo comprimir todos los archivos txt de la misma carpeta.
Compress-Archive -Path 'c:\carpeta\*.txt' -DestinationPath ficherocomprimido.zip
Añadir ficheros a un archivo comprimido
Podemos siempre añadir más archivos a un archivo comprimido utilizando el parámetro “Update”, en el siguiente ejemplo añadimos el archivo “extra.txt” al fichero comprimido.
Compress-Archive -Update -Path 'c:\carpeta\extra.txt' -DestinationPath ficherocomprimido.zip
Niveles de compresión
Por defecto, y de la manera que hemos usado los comandos anteriores, los archivos se comprimen utilizando el nivel de compresión “Optimal”, pero podemos usar cualquiera de los siguientes:
- Optimal - Nivel por defecto, sería el mayor nivel de compresión que se puede obtener
- Fastest - Compresión más rápida pero menos efectiva
- NoCompression - Sin compresión
Para indicar este nivel, en caso que lo necesitemos bastará con añadir el parámetro CompressionLevel al final como podemos ver en el siguiente ejemplo
Compress-Archive -Path 'c:\carpeta\*.txt' -DestinationPath ficherocomprimido.zip -CompressionLevel Fastest
Descomprimir ficheros
En este caso utilizaremos el cmdlet Expand-Archive, como veis la estructura del mismo es muy sencilla y similar a lo que hemos estado viendo.
Expand-Archive -Path ficherocomprimido.zip -DestinationPath C:\carpeta\test
Podemos añadir el parámetro “Force” para evitar las confirmaciones tal que
Expand-Archive -Path ficherocomprimido.zip -DestinationPath C:\carpeta\test -Force
Espero que os sea de utilidad, saludos