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.txt
producirá un archivo que almacena las rutas absolutas tal como están en la lista. Alternativamente, el comando7z a p.7z -spf2 @list.txt
eliminará la letra de unidad:Si el archivo list.txt es
El comando
7z a p.7z @list.txt
almacenará 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.txt
hace 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.7z
con 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:\temp
dóndeZDIR
está la ruta a 7-Zip yZIP
es 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.txt
fuente
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