portable para p7zip mac español descargar 7zip

p7zip - descargar 7zip para windows 10 64 bits



Extracción de un archivo 7-Zip "silenciosamente"-opción de línea de comando (10)

Quiero extraer un archivo 7-Zip en un script de Python. Funciona bien, excepto que escupe los detalles de extracción (que es enorme en mi caso).

¿Hay una manera de evitar esta información detallada al extraer? No encontré ninguna opción de línea de comandos "silenciosa" para 7z.exe .

Mi comando es

7z.exe -o some_dir x some_archive.7z


7-zip no tiene tal opción. Además, las líneas impresas en cada archivo comprimido deben mostrarse en el mismo lugar sin nueva línea, borrando la anterior, lo que tiene un efecto genial. Desafortunadamente, en algunos contextos (Jenkins ...) produjo varias líneas flood️ inundando la consola.

NUL (windows) es tal vez una solución.

7-zip.exe -o some_dir x some_archive.7z>NUL


7zip no tiene un modo explícito "silencioso" o "silencioso" para la extracción de la línea de comando.

Una posibilidad sería generar el proceso hijo con popen, por lo que su salida regresará al padre para ser procesado / mostrado (si se desea) o bien ignorado por completo (cree su objeto popen con stdout = PIPE y stderr = PIPE para poder para recuperar la salida del niño).

De lo contrario, intenta hacer esto:

%COMSPEC% /c "%ProgramFiles%/7-Zip/7z.exe" ...


Acabo de encontrar esto cuando busco lo mismo, ¡pero lo resolví yo mismo! Suponiendo que el comando se procesa con Windows / DOS, una solución más simple es cambiar su comando a:

7z.exe -o some_dir x some_archive.7z > nul

Es decir, dirigir la salida a un archivo nulo en lugar de a la pantalla.

O puede canalizar la salida al comando "buscar" de DOS para generar solo datos específicos, es decir,

7z.exe -o some_dir x some_archive.7z | FIND "ing archive"

Esto solo resultaría en la siguiente salida.

Creando archivo some_archive.7z

o

Actualizando archivo some_archive.7z **

Mi solución final fue cambiar el comando a

... some_archive.7z | FIND /V "ing "

Note el espacio doble después de ''ing''. Esto dio lugar a la siguiente salida.

7-Zip 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18 Scanning Updating some_archive.7z Everything is Ok

Esto elimina el procesamiento de archivos individuales, pero produce un resumen de la operación general, independientemente del tipo de operación.


Al examinar la fuente de 7zip encontré un interruptor oculto que parece hacer el truco. Lamentablemente no se ha terminado. Me las arreglé para hacerlo funcionar con varias modificaciones de las fuentes, pero es solo un hack. Si alguien está interesado, la variable de opción se llama options.EnableHeaders y los cambios son necesarios en el archivo CPP/7zip/UI/Console/Main.cpp . Alternativamente, puede empujar el autor de 7Zip para finalizar la función en el rastreador . Hay varias solicitudes sobre esto y una de ellas está aquí .


Ampliando la respuesta de @Matthew y esta respuesta https://superuser.com/questions/194659/how-to-disable-the-output-of-7-zip Estoy usando FINDSTR en lugar de buscar, así puedo encadenar múltiples Líneas para excluir y también líneas en blanco:

7za.exe a test1.zip ./foldertozip | FINDSTR /V /R /C:"^Compressing " /C:"Igor Pavlov" /C:"^Scanning$" /C:"^$" /C:"^Everything is Ok$"

  • / V: excluir
  • / R: expresiones regulares
  • / C: "^ Compressing": comienzo de línea, Compressing, 2 espacios
  • / C: "^ Scanning $": la palabra Scanning solo en una línea (inicio / final)
  • / C: "^ $": un principio y un final sin nada en el medio, es decir, una línea en blanco

Estoy usando / C para que un espacio sea un espacio, de lo contrario es un separador entre varias palabras para excluir como en esta versión más simple:

FINDSTR /V "Compressing Pavlov Scanning Everytyhing"

(existen las mismas advertencias, si la redacción cambia en una nueva versión, o si una línea útil comienza con la palabra "Compresión", no funcionará como se esperaba).


Como dijeron, para ocultar la mayoría de los mensajes de llenado de pantalla que puedes usar ... some_archive.7z | ENCONTRAR / V "Comprimir" pero que "ENCONTRAR" también eliminaría los mensajes de error que tenían esa palabra. Usted no sería advertido. Es posible que ese "FIND" también deba cambiarse debido a una versión 7-zip más nueva.

7-zip tiene una salida detallada forzada, no hay modo de silencio, mezcla stderr y stdout (*), no guarda los permisos de Unix, etc. Esos comportamientos anti-estándares juntos ponen "7-zip" en un mal lugar cuando se comparan con "tar + bzip2" o "zip", por ejemplo.

(*) "Aguas arriba (Igor Pavlov) no desea hacer salidas diferentes para los mensajes, aunque se le ha pedido varias veces que lo haga :(" http://us.generation-nt.com/answer/bug-346463-p7zip-stdout-stderr-help-166693561.html - "Igor Pavlov no quiere cambiar este comportamiento" http://sourceforge.net/tracker/?func=detail&aid=1075294&group_id=111810&atid=660493


El | FIND | FIND es una buena alternativa para mostrar lo que sucedió sin mostrar texto insignificante.


Puede evitar que 7-Zip muestre indicaciones usando el interruptor -y. Esto responderá sí a todas las preguntas. Use esto solo cuando tenga confianza.


Si está ejecutando 7-zip.exe desde Powershell, y solo quiere ver los errores, podría intentar algo como esto:

7-zip.exe u <Target> <Source> | Select-String "Error" -Context 10

Esto solo mostrará la línea de mensaje "Error" y las 10 líneas circundantes (o cualquier número) para capturar la salida específica del error.


Una posibilidad sería generar el proceso hijo con popen , por lo que su salida regresará al padre para ser procesado / mostrado (si se desea) o bien ignorado por completo (cree su objeto popen con stdout=PIPE y stderr=PIPE para poder para recuperar la salida del niño).