switches compress comandos command-line 7zip

command line - compress - Comprimiendo solo archivos usando 7z sin preservar la ruta



comandos 7zip cmd (5)

Estoy utilizando el ejecutable de la línea de comandos 7z para comprimir archivos, pero veo que al agregar a un archivo, la ruta de los archivos se conserva en el archivo.

Así que si lo hago

7z a -tzip myzip.zip dir1/dir2/*

el archivo myzip.zip contendrá la ruta dir1 / dir2. No quiero esto, sino que solo quiero que los archivos se agreguen al archivo zip sin que se conserven las rutas. Busqué un poco pero parece que no encuentro ninguna forma de hacer esto, ¿tal vez me esté perdiendo algo obvio?

Gracias


Como se explica en la pregunta relacionada en las Preguntas frecuentes del usuario de 7-zip , 7z almacena rutas relacionadas con el directorio de trabajo, por lo que deberá ingresar primero al directorio de nivel superior deseado para archivar y ejecutar 7-zip desde aquí.

cd dir1/dir2/ 7z a -tzip myzip.zip *

Si lo ejecuta desde el script y no quiere afectarlo con el directorio modificado, use las funciones push / pop del directorio disponibles en el shell de su elección o ejecute cd + 7-zip en el proceso generado para evitar que afecte a todo su script con el directorio cambiado. Por ejemplo, usando el inicio de Windows sería:

start /D dir1/dir2/ /wait 7z a -tzip myzip.zip *


Dar el camino completo. Eso debería funcionar. No la ruta relativa desde la ubicación actual. Por ejemplo, doy lo siguiente, donde quiero que se archiven los archivos en la carpeta man5.

$ 7z a -tzip myzip.zip /home/pradeeban/Desktop/man4/man5/*

El zip contenía solo los archivos, sin los directorios.

Entonces le di sólo el camino relativo. Tenía los directorios, dentro de la cremallera.

$ 7z a -tzip myzip.zip Desktop/man4/man5/*

Probado con Linux (Ubuntu 12.04). No estoy seguro de si eso difiere de Windows.


Descubrí una forma de hacer esto usando una ruta relativa:

7z a -tzip myzip.zip %CD%/dir1/dir2/*

% CD% es cómo se obtiene la ruta actual en un archivo por lotes de Windows, pero también funciona desde la línea de comandos. Más información sobre la captura del directorio actual de un archivo por lotes .


Esto funciono para mi

Considere la estructura de carpetas como C: / Parent / SubFolders ..... Y desea crear parent.zip que contendrá todos los archivos y carpetas C: / Parent sin carpeta principal [es decir, se iniciará desde SubFolders .....]

cd /D "C:/Parent" "7z.exe" a Parent.zip "*.*" -r

Esto creará Parent.zip en C: / Parent


Solo agregue un punto antes de la ruta, es decir, 7z a -tzip -r myzip.zip ./Relative/Dir/*