大きな 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# コードを少し記述すれば、はるかに簡単に実行できます。
アンディ