Usuario del software
2011-09-26 16:51:38 +0000 2011-09-26 16:51:38 +0000
86

Creación de un archivo desde un directorio sin que se añada el nombre del directorio al archivo

Tengo la siguiente estructura de carpetas:

  • raíz
  • carpeta1
  • carpeta2
  • carpeta3
  • 7za.exe

Quiero ejecutar la herramienta de línea de comandos 7-zip para comprimir todos los archivos en folder1 en un archivo zip llamado folder1.zip.

Ejecutando lo siguiente

7za.exe a -tzip folder1.zip folder1\*.*

produce un archivo zip como se espera. Sin embargo, cuando abro el archivo zip, tiene una carpeta llamada folder1, y dentro de ella tengo todos los archivos que estaban dentro de esa carpeta. No quiero que se añada el nombre de la carpeta a la carpeta zip, es decir, me gustaría añadir todos los archivos en un formato de archivo "plano".

Tampoco quiero ejecutar recursivamente la herramienta de línea de comandos para cada archivo/carpeta individual.

¿Existe algún interruptor que proporcione esta funcionalidad?

Respuestas [4]

141
2011-09-26 17:25:54 +0000

Del archivo 7-Zip Help :

a (Add) command

Añade ficheros al archivo.

Ejemplos

`7z a archive1.zip subdirDel archivo [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Añade ficheros al archivo.

Ejemplos

añade todos los archivos y subcarpetas de la carpeta subdir al archivo archive1.zip. Los nombres de los ficheros en el archivo contendrán el prefijo de la subdirección.

7z a archive2.zip .\subdir\*

añade todos los archivos y subcarpetas de la carpeta subdir a archive2.zip. Los nombres de los ficheros del archivo no contendrán el prefijo subdir.

`cd /D c:\dir1Del archivo [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Añade ficheros al archivo.

Ejemplos

`7z a archive1.zip subdirDel archivo [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Añade ficheros al archivo.

Ejemplos

añade todos los archivos y subcarpetas de la carpeta subdir al archivo archive1.zip. Los nombres de los ficheros en el archivo contendrán el prefijo de la subdirección.

7z a archive2.zip .\subdir\*

añade todos los archivos y subcarpetas de la carpeta subdir a archive2.zip. Los nombres de los ficheros del archivo no contendrán el prefijo subdir.

`7z a c:\archive3.zip dir2\dir3Del archivo [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Añade ficheros al archivo.

Ejemplos

`7z a archive1.zip subdirDel archivo [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Añade ficheros al archivo.

Ejemplos

añade todos los archivos y subcarpetas de la carpeta subdir al archivo archive1.zip. Los nombres de los ficheros en el archivo contendrán el prefijo de la subdirección.

7z a archive2.zip .\subdir\*

añade todos los archivos y subcarpetas de la carpeta subdir a archive2.zip. Los nombres de los ficheros del archivo no contendrán el prefijo subdir.

`cd /D c:\dir1Del archivo [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Añade ficheros al archivo.

Ejemplos

`7z a archive1.zip subdirDel archivo [ 7-Zip Help ]0x3&:

[ a (Add) command ]0x3&

Añade ficheros al archivo.

Ejemplos

añade todos los archivos y subcarpetas de la carpeta subdir al archivo archive1.zip. Los nombres de los ficheros en el archivo contendrán el prefijo de la subdirección.

7z a archive2.zip .\subdir\*

añade todos los archivos y subcarpetas de la carpeta subdir a archive2.zip. Los nombres de los ficheros del archivo no contendrán el prefijo subdir.

Los nombres de ficheros en el archivo c:\archive3.zip contendrán el prefijo dir2\dir3\, pero no contendrán el prefijo c:\dir1.

Así que el comando que querrías sería 7za.exe a folder1.zip .\folder1\*

Además, preste atención al manejo de los comodines por parte de 7-Zip. No trata *.* como "todos los archivos" - significa "todos los archivos con un punto en el nombre del archivo". Los archivos sin extensión se perderán. Si realmente quiere todos los archivos, utilice * en su lugar.

Por último, el parámetro -tzip no es necesario si el nombre del archivo termina en .zip. 7-Zip es lo suficientemente inteligente como para averiguar qué formato quieres en esos casos. Sólo es necesario cuando se desea una extensión personalizada (por ejemplo, 7za.exe a -tzip foo.xpi <files> para un complemento de Mozilla).

141
2
2016-06-07 18:04:40 +0000

Esto funcionó para mí

Considere la estructura de carpetas como C:\Parent\SubFolders..... Y quieres crear parent.zip que contendrá todos los archivos y carpetas C:\Parent sin la carpeta padre [es decir, comenzará desde SubFolders.....]

cd /D "C:\Parent"

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

Esto creará Parent.zip en C:\Parent

2
1
2018-07-17 10:49:04 +0000

Sólo para ampliar la respuesta aceptada (no pude añadir un comentario allí):

En Linux añadir '*' no me funcionó, así que terminé inventando una línea de comando más verbosa que dio el resultado deseado:

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

===========

explicación del script:

  • guardar la ruta actual del directorio para usarla más tarde;
  • navegar hasta el directorio que necesita ser archivado;
  • crear el archivo (fíjese en el '.' (punto) al final);
  • volver al directorio original;
  • deshacerse de la variable que almacenaba la ruta original del directorio

Espero que pueda ser útil para alguien.

1
-1
2017-03-17 05:23:32 +0000

Qué tal esto. por ejemplo, Carpeta/subcarpeta1, Carpeta/subcarpeta2

seleccionar todas las subcarpetas > hacer clic con el botón derecho y luego crear un archivo > seleccionar cualquier formato

El nombre del archivo sería la carpeta principal.

¿Simple, no?

-1