Come disabilitare l'output di 7-Zip?


34

Uso 7-Zip per comprimere i file all'interno di un file batch come questo:

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

Ho ottenuto il seguente output:

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

È possibile disabilitare questo output (ovvero, non voglio che venga stampato nulla)?

Risposte:


29

Aggiungi solo > NUL:alla fine del tuo comando.


1
A cosa servono i due punti?
Peter Mortensen,

3
@PeterMortensen: nella console DOS e Windows, i nomi dei dispositivi riservati come NULpossono essere seguiti da due punti opzionali. Per quanto ne so, non svolge alcuna funzione reale, ma funge da promemoria visivo del fatto che è un dispositivo e mette in parallelo l'uso di due punti dopo una lettera di unità.
In pausa fino a nuovo avviso.

17

È possibile utilizzare il comando -bs per controllare dove va l'output. Per interrompere qualsiasi cosa tranne l'output di errore, aggiungerei -bso0 -bsp0.


Questo è corretto, ma introdotto in 7Zip versione 15.01 o successiva a 9.38beta Fonte: sourceforge.net/p/sevenzip/discussion/45797/thread/8a45fa74 L'attuale Synology DSM 6.1.x include 7zip con la versione 9.20 e non ha tale opzione.
PeterCo,

12

Si consiglia vivamente di visualizzare i messaggi di stato nel processo. Per evitare messaggi lunghi, visualizzare solo le conferme:

...\right_path\7z a output_file_name.zip file_to_be_compressed | findstr /b /r /c:"\<Everything is Ok" /c:"\<Scanning" /c:"\<Creating archive"

Grazie per la findstrsoluzione! Sembra che si può in qualche modo ridurre la chiamata da un'omissione /bo entrambi il \re il \<dentro le stringhe di ricerca. Vorrei andare findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive"dal momento che non hai bisogno di espressioni regolari (l' /ropzione) qui - /bgià ricerche solo all'inizio delle stringhe.
Oliver,

se si desidera utilizzare i messaggi di stato per verificare se il comando ha avuto 0esito positivo, è meglio utilizzare i codici di ritorno ( per il successo e altri che descrivono in dettaglio ciò che è fallito). In uno script è più facile prendere decisioni basate su questi valori piuttosto che sui messaggi.
WoJ,

1
Bella risposta. Sono andato con ... | findstr /v /b /c:"Compressing "per sbarazzarsi dell'elenco dei file ma mantenere gli altri messaggi di stato.
Duncan Smart,

5

Migliorando la risposta di Bruno Dermario , volevo anche segnalare errori ed essere in grado di controllarli manualmente.

...\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.

2

Nel caso in cui PowerShell sia un'opzione o qualcuno potrebbe usarla, ecco cosa ho fatto, in base all'idea della findstrrisposta.

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

Durante il normale funzionamento, ciò lascia solo la riga "Tutto ok". Se viene stampato qualcosa di insolito, rimane visibile (ad eccezione delle righe vuote come appaiono così spesso nell'output normale).

Questo è testato per l'output in formato 7z. Altri formati di archivio possono produrre messaggi diversi da "Compressione". L'estrazione probabilmente produrrà anche messaggi diversi. Ma puoi adattare facilmente il filtro alle tue esigenze.

Un'idea più complessa sarebbe quella di reindirizzare tutto l'output su un buffer e stamparlo solo nel caso in cui il comando restituisca un codice di uscita dell'errore. Questo è un metodo che funziona con tutti i comandi che consentono il reindirizzamento e forniscono un codice di uscita dell'errore accurato.


1

Condividere la mia findstrsoluzione:

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

Quindi l'output originale di 14 righe:


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

riduci alle 4 righe:

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

si restringe solo l'uscita, avvertimenti ed errori vanno all'errore, quindi li vedrai comunque

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.