J'ai beaucoup de fichiers comme ceci:
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 du dossier lors de l'archivage. Ceci est plus important que la duplication, pour savoir comment résoudre cela, serait un bonus.
@Lamb "Voulez-vous archiver uniquement les fichiers sélectifs (pas le contenu entier du dossier) des dossiers G1 et G2?"
Cela dit presque tout, mais je vais essayer d'améliorer: non seulement je souhaite déplacer seulement certains fichiers sélectionnés dans une archive. J'ai également une liste de ces fichiers, y compris les noms de chemin de chaque fichier.
Donc, dans SubDir1, il peut y avoir 10 fichiers, dont je veux supprimer trois, et dans SubDir1 \ sub2 il peut y avoir cinq fichiers, dont je veux supprimer tous 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 que, 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 ceci:
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 devraient PAS être archivés.
Les noms de dossiers (= sous-répertoires) n'ont pas été ajoutés à MyArchive.7z, et c'est le problème.
De toute évidence, 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\FGH.zip @fgh.txt
Ce qui fonctionne vraiment très bien en ce qui concerne la sélection, mais il ne garde pas la structure du répertoire. Malheureusement.
Comment puis-je faire cela?
Je l'ai chargé d'archiver un répertoire avec des sous-répertoires en utilisant ce qui suit :
7z.exe a - t7z NewArchivePath PathOfFolderToArchive
Essayez ceci à la place:
cd /d C:\ 7z a MyArchive.7z G\G1\35antique-shop.mp3 7z a MyArchive.7z G\G2\35antique-shop.mp3 7z a MyArchive.7z G\G1\09saguri.mp3 7z a MyArchive.7z G\G2\09saguri.mp3
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 pour la capacité de modifier les archives multi-volumes ), mais l'auteur ne semble pas intéressé. Cela fait partie de la raison pour laquelle j'ai commencé à utiliser WinRAR tellement.
Si vous disposez d'un fichier de liste, 7-Zip ne stockera pas les chemins d'accès 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:
C:\path to\file1.ext D:\path to\file1.ext E:\path to\file1.ext
Si vous exécutez 7z a MyArchive.7z @Input.txt
, vous verrez que les chemins ont été complètement dépouillés, ce qui me semble complètement arrière (OTOH rar a MyArchive.rar @Input.txt
fait le travail très bien).
Donc, pour surmonter la carence de 7-Zip, vous pouvez utiliser un fichier batch comme suit:
for /f "tokens=1* delims=\" %%i in (Input.txt) do ( pushd %%i\ 7z a D:\MyArchive.7z "%%j" popd )
Remarque: Remplacez D:\MyArchive.7z
par le chemin approprié à votre archive de destination. En outre, le fichier de commandes doit fonctionner indépendamment du fait que vous avez ou non cité des chemins dans votre fichier de liste.
Modifier: Si votre fichier de liste ressemble à:
"C:\$$-edrive\F\faithless.-.long.way.mp3" "C:\$$-edrive\G\Antique Shop.mp3"
ou
"\$$-edrive\F\faithless.-.long.way.mp3" "\$$-edrive\G\Antique Shop.mp3"
Puis modifiez-le pour ressembler à ceci:
"$$-edrive\F\faithless.-.long.way.mp3" "$$-edrive\G\Antique Shop.mp3"
Maintenant, en supposant que tous les fichiers à archiver sont sous C:\$$-edrive
, naviguez vers C: \ et exécutez 7z a C:\MyArchive.7z @C:\Input.txt
. À l'aide d'un fichier de listes, les chemins ne seront enregistrés que si aucune lettre de lecteur n'est présente, aucune barre oblique invariable n'est là et si le répertoire de niveau supérieur (racine) est identique pour tous les fichiers. De plus, pour de meilleurs résultats, je vous conseille de ne pas créer MyArchive.7z dans C: \ $$ – edrive.
La dernière version stable de 7-Zip (15.14) a le commutateur -spf qui permet le stockage du chemin absolu.
Par exemple, si le fichier list.txt est
C:\tmp\dir1\file.txt C:\tmp\dir2\file.txt
La commande 7z a p.7z -spf @list.txt
produira une archive stockant les chemins absolus comme dans la liste. Alternativement, la commande 7z a p.7z -spf2 @list.txt
supprime la lettre de lecteur:
tmp\dir1\file.txt tmp\dir2\file.txt
Si le fichier list.txt est
dir1\file.txt dir2\file.txt
La commande 7z a p.7z @list.txt
stockera les chemins relatifs comme dans la liste, dans les versions 9.20 et 15.14.
J'ai fait plus de tests avec le switch -spf. Les résultats sont ici .
7-Zip les verra comme des doublons indépendamment, et les ignorer. S'il y a un moyen de contourner cela, je ne l'ai jamais trouvé – je fais simplement répartir le travail en plusieurs archives.
Vous ne savez pas comment vous aider avec les doublons. Cependant, je pense qu'un système plus pratique qu'un lot avec une commande complète par serait de créer un listfile.txt:
C:\G\G1\35antique-shop.mp3 C:\G\G2\35antique-shop.mp3 MyArchive.7z C:\G\G1\09saguri.mp3 MyArchive.7z C:\G\G2\09saguri.mp3
Ensuite, comprimez-les tous avec 7z a -r -tzip archive.zip @listfile.txt
J'ai créé un script de chauve-souris à utiliser avec totalcmd "tot-zip.bat":
@echo off SETLOCAL ENABLEDELAYEDEXPANSION set "TOP_DIR="D:\Grabovsky"" set "archname="%TOP_DIR%\arch.zip"" set "filelist= " cd %TOP_DIR% for %%A in (%*) do ( set ondisk_path="%%~dpnxA" set inarch_path=!ondisk_path:%TOP_DIR%\=! echo Putting !ondisk_path! to !inarch_path!. set "filelist=!filelist! !inarch_path!" ) echo filelist: %filelist% 7z.exe a -tzip %archname% %filelist% > NUL pause
Ensuite, dans totalcmd, créez un raccourci pour cela:
Ensuite, lorsque vous souhaitez supprimer certains fichiers / dossiers et conserver la structure du dossier par rapport à %TOP_DIR%
il suffit de sélectionner les fichiers nécessaires (quelque part dans %TOP_DIR%
) et appuyez sur le bouton.