zip 아카이브의 압축을 풀고 동시에 방금 압축을 푼 파일을 삭제하려면 어떻게 해야 합니까?

zip 아카이브의 압축을 풀고 동시에 방금 압축을 푼 파일을 삭제하려면 어떻게 해야 합니까?

대용량 zip 파일(101GB)이 있는데 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# 코드를 작성하면 이 작업을 훨씬 쉽게 수행할 수 있습니다.

앤디

관련 정보