Wie entpacke ich ZIP-Archive und lösche gleichzeitig die gerade entpackten Dateien?

Wie entpacke ich ZIP-Archive und lösche gleichzeitig die gerade entpackten Dateien?

Ich habe eine große Zip-Datei (101 GB) und nicht genügend Speicherplatz, um alle Dateien im Zip-Archiv direkt zu kopieren. Ich habe mich gefragt, ob es eine Möglichkeit gibt, den Inhalt der Zip-Datei zu extrahieren und gleichzeitig die Dateien zu löschen, die bereits aus dem Archiv kopiert wurden. Am Ende der Aktion hätte ich also eine Zip-Datei ohne Inhalt und einen Ordner mit dem gesamten Inhalt der Zip-Datei. Ich sollte erwähnen, dass die Zip-Datei Ordner mit Bildern enthält. Wie kann ich die Fotos einzeln kopieren/löschen? Ich kann Powershell, Eingabeaufforderung, C++ und Python verwenden.

Antwort1

Versuchen Sie dies mit Powershell basierend auf geändertem Code von https://stackoverflow.com/questions/20269202/dateien-aus-zip-datei-mit-powershell-entfernen. Ich habe es Ihren Anforderungen entsprechend geändert.

[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()

Antwort2

Ich weiß, das ist ziemlich alt, aber die darin enthaltenen Informationen sind falsch. Um zu ZipFileExtensions zu gelangen, benötigen Sie zunächst einen Verweis auf System.IO.Compression.FileSystem. Dies wäre viel einfacher, wenn Sie ein wenig C#-Code schreiben würden.

Andy

verwandte Informationen