Compress-Archive
Crea un archivo ZIP comprimido a partir de archivos y directorios especificados.
Sintaxis
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Update
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
[-Path] <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Force
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Update
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
-Force
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Compress-Archive
-LiteralPath <String[]>
[-DestinationPath] <String>
[-CompressionLevel <String>]
[-PassThru]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
El Compress-Archive
cmdlet crea un archivo comprimido o comprimido a partir de uno o varios archivos o directorios especificados. Un archivo empaqueta varios archivos, con compresión opcional, en un único archivo comprimido para facilitar la distribución y el almacenamiento. Un archivo de archivo se puede comprimir mediante el algoritmo de compresión especificado por el parámetro CompressionLevel .
El Compress-Archive
cmdlet usa la API System.IO.Compression.ZipArchive para comprimir archivos.
La API limita el tamaño máximo de archivo a 2 GB. La API de .NET funciona con archivos que se ajustan a la especificación oficial del formato de archivo ZIP de PKWARE Inc. Para obtener más información, consulte System.IO.Compression.ZipArchive.
Nota:
El Compress-Archive
cmdlet omite los archivos y carpetas ocultos al crear o actualizar el archivo de archivo. En las máquinas que no son Windows, esto incluye archivos y carpetas con el nombre que comienza con el carácter de punto (.
).
Para asegurarse de que los archivos y carpetas ocultos se comprimen en el archivo, use la API de .NET en su lugar.
Algunos ejemplos usan la expansión para reducir la longitud de línea de los ejemplos de código. Para obtener más información, consulte about_Splatting.
Ejemplos
Ejemplo 1: Comprimir archivos para crear un archivo de archivo
En este ejemplo se comprimen los archivos de directorios diferentes y se crea un archivo de archivo. Un carácter comodín se usa para obtener todos los archivos con una extensión de archivo determinada. No hay ninguna estructura de directorios en el archivo de archivo porque la ruta de acceso solo especifica nombres de archivo.
$compress = @{
Path = "C:\Reference\Draftdoc.docx", "C:\Reference\Images\*.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
El parámetro Path acepta nombres de archivo y nombres de archivo específicos con caracteres comodín, *.vsd
. La ruta de acceso usa una lista separada por comas para obtener archivos de directorios diferentes. El nivel de compresión es más rápido para reducir el tiempo de procesamiento. El parámetro DestinationPath especifica la ubicación del Draft.zip
archivo. El Draft.zip
archivo contiene Draftdoc.docx
y todos los archivos con una .vsd
extensión.
Ejemplo 2: Comprimir archivos mediante literalPath
En este ejemplo se comprimen archivos con nombre específicos y se crea un nuevo archivo de archivo. No hay ninguna estructura de directorios en el archivo de archivo porque la ruta de acceso solo especifica nombres de archivo.
$compress = @{
LiteralPath= "C:\Reference\Draft Doc.docx", "C:\Reference\Images\diagram2.vsd"
CompressionLevel = "Fastest"
DestinationPath = "C:\Archives\Draft.zip"
}
Compress-Archive @compress
La ruta de acceso absoluta y los nombres de archivo se usan porque el parámetro LiteralPath no acepta caracteres comodín. La ruta de acceso usa una lista separada por comas para obtener archivos de directorios diferentes. El nivel de compresión es más rápido para reducir el tiempo de procesamiento. El parámetro DestinationPath especifica la ubicación del Draft.zip
archivo. El Draft.zip
archivo solo contiene Draftdoc.docx
y diagram2.vsd
.
Ejemplo 3: Comprimir un directorio que incluya el directorio raíz
En este ejemplo se comprime un directorio y se crea un archivo de archivo que incluye el directorio raíz y todos sus archivos y subdirectorios. El archivo de archivo tiene una estructura de directorio porque la ruta de acceso especifica un directorio raíz.
Compress-Archive -Path C:\Reference -DestinationPath C:\Archives\Draft.zip
Compress-Archive
usa el parámetro Path para especificar el directorio raíz, C:\Reference
. El parámetro DestinationPath especifica la ubicación del archivo de archivo. El Draft.zip
archivo incluye el Reference
directorio raíz y todos sus archivos y subdirectorios.
Ejemplo 4: Comprimir un directorio que excluye el directorio raíz
En este ejemplo se comprime un directorio y se crea un archivo de archivo que excluye el directorio raíz porque path usa un carácter comodín asterisco (*
). El archivo contiene una estructura de directorios que contiene los archivos y subdirectorios del directorio raíz.
Compress-Archive -Path C:\Reference\* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
usa el parámetro Path para especificar el directorio raíz, C:\Reference
con un carácter comodín asterisco (*
). El parámetro DestinationPath especifica la ubicación del archivo de archivo. El Draft.zip
archivo contiene los archivos y subdirectorios del directorio raíz. El Reference
directorio raíz se excluye del archivo.
Ejemplo 5: Comprimir solo los archivos de un directorio raíz
En este ejemplo solo se comprimen los archivos de un directorio raíz y se crea un archivo de archivo. No hay ninguna estructura de directorios en el archivo porque solo se comprimen los archivos.
Compress-Archive -Path C:\Reference\*.* -DestinationPath C:\Archives\Draft.zip
Compress-Archive
usa el parámetro Path para especificar el directorio raíz, C:\Reference
con un carácter comodín star-dot-star (*.*
). El parámetro DestinationPath especifica la ubicación del archivo de archivo. El Draft.zip
archivo solo contiene los Reference
archivos del directorio raíz y se excluye el directorio raíz.
Ejemplo 6: Uso de la canalización para archivar archivos
En este ejemplo se envían archivos a la canalización para crear un archivo. No hay ninguna estructura de directorios en el archivo de archivo porque la ruta de acceso solo especifica nombres de archivo.
Get-ChildItem -Path C:\Reference\Afile.txt, C:\Reference\Images\Bfile.txt |
Compress-Archive -DestinationPath C:\Archives\PipelineFiles.zip
Get-ChildItem
usa el parámetro Path para especificar dos archivos de directorios diferentes. Cada archivo se representa mediante un objeto FileInfo y se envía la canalización a Compress-Archive
.
Los dos archivos especificados se archivan en PipelineFiles.zip
.
Ejemplo 7: Uso de la canalización para archivar un directorio
En este ejemplo se envía un directorio hacia abajo de la canalización para crear un archivo. Los archivos se envían como objetos FileInfo y directorios como objetos DirectoryInfo . La estructura de directorios del archivo no incluye el directorio raíz, pero sus archivos y subdirectorios se incluyen en el archivo.
Get-ChildItem -Path C:\LogFiles | Compress-Archive -DestinationPath C:\Archives\PipelineDir.zip
Get-ChildItem
usa el parámetro Path para especificar el C:\LogFiles
directorio raíz. Cada objeto FileInfo y DirectoryInfo se envía a la canalización.
Compress-Archive
agrega cada objeto al PipelineDir.zip
archivo. El parámetro Path no se especifica porque los objetos de canalización se reciben en la posición del parámetro 0.
Ejemplo 8: Cómo puede afectar la recursividad a los archivos
En este ejemplo se muestra cómo la recursividad puede duplicar archivos en el archivo. Por ejemplo, si usa Get-ChildItem
con el parámetro Recurse . A medida que se procesan los procesos de recursividad, cada objeto FileInfo y DirectoryInfo se envía a la canalización y se agrega al archivo.
Get-ChildItem -Path C:\TestLog -Recurse |
Compress-Archive -DestinationPath C:\Archives\PipelineRecurse.zip
El C:\TestLog
directorio no contiene ningún archivo. Contiene un subdirectorio denominado testsub
que contiene el testlog.txt
archivo.
Get-ChildItem
usa el parámetro Path para especificar el directorio raíz, C:\TestLog
. El parámetro Recurse procesa los archivos y directorios. Se crea un objeto DirectoryInfo para testsub
y un objeto testlog.txt
FileInfo .
Cada objeto se envía por la canalización a Compress-Archive
. DestinationPath especifica la ubicación del archivo de archivo. El parámetro Path no se especifica porque los objetos de canalización se reciben en la posición del parámetro 0.
En el resumen siguiente se describe el PipelineRecurse.zip
contenido del archivo que contiene un archivo duplicado:
- El objeto DirectoryInfo crea el
testsub
directorio y contiene eltestlog.txt
archivo , que refleja la estructura de directorios original. - El objeto FileInfo crea un duplicado
testlog.txt
en la raíz del archivo. El archivo duplicado se crea porque la recursividad envió un objeto de archivo aCompress-Archive
. Este comportamiento se espera porque cada objeto enviado hacia abajo de la canalización se agrega al archivo.
Ejemplo 9: Actualización de un archivo de archivo existente
En este ejemplo se actualiza un archivo de archivo existente, Draft.zip
, en el C:\Archives
directorio . En este ejemplo, el archivo de archivo existente contiene el directorio raíz y sus archivos y subdirectorios.
Compress-Archive -Path C:\Reference -Update -DestinationPath C:\Archives\Draft.zip
El comando se actualiza Draft.zip
con versiones más recientes de los archivos existentes en el C:\Reference
directorio y sus subdirectorios. Además, los nuevos archivos que se agregaron a C:\Reference
o a sus subdirectorios se incluyen en el archivo actualizado Draft.zip
.
Parámetros
-CompressionLevel
Especifica la cantidad de compresión que se va a aplicar al crear el archivo de archivo. La compresión más rápida requiere menos tiempo para crear el archivo, pero puede dar lugar a tamaños de archivo más grandes.
Si no se especifica este parámetro, el comando usa el valor predeterminado, Optimal.
A continuación se muestran los valores aceptables para este parámetro:
- Más rápido. Use el método de compresión más rápido disponible para reducir el tiempo de procesamiento. La compresión más rápida puede dar lugar a tamaños de archivo más grandes.
- NoCompression. No comprime los archivos de origen.
- Óptimo. El tiempo de procesamiento depende del tamaño del archivo.
Tipo: | String |
Valores aceptados: | Optimal, NoCompression, Fastest |
Posición: | Named |
Valor predeterminado: | Optimal |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Confirm
Le solicita su confirmación antes de ejecutar el cmdlet.
Tipo: | SwitchParameter |
Alias: | cf |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-DestinationPath
Este parámetro es necesario y especifica la ruta de acceso al archivo de salida de archivo. DestinationPath debe incluir el nombre del archivo comprimido y la ruta de acceso absoluta o relativa al archivo comprimido.
Si el nombre de archivo de DestinationPath no tiene una .zip
extensión de nombre de archivo, el cmdlet agrega la extensión de .zip
nombre de archivo.
Tipo: | String |
Posición: | 1 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Force
Use este parámetro para sobrescribir un archivo de archivo existente.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-LiteralPath
Especifica la ruta de acceso o las rutas de acceso a los archivos que desea agregar al archivo comprimido de archivo. A diferencia del parámetro Path , el valor de LiteralPath se usa exactamente como se escribe. Ninguno de los caracteres se interpreta como caracteres comodín. Si la ruta de acceso incluye caracteres de escape, incluya cada carácter de escape entre comillas simples para indicar a PowerShell que no interprete ningún carácter como secuencias de escape. Para especificar varias rutas de acceso e incluir archivos en varias ubicaciones del archivo comprimido de salida, use comas para separar las rutas de acceso.
Tipo: | String[] |
Alias: | PSPath |
Posición: | Named |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | False |
-PassThru
Hace que el cmdlet produzca un objeto de archivo que represente el archivo de archivo creado.
Este parámetro se introdujo en PowerShell 6.0.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-Path
Especifica la ruta de acceso o las rutas de acceso a los archivos que desea agregar al archivo comprimido de archivo. Para especificar varias rutas de acceso e incluir archivos en varias ubicaciones, use comas para separar las rutas de acceso.
Este parámetro acepta caracteres comodín. Los caracteres comodín permiten agregar todos los archivos de un directorio al archivo de archivo.
El uso de caracteres comodín con un directorio raíz afecta al contenido del archivo:
- Para crear un archivo que incluya el directorio raíz y todos sus archivos y subdirectorios, especifique el directorio raíz en la ruta de acceso sin caracteres comodín. Por ejemplo:
-Path C:\Reference
- Para crear un archivo que excluya el directorio raíz, pero comprima todos sus archivos y subdirectorios, use el carácter comodín asterisco (
*
). Por ejemplo:-Path C:\Reference\*
- Para crear un archivo que solo comprima los archivos en el directorio raíz, use el carácter comodín star-dot-star (
*.*
). Los subdirectorios de la raíz no se incluyen en el archivo. Por ejemplo:-Path C:\Reference\*.*
Tipo: | String[] |
Posición: | 0 |
Valor predeterminado: | None |
Requerido: | True |
Aceptar entrada de canalización: | True |
Aceptar caracteres comodín: | True |
-Update
Actualiza el archivo especificado reemplazando las versiones anteriores del archivo por versiones de archivo más recientes que tienen los mismos nombres. También puede agregar este parámetro para agregar archivos a un archivo existente.
Tipo: | SwitchParameter |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | True |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
-WhatIf
Muestra lo que sucedería si se ejecutara el cmdlet. El cmdlet no se ejecuta.
Tipo: | SwitchParameter |
Alias: | wi |
Posición: | Named |
Valor predeterminado: | False |
Requerido: | False |
Aceptar entrada de canalización: | False |
Aceptar caracteres comodín: | False |
Entradas
Puede canalizar una cadena que contenga una ruta de acceso a uno o varios archivos.
Salidas
None
De forma predeterminada, este cmdlet no devuelve ninguna salida.
Cuando se usa el parámetro PassThru , este cmdlet devuelve un objeto FileInfo .
Notas
El uso de la recursividad y el envío de objetos hacia abajo de la canalización puede duplicar archivos en el archivo. Por ejemplo, si usa Get-ChildItem
con el parámetro Recurse , cada objeto FileInfo y DirectoryInfo que se envía a la canalización se agrega al archivo.
El Compress-Archive
cmdlet usa la codificación UTF-8. Otras herramientas de archivo ZIP pueden usar un esquema de codificación diferente. Al extraer archivos con nombres de archivo que no se almacenan mediante codificación UTF-8, Expand-Archive
usa el valor sin procesar que se encuentra en el archivo. Esto puede dar lugar a un nombre de archivo diferente del nombre de archivo de origen almacenado en el archivo.