2016-04-04 20 views
0

次のコードを使用して、7zipを使用していくつかのファイルを圧縮しています。Powershell 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" 
} 

私はそれをzip形式で圧縮された後、ファイルの整合性をチェックし、私はそれを開くことができることを確認する必要があります。これらはかなり大きいファイルで、解凍する必要はありません。確認するだけです。

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によって返されるテキストをどうすればいいのか分かりません。

何か助けていただければ幸いです。

+0

私は、最も簡単な方法は7-Zipの終了コードをチェックすることだと思います。 *すべてがok *の場合はゼロになります。 – PetSerAl

答えて

2

ライン:

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

を解析する必要があり、これらの2つのうちの1つが機能するはずです。

+0

最初のオプションは素晴らしい仕事でした。本当にありがとう。 Muchoは高く評価しました。 – gnixon14

+0

問題ないです。喜んで助けてください。 – majkinetor

関連する問題