Extraer un determinado archivo de un archivo con 7-Zip desde la línea de comando

34

Si tengo un archivo, por ejemplo, some.zipque contiene uno o más archivos, ¿cómo puedo extraer solo un archivo (sé el nombre del archivo) con 7-Zip desde la línea de comandos en Windows?

Kiesoo
fuente

Respuestas:

32

Como seguimiento a la respuesta de surfasb , agregue una bandera -r al final para repetir:

7z e [archive.zip] -o[outputdir] [fileFilter] -r

Múltiples filtros compatibles:

7z e [archive.zip] -o[outputdir] [fileFilter_1] [fileFilter_2] -r

Ejemplo:

Línea de comando de filtros múltiples:

7z e archive.zip -o outputdir *.xml *.dll -r

PD: yo uso 7za.exe en lugar de 7z.exe. Este es el comando real que uso en mi script:

7za.exe x archive.zip -o outputdir *.xml *.pdb *.exe *.ocx *.dll -r
zionyx
fuente
1
¿Cómo puedo agregar múltiples filtros de archivos, digamos .XMLy .zip? Lo siento si estoy secuestrando este hilo, simplemente no quería agregar una pregunta duplicada.
Fr0zenFyr
1
Debería estar bien separando los filtros por espacio. Vea la respuesta editada arriba. :)
zionyx
¿Y cómo extraigo un archivo específico de un archivo dentro del archivo? Digamos que el archivo que estoy buscando es "MyFile.txt" dentro de "SubArchive.zip" dentro de "MainArchive.zip". es posible?
PeterCo
1
@PeterCo, creo que el comando solo es capaz de extraer SubArchive.zipdel MainArchive.zipen tu caso Es posible realizar un seguimiento del sistema para extraer MyFile.txta partir SubArchive.zipdespués de la extracción inicial.
zionyx
13

Simplemente agrega el nombre de archivo al final.

7z e [archive.zip]-o [outputdir] [fileFilter]

surfasb
fuente
1
¿Cómo puedo agregar múltiples filtros de archivos, digamos .XMLy .zip? Lo siento si estoy secuestrando este hilo, simplemente no quería agregar una pregunta duplicada.
Fr0zenFyr
Es una pregunta diferente @ Fr0zenFyr. Para dejar en claro que no está duplicado, puede hacer referencia a esta pregunta por su cuenta y luego especificar cómo es diferente la suya.
music2myear
@ music2myear: Gracias por la aclaración. La respuesta más votada por zionyx ya incluye una solución. Mi comentario tiene más de 2 años, por lo que sería razonable suponer que utilicé la solución anterior o que ya publiqué una pregunta y encontré una respuesta (BTW, este fue mi caso). Mi publicación resuelta está en SO y el hilo original creado antes de que mi comentario esté aquí, así que no pude vincularme a esta pregunta. :)
Fr0zenFyr
Nota: como está escrito aquí, no ponga espacio entre -o y outputdir.
Bufón del Rey
4

Si observa la página de manual de 7z, encontrará que el siguiente comando puede usarse para extraer un archivo de un archivo de 7z (aunque falta el uso de la ruta en la página de manual):

7z x <archive> <path to file>

Ejemplos:

7z x backup.7z *.html
7z x backup.7z folderwithin/myfile.html

Alternativamente, podría usar e.

La guía de usuario de la versión de línea de comando parece tener más información sobre el uso real.

Perdiz de Todd
fuente
2
¿Es esa la ruta relativa dentro del archivo?
music2myear
Sí, el "folderwithin" es una carpeta en la raíz del archivo.
Bufón del Rey
1

Tenga en cuenta que 7ztiene la siguiente sintaxis (observe los espacios y las comillas que rodean la "-oMy Folder"opción para establecer el nombre de la carpeta de salida, me tomó horas averiguarlo, ya que originalmente lo hice, de la manera incorrecta: * -o "My Folder"*):

7z e "my zip.zip" "-oMy Folder" *.jpg "all of these.*" -r
Albert Marenčin
fuente