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