¿Cómo descomprimo archivos zip y elimino los archivos que acabo de descomprimir al mismo tiempo?

¿Cómo descomprimo archivos zip y elimino los archivos que acabo de descomprimir al mismo tiempo?

Tengo un archivo zip grande (101 GB) y no tengo suficiente espacio en disco para copiar directamente todos los archivos dentro del archivo zip. Me preguntaba si había alguna manera de extraer el contenido del archivo zip y al mismo tiempo eliminar los archivos que ya se copiaron del archivo. Entonces, al final de la acción, tendría un archivo zip sin nada dentro y una carpeta con todo el contenido del archivo zip. Debo mencionar que el archivo zip tiene carpetas dentro con imágenes dentro de esas carpetas. ¿Cómo puedo copiar/eliminar las fotos una por una? Estoy abierto a usar Powershell, símbolo del sistema, C++ y Python.

Respuesta1

Pruebe esto usando powershell basado en el código modificado de https://stackoverflow.com/questions/20269202/remove-files-from-zip-file-with-powershell. Lo modifiqué según tus necesidades.

[Reflection.Assembly]::LoadWithPartialName("System.IO.Compression")
$zipfile = "Zip file path here"
$OutFolder = "Output folder here"
$stream = New-Object IO.FileStream($zipfile, [IO.FileMode]::Open)
$mode   = [IO.Compression.ZipArchiveMode]::Update
$zip    = New-Object IO.Compression.ZipArchive($stream, $mode)
$zip.Entries | Foreach {
   $ToDel = $_  
  [System.IO.Compression.ZipFileExtensions]::ExtractToFile($_,"$($OutFolder)\$($_.Name)",$true)
$ToDel.Delete()
}
$zip.Dispose()
$stream.Close()
$stream.Dispose()

Respuesta2

Sé que esto es bastante antiguo, pero la información que contiene es incorrecta. Para acceder a ZipFileExtensions, primero debe tener una referencia a System.IO.Compression.FileSystem. Esto sería mucho más fácil de hacer escribiendo un poco de código C#.

andy

información relacionada