Caso o PowerShell seja uma opção ou alguém possa usá-lo, aqui está o que eu fiz, com base na idéia do findstr
responda.
& $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
}
Em operação normal, isso deixa apenas a linha "Tudo está ok". Se qualquer coisa incomum for impressa, ela permanecerá visível (exceto para linhas vazias, como elas aparecem com tanta freqüência na saída regular).
Isso é testado para saída de formato 7z. Outros formatos de arquivo podem produzir outras mensagens além de "Compressão". A extração provavelmente também produzirá mensagens diferentes. Mas você pode adaptar facilmente o filtro às suas necessidades.
Uma ideia mais complexa seria redirecionar toda a saída para um buffer e apenas imprimi-lo caso o comando retorne um código de saída de erro. Esse é um método que funciona com todos os comandos que permitem redirecionar e fornecer um código de saída de erro preciso.