PowerShellがオプションであるか、誰かがそれを使用することができる場合は、次のような考えに基づいて私がしたことがあります。 findstr
回答。
& $sevenZipBin a "$archiveFile" * | where {
$_ -notmatch "^7-Zip " -and `
$_ -notmatch "^Scanning$" -and `
$_ -notmatch "^Creating archive " -and `
$_ -notmatch "^\s*$" -and `
$_ -notmatch "^Compressing "
}
if (-not $?)
{
# Show some error message and possibly exit
}
通常の操作では、これで「すべては問題ありません」という行だけが残ります。異常なものが印刷されても、表示されたままになります(通常の出力では頻繁に現れる空行を除く)。
これは7zフォーマットの出力でテストされています。他のアーカイブフォーマットは "圧縮"以外のメッセージを生成するかもしれません。抽出すると、異なるメッセージも生成される可能性があります。しかし、あなたはあなたのニーズにフィルターを簡単に合わせることができます。
より複雑なアイデアは、すべての出力をバッファにリダイレクトし、コマンドがエラー終了コードを返した場合にのみそれを表示することです。これは、リダイレクトを可能にし、正確なエラー終了コードを提供するすべてのコマンドで機能する方法です。