Au cas où PowerShell serait une option ou que quelqu'un pourrait l'utiliser, voici ce que j'ai fait, en me basant sur l'idée du findstr
réponse.
& $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
}
En fonctionnement normal, il ne reste que la ligne "Tout va bien". Si quelque chose d'inhabituel est imprimé, il reste visible (à l'exception des lignes vides qui apparaissent si souvent dans la sortie normale).
Ceci est testé pour la sortie au format 7z. D'autres formats d'archives peuvent produire d'autres messages que "Compressing". L'extraction produira probablement aussi des messages différents. Mais vous pouvez facilement adapter le filtre à vos besoins.
Une idée plus complexe serait de rediriger toute la sortie vers un tampon et de ne l'imprimer que si la commande renvoie un code de sortie d'erreur. Cette méthode fonctionne avec toutes les commandes qui autorisent la redirection et fournissent un code de sortie d'erreur précis.