Tengo la siguiente estructura de carpetas:
- raíz
- carpeta1
- carpeta2
- carpeta3
- 7za.exe
Quiero ejecutar la herramienta de línea de comando 7-zip para comprimir todos los archivos en folder1
un archivo zip llamado folder1.zip
.
Ejecutando lo siguiente
7za.exe a -tzip folder1.zip folder1\\*.*
produce un archivo zip como se esperaba. Sin embargo, cuando abro el archivo zip, tiene una carpeta llamada folder1
, y dentro tengo todos los archivos que estaban dentro de esa carpeta. No quiero que se agregue el nombre de la carpeta a la carpeta zip, es decir, me gustaría agregar todos los archivos en un formato de archivo "Plano".
Tampoco quiero ejecutar recursivamente la herramienta de línea de comando para cada archivo / carpeta individual.
¿Hay un interruptor que proporcione esta funcionalidad?
cd
ingresar a la carpeta1 y7za.exe a -tzip ..\folder1.zip *.*
?Respuestas:
Del archivo de ayuda 7-Zip :
Entonces el comando que querrías sería:
7za.exe a folder1.zip .\folder1\*
Además, preste atención al manejo de comodines por parte de 7-Zip. No se trata
*.*
como "todos los archivos", significa "todos los archivos con un punto en el nombre del archivo". Se perderán los archivos sin extensión. Si realmente quieres todos los archivos, solo*
úsalos.Finalmente, el
-tzip
parámetro no es necesario si el nombre del archivo finaliza.zip
. 7-Zip es lo suficientemente inteligente como para determinar qué formato desea en esos casos. Solo es necesario cuando desea una extensión personalizada (por ejemplo,7za.exe a -tzip foo.xpi <files>
para un complemento de Mozilla).fuente
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 padre [es decir, comenzará desde SubFolders .....]
Esto creará Parent.zip en C: \ Parent
fuente
*.*
que significa "todos los archivos" sino más bien "todos los archivos que tienen un punto como parte del nombre de archivo". Por lo tanto, esta respuesta omitirá realmente los archivos que no tienen una extensión (esto se observa en la respuesta aceptada).Solo para ampliar la respuesta aceptada (no pude agregar comentarios allí):
En Linux, agregar '*' no funcionó para mí, así que terminé inventando una línea de comando más detallada que dio el resultado deseado:
===========
explicación del guión:
Espero que pueda ser útil para alguien.
fuente
*
comillas (de lo contrario, el shell lo expandirá a los archivos en este lugar).Qué tal esto. por ejemplo, Carpeta / subcarpeta1, Carpeta / subcarpeta2
* El nombre del archivo sería la carpeta principal.
Simple derecho?
fuente