System.IO.Compression.ZipFile多个目录

时间:2016-03-31 05:01:43

标签: powershell zip compression

如果我为$destination设置一个数组,我可以使用它,但这会为所选的每个目录创建一个单独的.zip。

如何选择每个目录并将其压缩到单个目标而不是多个目标文件?这是我的代码:

$type = "*.txt"
$destination = "LogsBackup.zip"

Add-Type -Assembly "System.IO.Compression.FileSystem" ;

$_sources = dir c:\Logs\$type -Recurse | Select Directory -Unique | 
            Out-GridView -OutputMode Multiple |
            Select @{Name="Path";Expression={$_.Directory -As [string]}} 

for ($i = 0; $i -lt $_sources.Length; $i++)
{
    $compressionLevel = [System.IO.Compression.CompressionLevel]::Optimal
    [System.IO.Compression.ZipFile]::CreateFromDirectory( $_sources[$i].Path , $destination)
}

我希望保留Out-GridView选项,如果它是单个目录或多个目录,我可以选择它们并将它们存储为数组。

1 个答案:

答案 0 :(得分:0)

-update参数将确保您使用从out-gridview中选择的新条目更新现有存档。

$destination = "C:\logs\LogsBackup.zip"

#Create a single archive
Get-ChildItem -Path C:\logs -Filter *.txt -Recurse | 
    Select @{Name="Path";Expression={$_.DirectoryName}} -Unique  | 
        Out-GridView -PassThru | Compress-Archive -CompressionLevel Optimal -DestinationPath $destination -Update