¿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)?

Respuestas:


29

Simplemente agregue > NUL:al final de su comando.


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.


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"

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.

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.


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á

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.