web-dev-qa-db-fra.com

Ligne de commande 7-Zip

Je crée un utilitaire de sauvegarde qui compresse tous les fichiers répertoriés dans un fichier texte. J'utilise MS Access comme frontal et 7-Zip pour la compression. Ce sont les commandes que j'utilise:

7zG.exe a c:\Backup\backup.Zip
@c:\temp\tmpFileList.txt

Tous les fichiers sont compressés sans leur chemin. Est-il possible d'inclure le chemin d'accès de chaque fichier dans le fichier Zip? Ensuite, lorsque backup.Zip est extrait, les fichiers sont restaurés dans leur structure de dossiers d'origine.

Merci

10
Arnold

Dans ce fil de discussion 7-Zip du forum , dans lequel de nombreuses personnes expriment le souhait de cette fonctionnalité, le développeur de 7-Zip, Igor, pointe sur le FAQ question intitulé "Comment enregistrer le chemin fichier dans les archives? "pour obtenir un résultat similaire.

En bref:

  • séparer les fichiers par volume (une liste pour les fichiers sur C:\, une pour D:\, etc.)
  • puis pour la liste de fichiers de chaque volume,
    1. chdir au répertoire racine du volume approprié (par exemple, cd /d C:\)
    2. créer une liste de fichiers avec les chemins relative dans le répertoire racine du volume (par exemple, C:\Foo\Bar devient Foo\Bar)
    3. exécuter 7z a archive.7z @filelist comme auparavant avec cette nouvelle liste de fichiers
    4. lors de l'extraction avec des chemins complets, assurez-vous de commencer par chdir vers le répertoire racine du volume approprié
6
Anonymous

Le programme en ligne de commande pour 7-Zip est 7z ou 7za. Voici un post utile sur les options disponibles. L'option -r (recurse) stocke les chemins.

4
Vinay Sajip

Je ne me suis pas penché sur la question, mais en tirant de la hanche, je dirais qu'ils ont abandonné le support en ligne de commande dans le portable. La raison pour laquelle les gens ne font pas beaucoup de choses en ligne de commande dans les applications portables est que le système d'exploitation (Windows dans votre cas) nécessite que les exécutables soient ajoutés à la liste d'inclusion% path%.

Si cette exigence n'est pas remplie, utiliser des utilitaires de ligne de commande est plutôt fastidieux.

7z -a.

serait 

d:\portable\z7\z7 -a c:\vers\archive\dossier *. *

C’est pourquoi les interfaces graphiques ont du sens avec des applications telles que les applications portables. Celles-ci (l’application) peuvent se souvenir de leur propre emplacement et gérer ces informations pour vous. Si vous ne pouvez pas les exécuter, vous savez qu’elles ne sont pas attachées.

Si vous voulez vraiment que l'application portable contienne ce contenu, vous pouvez toujours installer la version complète, puis extraire le fichier 7z.exe requis et le placer dans le dossier portable en vous assurant qu'il est bien dans le fichier DLL requis.

Vous devrez définir votre chemin lorsque vous frappez le shell après vous être assuré qu'il est attaché. 

http://www.redfernplace.com/software-projects/patheditor/ - un bon éditeur de chemin (bas) utile si vous avez beaucoup d'informations sur le chemin 20+ sont difficiles à lire.

http://www.softpedia.com/get/System/System-Misc Miscellaneous/Path-Editor.shtml - source d'alternet pour l'éditeur de chemin 

Il est déconseillé de modifier votre chemin système pour les lecteurs "portables" temporaires bien que vous le fassiez manuellement:

set path =% path%; "d:\portable\z7 \";

lorsque vous exécutez dos cmd.exe ou http://sourceforge.net/p/conemu/home/Home/

Les autres réponses abordent mieux les problèmes que je ne vais pas essayer ..

http://www.codejacked.com/Zip-up-files-from-the-command-line/ - une bonne référence pour l'utilisation en ligne de commande de z7 et z7a.

PS: désolé pour la nécro mais j’ai pensé qu’il avait besoin d’une réponse plus directe à pourquoi (même si c’est hypothétique). 

1
ransom bot

essaye celui-là. cela a fonctionné pour moi. 7z.exe et d:\newFileName.7z "d:\ExistingFile.txt"

ouvrez cmd et si vous avez installé l'application 7Zip, essayez ceci. à l'invite de commande, il va aimer c:\programmes et fichiers\7Zip\7z.exe et d:\newFileName.7z "d:\ExistingFile.txt"

1
Mahadev Mane

Depuis la version 7-Zip 9.25 alpha , un nouveau commutateur -spf peut être utilisé pour stocker les chemins de fichiers complets, y compris la lettre de lecteur, dans l'archive.

7zG.exe a -spf c:\BAckup\backup.Zip @c:\temp\tmpFileList.txt

devrait fonctionner très bien maintenant.

0
mrt

7-Zip veut des chemins relatifs dans le fichier liste sinon il ne stockera que les noms de fichiers, ce qui provoquera une erreur de nom de fichier en double.

En supposant que votre liste contienne des noms de chemins complets:

  • Editez le fichier de liste pour supprimer le préfixe de lecteur, C: \
  • Assurez-vous que vous êtes à la racine du lecteur lorsque vous exécutez 7Z pour utiliser le fichier de liste ci-dessus.
  • Ensuite, il stockera les chemins et ne se plaindra pas du nom dupliqué. Il veut des chemins relatifs dans le fichier liste.

Si votre fichier de liste contient des chemins relatifs à un autre dossier, vous devez exécuter 7Z à partir de ce dossier.

Mise à jour: j'ai remarqué dans un autre message ci-dessus que le nouveau 7-Zip a une option -spf qui ne nécessite pas les étapes ci-dessus. Pas encore testé, mais mes étapes concernent les versions antérieures ne disposant pas de cette option.

0
user173399