&引用;捆绑;来自PowerShell的文件夹(例如,创建未压缩的zip)

&引用;捆绑;来自PowerShell的文件夹(例如,创建未压缩的zip),powershell,Powershell,我正在使用PowerShell每晚备份最后一天修改的所有文件 目标是创建一个未压缩的zip(或任何其他格式),使用PowerShell将备份文件夹中的所有内容分组到一个文件中 以下代码非常适合压缩,但速度太慢: function Add-Zip { param([string]$zipfilename) if(-not (test-path($zipfilename))) { set-content $zipfilename ("PK" + [char]

我正在使用PowerShell每晚备份最后一天修改的所有文件

目标是创建一个未压缩的zip(或任何其他格式),使用PowerShell将备份文件夹中的所有内容分组到一个文件中

以下代码非常适合压缩,但速度太慢:

function Add-Zip
{
    param([string]$zipfilename)

    if(-not (test-path($zipfilename)))
    {
        set-content $zipfilename ("PK" + [char]5 + [char]6 + ("$([char]0)" * 18)) 
        (dir $zipfilename).IsReadOnly = $false  
    }

    $shellApplication = new-object -com shell.application
    $zipPackage = $shellApplication.NameSpace($zipfilename)

    foreach($file in $input) 
    { 
        $zipPackage.CopyHere($file.FullName)
        Start-sleep -milliseconds 1000
        #500 milliseconds was too short.... 
    }
}
有什么想法吗


谢谢

我建议将powershell与命令行结合使用。7-Zip具有一个不允许压缩的

-mx0
有一个
Write-Tar
cmdlet,在这里可能有用。

借用到,我想到了:

function ZipFiles( $zipfilename, $sourcedir )
{
   [Reflection.Assembly]::LoadWithPartialName("System.IO.Compression.FileSystem")
   $compressionLevel = [System.IO.Compression.CompressionLevel]::NoCompression
   [System.IO.Compression.ZipFile]::CreateFromDirectory($sourcedir,
        $zipfilename, $compressionLevel, $false)
}
Eld还谈到了他的解决方案,该方案也适用于这里:

与Powershell 3和.NET 4.5配合使用的纯Powershell替代方案(如果可以使用):


与他的回答不同的是,他指定了
NoCompression
,而不是
Optimal

你选择了一条艰难的道路。为什么不使用任何可用的命令行工具呢?powershell的功能比我上面介绍的要多。它只用于在最后一天修改文件。对于像我这样懒惰的人,这里有完整的命令
7z a-tzip archive.zip*.jpg-mx0