压缩这样的档案时,我可以以某种方式排除文件夹吗?
$compress = Compress-Archive $DestinationPath $DestinationPath\ARCHIVE\archiv-$DateTime.zip -CompressionLevel Fastest
现在它始终将$destinationpath
的整个文件夹结构保存到存档中,但由于存档位于同一文件夹中,因此它始终会压缩到新存档中,每次运行时都会使存档大小翻倍命令。
答案 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