如何解壓縮 zip 壓縮包並同時刪除剛剛解壓縮的檔案?

如何解壓縮 zip 壓縮包並同時刪除剛剛解壓縮的檔案?

我有一個很大的 zip 檔案 (101 GB),但沒有足夠的磁碟空間來直接複製 zip 檔案中的所有檔案。我想知道是否有一種方法可以提取 zip 檔案的內容,同時刪除已從存檔複製的檔案。因此,在操作結束時,我將獲得一個內部沒有任何內容的 zip 檔案和一個包含 zip 檔案所有內容的資料夾。我應該要提到的是,zip 檔案內有資料夾,這些資料夾內有圖片。如何將照片一張一張複製/刪除?我願意使用 Powershell、命令提示字元、C++ 和 Python。

答案1

根據修改後的程式碼使用 powershell 嘗試此操作 https://stackoverflow.com/questions/20269202/remove-files-from-zip-file-with-powershell。我根據你的需要修改了它。

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

答案2

我知道這很舊,但其中的資訊不正確。要存取 ZipFileExtensions,您需要先引用 System.IO.Compression.FileSystem。透過編寫一些 C# 程式碼,這會容易得多。

安迪

相關內容