2012-05-25 6 views
23

estoy usando ejecutable línea 7z comando para comprimir archivos, pero veo que al tiempo que añade a un archivo de la ruta de los archivos se conserva en el archivo.La compresión de archivos utilizando sólo 7z sin preservar el camino

Así que si lo hago

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

la myzip.zip archivo contendrá la ruta dir1 \ directorio2. No quiero esto, prefiero que solo se agreguen los archivos al archivo comprimido sin que se conserven las rutas. He buscado bastante pero no parece encontrar ninguna forma de hacerlo, tal vez me falta algo obvio?

Gracias

Respuesta

19

Ingrese la ruta completa. Eso debería funcionar. No es la ruta relativa desde la ubicación actual. Por ejemplo, doy la 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 me dio sólo la ruta relativa. Tenía los directorios, dentro del zip.

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

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

+1

+1 Funciona en Windows. Tenía exactamente este problema, y ​​exactamente esta solución funcionó. –

+0

Gracias por confirmar. :) –

+2

Agregar la ruta completa requiere (lo más probable) que lo busque. La solución que proporciona Nicklay O. es más conveniente. Solo requiere que agregue un punto al frente de la ruta. –

2

Como se ha explicado en la pregunta relacionada en 7-zip user FAQ, 7Z almacena las rutas relativas al directorio de trabajo, por lo que tendrá que primero cd al directorio de nivel superior deseado para el archivo y ejecutar 7-zip desde aquí.

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

Si se ejecuta desde la escritura y no desea afectar con cambio de directorio, directorio de empuje uso/pop instalaciones disponibles en su concha de elección o ejecutar cd + 7-zip en el proceso generado para no afectar toda la secuencia de comandos con el directorio modificado. Por ejemplo, con el inicio de Windows que sería:

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

Estoy ejecutando esto en un script y no quiero cambiar el directorio. ¿No hay otra forma de hacer lo mismo? – Raam

+0

Tendrás que hacerlo, porque así es como funciona 7z.Use los recursos de directorio push/pop disponibles en su shell de elección o ejecute cd + 7-zip en proceso generado para evitar afectar todo el script con el directorio modificado. –

+0

gracias por la solución creativa, pero como señala Kathiravelu, dar el camino completo hace el truco. – Raam

8

he descubierto una manera de hacer esto mediante el uso de una ruta relativa:

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

% CD% es la forma de obtener 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 Capturing the current directory from a batch file.

53

Sólo tiene que añadir un punto antes de la ruta, es decir 7z a -tzip -r myzip.zip .\Relative\Dir\*

+4

. \ Funciona perfectamente! –

+0

en Ubuntu es ./, gracias –

+0

Sí, para * nix raya vertical debe ser como éste. –

1

Esto funcionó para mí

Considere estructura de carpetas como C: \ \ Padres SubFolders ..... Y desea crear parent.zip que contendrá todos los archivos y carpetas C: \ padres sin carpeta principal [es decir, que se iniciará a partir SubFolders .....]

cd /D "C:\Parent" 

"7z.exe" a Parent.zip "*.*" -r 

Esto creará Parent.zip en C: \ padres

Cuestiones relacionadas