如果这个问题看起来很奇怪,我会提前道歉,这是我第一次尝试使用PowerShell处理类似的问题。
我有一个类似以下的目录结构:
DIR1/
bin/
obj/
d1-file1
d1-file2
DIR2/
bin/
obj/
d2-file1
d2-file2
DIR3/
bin/
obj/
d3-file1
d3-file2
我正试图用一组顶级和子级排除来压缩这个目录列表。例如,我想排除一个特定的顶级目录(如dir2),同时从最终结果集中排除特定的子目录(如bin、obj)。
我尝试了几种不同的方法,但不幸的是,当我遍历子目录时,compress archive命令将压缩子级别的项目,而不保留顶级目录结构。我希望在存档中保留顶级目录结构,同时也排除指定的子目录。
$entries = New-Object System.Collections.Generic.List[System.Object]
# Get initial directory listing
$dirlist = Get-ChildItem $solutionFileLocation -ad -Exclude "DIR2" | ForEach-Object { $_.FullName }
# Exclude bin and obj directories and add entry path to our zip entry list
foreach ($dir in $dirlist)
{
$sub = Get-ChildItem $dir -Exclude "bin", "obj" | ForEach-Object { $_.FullName }
foreach ($itm in $sub)
{
$entries.Add($itm)
}
}
Compress-Archive -LiteralPath $entries -CompressionLevel Optimal -DestinationPath "C:\Filename01212019.zip"
结果是一个包含以下内容的存档:
d1-file1
d1-file2
d3-file1
d3-file2
而不是期望的结果:
DIR1/
d1-file1
d1-file2
DIR3/
d3-file1
d3-file2