programing

압축 보관에서 폴더를 제외하려면 어떻게 합니까?

lastmoon 2023. 8. 15. 11:26
반응형

압축 보관에서 폴더를 제외하려면 어떻게 합니까?

이렇게 아카이브를 압축할 때 폴더를 제외할 수 있습니까?

$compress = Compress-Archive $DestinationPath $DestinationPath\ARCHIVE\archiv-$DateTime.zip -CompressionLevel Fastest

이제 항상 전체 폴더 구조를 저장합니다.$destinationpath아카이브로 이동하지만 아카이브가 동일한 폴더에 있기 때문에 항상 새 아카이브로 압축되므로 명령을 실행할 때마다 아카이브 크기가 두 배로 커집니다.

압축하지 않을 파일 및 폴더를 제외한 압축할 모든 파일을 가져온 다음 cmdlet에 전달합니다.

# target path
$path = "C:\temp"
# construct archive path
$DateTime = (Get-Date -Format "yyyyMMddHHmmss")
$destination = Join-Path $path "ARCHIVE\archive-$DateTime.zip"
# exclusion rules. Can use wild cards (*)
$exclude = @("_*.config","ARCHIVE","*.zip")
# get files to compress using exclusion filer
$files = Get-ChildItem -Path $path -Exclude $exclude
# compress
Compress-Archive -Path $files -DestinationPath $destination -CompressionLevel Fastest

압축-보관의 -update 옵션을 사용할 수 있습니다.Get-ChildItem 및 위치를 사용하여 하위 항목

좋아요:

$YourDirToCompress="c:\temp"
$ZipFileResult="C:\temp10\result.zip"
$DirToExclude=@("test", "test1", "test2")

Get-ChildItem $YourDirToCompress -Directory  | 
           where { $_.Name -notin $DirToExclude} | 
              Compress-Archive -DestinationPath $ZipFileResult -Update

저는 이 질문이 다소 오래된 것이라는 것을 알지만, 여기에 제 해결책을 게시하고 싶었습니다.이 솔루션은 저에게 효과가 있었고 다른 사람이 같은 문제를 겪는 데 도움이 되기를 바랍니다.

저는 이전 답변에서 아이디어를 가져와서 조금 발전시켰습니다.

따라서 일반적으로 루트 디렉터리에 있는 파일과 디렉터리에 대한 두 개의 목록을 만드는 것이 필요합니다( 생략할 디렉터리는 제외).그런 다음 이 두 목록을 연결하여 Compress-Archive cmdlet의 -Path 매개 변수에 넣어야 합니다.

Voila! 그것은 우리가 필요로 하는 모든 파일과 디렉토리로 .zip 아카이브를 만들어 디렉토리 구조를 보존합니다.

$files = Get-ChildItem -Path /RootDir -File 

$directories = Get-ChildItem -Path /RootDir -Recurse -Directory -Exclude DirToExclude

Compress-Archive -Path $($files + $directories) -DestinationPath Archive.zip

언급URL : https://stackoverflow.com/questions/41081488/how-do-i-exclude-a-folder-in-compress-archive

반응형