¿Cómo deshabilitar la salida de 7-Zip?

34

Utilizo 7-Zip para comprimir archivos dentro de un archivo por lotes como este:

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

Obtuve el siguiente resultado:

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

¿Es posible deshabilitar esta salida (es decir, no quiero que se imprima nada)?

Misha Moroshko
fuente

Respuestas:

29

Simplemente agregue > NUL:al final de su comando.

Pausado hasta nuevo aviso.
fuente
1
¿Para qué sirve el colon?
Peter Mortensen
3
@PeterMortensen: en la consola de DOS y Windows, los nombres de dispositivos reservados, como NULpueden ser seguidos por dos puntos opcionales. Hasta donde sé, no realiza ninguna función real, pero sirve como un recordatorio visual de que es un dispositivo y es paralelo al uso de dos puntos después de una letra de unidad.
Pausado hasta nuevo aviso.
17

Puede usar el comando -bs para controlar dónde va la salida. Para detener cualquier cosa menos la salida de error, agregaría -bso0 -bsp0.

Evan
fuente
Esto es correcto, pero se introdujo en 7Zip versión 15.01 o posterior a 9.38beta Fuente: sourceforge.net/p/sevenzip/discussion/45797/thread/8a45fa74 El Synology DSM 6.1.x real incluye 7zip con la versión 9.20 y no tiene esa opción.
PeterCo
12

Se recomienda ver los mensajes de estado en el proceso. Para evitar mensajes largos, muestre solo confirmaciones:

...\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
fuente
Gracias por la findstrsolucion! Parece que puede acortar un poco esa llamada omitiendo /bo tanto \rel \<interior como el interior de las cadenas de búsqueda. Yo iría findstr /b /c:"Everything is Ok" /c:"Scanning" /c:"Creating archive"ya que no necesita expresiones regulares (la /ropción) aquí, /bya busca solo al comienzo de las cadenas.
Oliver
si desea usar mensajes de estado para verificar si el comando tuvo éxito, es mejor usar códigos de retorno ( 0para el éxito y otros que detallen lo que falló). Es más fácil en un script tomar decisiones basadas en estos valores que en los mensajes.
WoJ
1
Gran respuesta. Fui con ... | findstr /v /b /c:"Compressing "para deshacerme de la lista de archivos pero mantener los otros mensajes de estado.
Duncan Smart
5

Mejorando la respuesta de Bruno Dermario , también quería informar errores y poder verificarlos 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.
Ory Zaidenvorm
fuente
2

En caso de que PowerShell sea una opción o alguien pueda usarlo, esto es lo que hice, basado en la idea de la findstrrespuesta.

& $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 funcionamiento normal, esto deja solo la línea "Todo está bien". Si se imprime algo inusual, permanece visible (excepto las líneas vacías, ya que aparecen con tanta frecuencia en la salida normal).

Esto se prueba para la salida en formato 7z. Otros formatos de archivo pueden generar otros mensajes además de "Comprimir". La extracción probablemente también produzca diferentes mensajes. Pero puede adaptar fácilmente el filtro a sus necesidades.

Una idea más compleja sería redirigir toda la salida a un búfer y solo imprimirla en caso de que el comando devuelva un código de salida de error. Este es un método que funciona con todos los comandos que permiten redirigir y proporcionar un código de salida de error preciso.

ygoe
fuente
1

Compartiendo mi findstrsolución:

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

Entonces, la salida original de 14 líneas:


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

reducir a las 4 líneas:

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

solo reduce la salida, las advertencias y los errores van al sErr, por lo que aún los verá

yalov
fuente