【发布时间】:2015-12-23 00:00:48
【问题描述】:
我编写了一个简单的 powershell 脚本,它获取一组文件并使用 ZipFile .NET Framework 类将它们压缩成一个 zip 文件。我想做的是验证文件压缩没有问题。
我可以为 zip 文件本身创建一个哈希值,但我不确定如何对存档中的每个单独文件执行此操作,或者将每个未压缩文件与文件的压缩版本进行比较。这是我的脚本的压缩部分。
$FileList | ForEach-Object -Begin {
$Zip = [System.IO.Compression.ZipFile]::Open("Destination.Zip","Create")
} -Process {
[System.IO.Compression.ZipFileExtensions]::CreateEntryFromFile($Zip,$_.FullName,$_.Name,"optimal")
} -End {
$Zip.Dispose()
}
我知道压缩部分有效,但最终目标是验证每个文件并在验证失败时重做该文件。然后删除未压缩的文件。
要运行的系统只有powershell v3,没有安装第三方压缩工具。如果可能的话,我想坚持下去。
【问题讨论】:
-
压缩文件夹A,解压到文件夹B,比较A和B,如果OK就删除A和B。
-
虽然我确实认为这是一个可能的解决方案,但这些都是压缩率约为 99% 的大型日志文件。解压缩它们会导致服务器上的额外负载,我希望尽可能避免。
-
我可以想象。寻找一种没有这个的测试方法......骚扰谷歌:)
-
我做到了。我没有发现有人提到在任何地方验证压缩文件。我也尝试了一些 technet 文章和 microsoft 的脚本专家网站。那里也没有答案。
标签: hash zip compression .net-4.5 powershell-3.0