Tengo un montón de archivos como este:
C:\G\G1\35antique-shop.mp3
C:\G\G2\35antique-shop.mp3
C:\G\G1\09saguri.mp3
C:\G\G2\09saguri.mp3
Solo quiero saber cómo mantener la estructura de carpetas mientras se archiva. Esto es más importante que la cosa duplicada, saber cómo resolver eso sería una ventaja.
@Lamb "¿Desea archivar solo archivos selectivos (no todo el contenido de la carpeta) de las carpetas G1 y G2?"
Eso casi lo dice todo, pero intentaré mejorar: no solo quiero mover solo algunos archivos seleccionados a un archivo. También tengo una lista de estos archivos, incluidos los nombres de ruta a cada archivo.
Entonces, en SubDir1 puede haber 10 archivos, de los cuales quiero comprimir tres, y en SubDir1 \ sub2 puede haber cinco archivos, de los cuales quiero comprimir los cinco. Los archivos que necesito archivar están en un archivo de lista.
Puede haber archivos duplicados, así que espero que con subdirectorios agregados, 7-Zip NO los vea como duplicados.
Y me gusta hacerlo en la línea de comando.
He probado un archivo por lotes como este:
7z a -r MyArchive.7z C:\G\G1\35antique-shop.mp3
7z a -r MyArchive.7z C:\G\G2\35antique-shop.mp3
7z a -r MyArchive.7z C:\G\G1\09saguri.mp3
7z a -r MyArchive.7z C:\G\G2\09saguri.mp3
Esto también significa que los archivos 01antique-shop.mp3, 02antique-shop.mp3, ...., hasta 33antique-shop.mp3 y 34antique-shop.mp3, NO deben archivarse.
Los nombres de carpeta (= subdirectorios) no se agregaron a MyArchive.7z, y este es el problema.
Obviamente, me gustaría usar solo un comando con un archivo de lista, pero eso tampoco funciona.
He intentado:
7z a -mx0 -tzip C:\$$-edrive\F-G-H.zip @fgh.txt
que en realidad funciona bastante bien en lo que respecta a la selección, pero NO mantiene la estructura del directorio. Tristemente.
¿Cómo hago esto?
fuente

Respuestas:
La última versión estable de 7-Zip (15.14) tiene el conmutador -spf que permite el almacenamiento de ruta absoluta.
Por ejemplo, si el archivo list.txt es
el comando
7z a p.7z -spf @list.txtproducirá un archivo que almacena las rutas absolutas tal como están en la lista. Alternativamente, el comando7z a p.7z -spf2 @list.txteliminará la letra de unidad:Si el archivo list.txt es
El comando
7z a p.7z @list.txtalmacenará las rutas relativas tal como están en la lista, en ambas versiones 9.20 y 15.14.Hice más pruebas con el modificador -spf. Los resultados están aquí .
fuente
Lo conseguí para archivar un directorio con subdirectorios usando lo siguiente :
fuente
Intenta esto en su lugar:
El problema parece ser que las personas han estado solicitando durante años opciones de almacenamiento de ruta adecuadas (tal como lo han hecho para poder modificar archivos de varios volúmenes ), pero el autor no parece estar interesado. Esa es parte de la razón por la que comencé a usar WinRAR tanto.
Si tiene un archivo de lista, 7-Zip no almacenará rutas si los archivos a archivar no comparten un solo directorio de nivel superior. Por ejemplo, si tiene Input.txt que contiene lo siguiente:
Si corres
7z a MyArchive.7z @Input.txt, verás que los caminos se han eliminado por completo, lo que me parece completamente al revés (OTOHrar a MyArchive.rar @Input.txthace el trabajo bien).Entonces, para superar la deficiencia de 7-Zip, puede usar un archivo por lotes de la siguiente manera:
Nota: Reemplace
D:\MyArchive.7zcon la ruta adecuada a su archivo de destino. Además, el archivo por lotes debería funcionar independientemente de si ha citado rutas en su archivo de lista o no.Editar: si su archivo de lista se ve así:
o
luego edítelo para que se vea así:
Ahora suponiendo que todos los archivos a archivar estén debajo
C:\$$-edrive, navegue a C: \ y ejecútelo7z a C:\MyArchive.7z @C:\Input.txt. Usando un archivo de lista, las rutas se guardarán solo si no hay letras de unidad, no hay barras diagonales iniciales y si el directorio de nivel superior (raíz) es el mismo para todos los archivos. Además, para obtener los mejores resultados, le aconsejo que no cree MyArchive.7z en C: \ $$ - edrive.fuente
7-Zip los verá como duplicados independientemente y los omitirá. Si hay alguna forma de evitarlo, nunca lo he encontrado, siempre divido el trabajo en varios archivos.
fuente
%ZDIR%\7z a -t7z -r -mx=1 %ZIP%\mydocu "c:\My Documents\*.*" -wc:\tempdóndeZDIRestá la ruta a 7-Zip yZIPes la unidad de destino.No estoy seguro de cómo ayudar con los duplicados. Sin embargo, creo que un sistema más conveniente que un lote con un comando completo sería crear un archivo de lista.txt:
Y luego comprimirlos a todos con
7z a -r -tzip archive.zip @listfile.txtfuente
He creado un script de murciélago para usar con totalcmd "tot-zip.bat":
Luego, en totalcmd, cree un acceso directo para él:
Luego, cuando desee comprimir algunos archivos / carpetas y preservar la estructura de carpetas en relación con
%TOP_DIR%usted, simplemente seleccione los archivos necesarios (en algún lugar dentro%TOP_DIR%) y presione el botón.fuente