J'ai un tas de fichiers comme celui-ci:
C:\G\G1\35antique-shop.mp3
C:\G\G2\35antique-shop.mp3
C:\G\G1\09saguri.mp3
C:\G\G2\09saguri.mp3
Je veux juste savoir comment conserver la structure des dossiers lors de l'archivage. C'est plus important que la chose en double, savoir comment résoudre cela, serait un bonus.
@Lamb "Souhaitez-vous archiver uniquement des fichiers sélectifs (pas tout le contenu du dossier) des dossiers G1 et G2?"
Cela dit presque tout, mais je vais essayer de m'améliorer: Non seulement je veux déplacer uniquement certains fichiers sélectionnés vers une archive. J'ai également une liste de ces fichiers, y compris les noms de chemin d'accès à chaque fichier.
Ainsi, dans SubDir1, il peut y avoir 10 fichiers, dont je veux en compresser trois, et dans SubDir1 \ sub2, il peut y avoir cinq fichiers, dont je veux compresser les cinq. Les fichiers que j'ai besoin d'archiver sont dans un fichier de liste.
Il peut y avoir des fichiers en double, donc j'espère qu'avec les sous-répertoires ajoutés, 7-Zip ne les voit PAS comme des doublons.
Et j'aime le faire sur la ligne de commande.
J'ai essayé un fichier batch comme celui-ci:
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
Cela signifie également que les fichiers 01antique-shop.mp3, 02antique-shop.mp3, ...., jusqu'à 33antique-shop.mp3 et 34antique-shop.mp3, NE doivent PAS être archivés.
Les noms de dossier (= sous-répertoires) n'ont pas été ajoutés à MyArchive.7z, et c'est le problème.
Évidemment, j'aimerais utiliser un seul commando avec un fichier de liste, mais cela ne fonctionne pas non plus.
J'ai essayé:
7z a -mx0 -tzip C:\$$-edrive\F-G-H.zip @fgh.txt
ce qui fonctionne très bien en ce qui concerne la sélection, mais il ne conserve PAS la structure du répertoire. Tristement.
Comment puis-je faire cela?
la source
Réponses:
La dernière version stable de 7-Zip (15.14) a le commutateur -spf qui permet le stockage de chemin absolu.
Par exemple, si le fichier list.txt est
la commande
7z a p.7z -spf @list.txt
produira une archive stockant les chemins absolus tels quels dans la liste. Alternativement, la commande7z a p.7z -spf2 @list.txt
supprimera la lettre de lecteur:Si le fichier list.txt est
la commande
7z a p.7z @list.txt
stockera les chemins relatifs tels quels dans la liste, dans les deux versions 9.20 et 15.14.J'ai fait plus de tests avec le commutateur -spf. Les résultats sont ici .
la source
Je l'ai obtenu pour archiver un répertoire avec des sous-répertoires en utilisant ce qui suit :
la source
Essayez plutôt ceci:
Le problème semble être que les gens demandent depuis des années des options de stockage de chemin appropriées (tout comme ils ont la possibilité de modifier des archives multi-volumes ), mais l'auteur ne semble pas intéressé. C'est en partie la raison pour laquelle j'ai commencé à utiliser WinRAR autant.
Si vous avez un fichier liste, 7-Zip ne stockera pas les chemins si les fichiers à archiver ne partagent pas un seul répertoire de niveau supérieur. Par exemple, si vous avez Input.txt contenant les éléments suivants:
Si vous exécutez
7z a MyArchive.7z @Input.txt
, vous verrez que les chemins ont été complètement supprimés, ce qui me semble complètement à l'envers (OTOHrar a MyArchive.rar @Input.txt
fait très bien le travail).Donc, pour surmonter la carence de 7-Zip, vous pouvez utiliser un fichier batch comme suit:
Remarque: remplacez-le
D:\MyArchive.7z
par le chemin d'accès approprié à votre archive de destination. En outre, le fichier de commandes doit fonctionner, que vous ayez cité ou non des chemins dans votre fichier de liste.Modifier: si votre fichier de liste ressemble à:
ou
puis modifiez-le pour qu'il ressemble à ceci:
En supposant maintenant que tous les fichiers à archiver sont sous
C:\$$-edrive
, accédez à C: \ et exécutez7z a C:\MyArchive.7z @C:\Input.txt
. À l'aide d'un fichier de liste, les chemins d'accès ne seront enregistrés que si aucune lettre de lecteur n'est présente, aucune barre oblique inverse initiale n'est là et si le répertoire de niveau supérieur (racine) est le même pour tous les fichiers. Aussi, pour de meilleurs résultats, je vous conseille de ne pas créer MyArchive.7z dans C: \ $$ - edrive.la source
7-Zip les verra comme des doublons et les ignorera. S'il y a un moyen de contourner cela, je ne l'ai jamais trouvé - je décompose toujours le travail en plusieurs archives.
la source
%ZDIR%\7z a -t7z -r -mx=1 %ZIP%\mydocu "c:\My Documents\*.*" -wc:\temp
oùZDIR
est le chemin vers 7-Zip etZIP
est le lecteur de destination.Je ne sais pas comment aider avec les doublons. Cependant, je pense qu'un système plus pratique qu'un batch avec une commande complète par serait de créer un listfile.txt:
Et puis compressez-les tous avec
7z a -r -tzip archive.zip @listfile.txt
la source
J'ai créé un script bat à utiliser avec totalcmd "tot-zip.bat":
Ensuite, dans totalcmd, créez un raccourci:
Ensuite, lorsque vous souhaitez compresser certains fichiers / dossiers et conserver la structure des dossiers par rapport à
%TOP_DIR%
vous, sélectionnez simplement les fichiers nécessaires (quelque part à l'intérieur%TOP_DIR%
) et appuyez sur le bouton.la source