Powershell 7zip检查文件完整性



我使用以下代码使用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 Files7-Zip7z.exe")) {throw "$env:Program Files (x86)7-Zip7z.exe needed"} 
set-alias sz "$env:ProgramFiles7-Zip7z.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 files7-zip7z" 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返回的文本。

感谢您的帮助。

行:

  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*'

这是从头开始的,但这两种方法中的一种应该有效。

最新更新