【问题标题】:Powershell 7zip check file integrityPowershell 7zip 检查文件完整性
【发布时间】:2016-04-05 01:56:23
【问题描述】:

我正在使用以下代码使用 7zip 压缩一些文件。

$filePath = "c:\test"
$txt = Get-ChildItem -Recurse -Path $filePath | Where-Object { $_.Extension -eq ".txt" }
$limit = (Get-Date).AddDays(-30)

if (-not (test-path "$env:C:\Program Files\7-Zip\7z.exe")) {throw "$env:Program Files (x86)\7-Zip\7z.exe needed"} 
set-alias sz "$env:ProgramFiles\7-Zip\7z.exe"

Get-ChildItem -Path $filePath -Recurse -Force | Where-Object { !$_.PSIsContainer -and $_.CreationTime -lt $limit } | Remove-Item -Force

foreach ($file in $txt) { 
$name = $file.name 
$directory = $file.DirectoryName 
$zipfile = $name.Replace(".txt",".zip") 
sz a -mx=9 "$directory\$zipfile" "$directory\$name" 
}

压缩后我需要检查文件的完整性并确保我可以打开它。这些是一些相当大的文件,我不需要解压缩它们,只需检查它们即可。我找到了这个命令:

7z t somearchive.zip

但它返回的只是这样的:

"c:\program files\7-zip\7z" t somefile.7z

 7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18

Processing archive: douglas.cx.txt.7z

Testing     somefile.txt

Everything is Ok

Size:       761
Compressed: 492

一旦我检查了文件,它将被移动到另一个我可以处理的文件夹中。只是不确定如何处理 7zip 返回的文本。

感谢任何帮助。

【问题讨论】:

  • 我认为,最简单的方法是检查 7-Zip 退出代码。如果一切正常,它应该为零。

标签: powershell 7zip


【解决方案1】:

行:

  sz a -mx=9 "$directory\$zipfile" "$directory\$name" 

应该是:

  sz a -mx=9 "$directory\$zipfile" "$directory\$name"  | out-null
  $ok = $LASTEXITCODE -eq 0

或者如果 sz 没有返回退出代码,你必须解析文本

  sz a -mx=9 "$directory\$zipfile" "$directory\$name"  |  set out
  $ok = $out -like '*Everything is Ok*'

这是从头开始的,但是这两个中的一个应该可以工作。

【讨论】:

  • 第一个选项效果很好。非常感谢。 Mucho 表示赞赏。
  • 没问题,很乐意提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-07-05
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-10
  • 2014-11-12
相关资源
最近更新 更多