如何在compress-archive中排除文件夹

时间:2016-12-10 23:40:22

标签: powershell

压缩这样的档案时,我可以以某种方式排除文件夹吗?

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

现在它始终将$destinationpath的整个文件夹结构保存到存档中,但由于存档位于同一文件夹中,因此它始终会压缩到新存档中,每次运行时都会使存档大小翻倍命令。

2 个答案:

答案 0 :(得分:9)

你可以使用Compress-Archive的-update选项。使用Get-ChildItem和Where

选择子目录 喜欢它:

$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

答案 1 :(得分:9)

获取要压缩的所有文件,不包括您不想压缩的文件和文件夹,然后将其传递给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