ZIP アーカイブを解凍し、同時に解凍したファイルを削除するにはどうすればよいでしょうか?

ZIP アーカイブを解凍し、同時に解凍したファイルを削除するにはどうすればよいでしょうか?

大きな zip ファイル (101 GB) があり、zip アーカイブ内のすべてのファイルを直接コピーするのに十分なディスク領域がありません。zip ファイルの内容を抽出し、同時にアーカイブからコピーされたファイルを削除する方法があるかどうか知りたいです。つまり、アクションの最後には、中身が何も入っていない zip ファイルと、zip ファイルのすべての内容を含むフォルダーが作成されます。zip ファイルにはフォルダーがあり、そのフォルダー内に写真があることを述べておきます。写真を 1 枚ずつコピー/削除するにはどうすればよいでしょうか。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# コードを少し記述すれば、はるかに簡単に実行できます。

アンディ

関連情報