Wie deaktiviere ich die Ausgabe von 7-Zip?

34

Ich benutze 7-Zip , um Dateien in einer Batch-Datei wie folgt zu komprimieren:

...\right_path\7z a output_file_name.zip file_to_be_compressed

Ich habe folgende Ausgabe erhalten:

7-Zip 4.65  Copyright (c) 1999-2009 Igor Pavlov  2009-02-03
Scanning

Creating archive output_file_name.zip

Compressing  file_to_be_compressed

Everything is Ok

Ist es möglich, diese Ausgabe zu deaktivieren (dh, ich möchte nicht, dass etwas gedruckt wird)?

Mischa Moroschko
quelle

Antworten:

29

Fügen Sie einfach > NUL:das Ende Ihres Befehls hinzu.

Bis auf weiteres angehalten.
quelle
1
Wofür ist der Doppelpunkt?
Peter Mortensen
3
@PeterMortensen: In der DOS- und Windows-Konsole können reservierte Gerätenamen, z. B. NUL, von einem optionalen Doppelpunkt gefolgt werden. Soweit ich weiß, führt es keine eigentliche Funktion aus, sondern dient als visuelle Erinnerung daran, dass es sich um ein Gerät handelt und die Verwendung eines Doppelpunkts nach einem Laufwerksbuchstaben entspricht.
Bis auf weiteres angehalten.
17

Mit dem Befehl -bs können Sie steuern, wohin die Ausgabe geht. Um alles außer Fehlerausgabe zu stoppen, würde ich hinzufügen -bso0 -bsp0.

Evan
quelle
Das ist richtig, aber in 7Zip Version 15.01 oder nach 9.38beta Quelle eingeführt: sourceforge.net/p/sevenzip/discussion/45797/thread/8a45fa74 Das tatsächliche Synology DSM 6.1.x enthält 7zip mit der Version 9.20 und hat keine solche Option.
PeterCo
12

Es wird dringend empfohlen, Statusmeldungen während des Vorgangs anzuzeigen. Um lange Nachrichten zu vermeiden, zeigen Sie nur Bestätigungen an:

...\right_path\7z a output_file_name.zip file_to_be_compressed | findstr /b /r /c:"\<Everything is Ok" /c:"\<Scanning" /c:"\<Creating archive"
Bruno Dermario
quelle
Danke für die findstrLösung! Es sieht so aus, als könnten Sie diesen Aufruf etwas verkürzen, indem Sie entweder die Suchzeichenfolge weglassen /boder sowohl \rdie \<Suchzeichenfolge als auch die Suchzeichenfolge innerhalb der Suchzeichenfolge. Ich würde mit gehen, findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive"da Sie hier keine regulären Ausdrücke (die /rOption) benötigen - /bsucht bereits nur am Anfang von Zeichenfolgen.
Oliver
Wenn Sie Statusmeldungen verwenden möchten, um zu überprüfen, ob der Befehl erfolgreich war, ist es besser, Rückkehrcodes zu verwenden ( 0für den Erfolg und andere, die genau angeben, was fehlgeschlagen ist). In einem Skript ist es einfacher, Entscheidungen zu treffen, die auf diesen Werten basieren, als auf Nachrichten.
WoJ
1
Gute Antwort. Ich ging mit ... | findstr /v /b /c:"Compressing ", um die Dateiliste loszuwerden, aber die anderen Statusmeldungen zu behalten.
Duncan Smart
5

Um die Antwort von Bruno Dermario zu verbessern , wollte ich auch Fehler melden und sie manuell überprüfen können.

...\right_path\7z a output_file_name.zip file_to_be_compressed > 7z_log.txt
type 7z_log.txt | findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive" /c:"Error"
echo.
echo (In case of Error check 7z_log.txt)
echo.
Ory Zaidenvorm
quelle
2

Falls PowerShell eine Option ist oder jemand sie verwenden könnte, habe ich Folgendes basierend auf der Idee der findstrAntwort getan .

& $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
}

Im normalen Betrieb bleibt nur die Zeile "Alles in Ordnung". Sollte etwas Ungewöhnliches gedruckt werden, bleibt es sichtbar (mit Ausnahme von Leerzeilen, wie sie so oft in der regulären Ausgabe erscheinen).

Dies wurde für die Ausgabe im 7z-Format getestet. Andere Archivformate können andere Meldungen als "Komprimieren" erzeugen. Das Extrahieren wird wahrscheinlich auch andere Nachrichten erzeugen. Sie können den Filter jedoch problemlos an Ihre Bedürfnisse anpassen.

Eine komplexere Idee wäre, alle Ausgaben in einen Puffer umzuleiten und nur dann zu drucken, wenn der Befehl einen Fehler-Exit-Code zurückgibt. Dies ist eine Methode, die mit allen Befehlen funktioniert, die das Umleiten ermöglichen und einen genauen Fehler-Exit-Code liefern.

ygoe
quelle
1

Meine findstrLösung teilen :

%ZIP% a -tzip %FILE% %Folder% | findstr /I "archive everything"

Also die ursprüngliche Ausgabe mit 14 Zeilen:


7-Zip 18.01 (x64) : Copyright (c) 1999-2018 Igor Pavlov : 2018-01-28

Scanning the drive:
4 folders, 13 files, 88957 bytes (87 KiB)

Creating archive: Releases\Archive.zip

Add new data to archive: 4 folders, 13 files, 88957 bytes (87 KiB)


Files read from disk: 13
Archive size: 33913 bytes (34 KiB)
Everything is Ok

schrumpfe auf die 4 Zeilen:

Creating archive: Releases\Archive.zip
Add new data to archive: 4 folders, 13 files, 88957 bytes (87 KiB)
Archive size: 33912 bytes (34 KiB)
Everything is Ok

es verkleinert nur den sOut, Warnungen und Fehler gehen an den sErr, so dass Sie sie immer noch sehen werden

yalov
quelle