【问题标题】:Powershell - Verifying contents of zip filesPowershell - 验证 zip 文件的内容
【发布时间】: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


【解决方案1】:

我猜你最直接的方法是使用 7-Zip。

您可以在 PowerShell 中使用本机命令。

您可以找到使用-t 开关here 的示例。

获取 CLI,add 7-Zip folder to your path 并运行例如:

7z t archive.zip

【讨论】:

  • 那么没有第三方系统就没有办法做到这一点吗?我本可以编写代码来使用 7zip 命令创建存档,但能够找到一种无需安装任何东西的方法。这才是真正的目标。
猜你喜欢
  • 2018-05-16
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2021-01-09
  • 2016-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多