¿Cómo descomprimir un archivo en Powershell?

Resuelto Uli Kunkel asked hace 9 años • 10 respuestas

Tengo un .ziparchivo y necesito descomprimir todo su contenido usando Powershell. Estoy haciendo esto pero no parece funcionar:

$shell = New-Object -ComObject shell.application
$zip = $shell.NameSpace("C:\a.zip")
MkDir("C:\a")
foreach ($item in $zip.items()) {
  $shell.Namespace("C:\a").CopyHere($item)
}

¿Qué ocurre? El directorio C:\atodavía está vacío.

Uli Kunkel avatar Jan 05 '15 00:01 Uli Kunkel
Aceptado

En PowerShell v5+, hay un comando Expandir-Archivar (así como Comprimir-Archivar) integrado:

Expand-Archive C:\a.zip -DestinationPath C:\a
Keith Hill avatar Jan 04 '2015 22:01 Keith Hill

A continuación se muestra una forma sencilla de utilizar ExtractToDirectory de System.IO.Compression.ZipFile :

Add-Type -AssemblyName System.IO.Compression.FileSystem
function Unzip
{
    param([string]$zipfile, [string]$outpath)

    [System.IO.Compression.ZipFile]::ExtractToDirectory($zipfile, $outpath)
}

Unzip "C:\a.zip" "C:\a"

Tenga en cuenta que si la carpeta de destino no existe, ExtractToDirectory la creará. Otras advertencias:

  • Los archivos existentes no se sobrescribirán y, en su lugar, desencadenarán una IOException.
  • Este método requiere al menos .NET Framework 4.5, disponible para Windows Vista y versiones posteriores.
  • Las rutas relativas no se resuelven según el directorio de trabajo actual; consulte ¿ Por qué los objetos .NET en PowerShell no usan el directorio actual?

Ver también:

  • Cómo comprimir y extraer archivos (Microsoft Docs)
Micky Balladelli avatar Jan 04 '2015 18:01 Micky Balladelli

En PowerShell v5.1 esto es ligeramente diferente en comparación con v5. Según la documentación de MS, debe tener un -Pathparámetro para especificar la ruta del archivo comprimido.

Expand-Archive -Path Draft.Zip -DestinationPath C:\Reference

O bien, esta puede ser una ruta real:

Expand-Archive -Path c:\Download\Draft.Zip -DestinationPath C:\Reference

Expandir-archivar documento

NIK avatar Oct 11 '2017 04:10 NIK

Utilice Expand-Archivecmdlet con uno de los conjuntos de parámetros:

Expand-Archive -LiteralPath C:\source\file.Zip -DestinationPath C:\destination
Expand-Archive -Path file.Zip -DestinationPath C:\destination
Saleh Rahimzadeh avatar May 24 '2019 08:05 Saleh Rahimzadeh