web-dev-qa-db-fra.com

Compression de fichiers uniquement en utilisant 7z sans conserver le chemin

J'utilise l'exécutable de la ligne de commande 7z pour les fichiers Zip, mais je vois qu'en ajoutant à une archive le chemin des fichiers est conservé dans l'archive.

Donc si je le fais

7z a -tzip  myzip.Zip dir1\dir2\*

l'archive myzip.Zip contiendra le chemin dir1\dir2. Je ne veux pas cela, je veux plutôt que les fichiers soient ajoutés au fichier Zip sans que les chemins soient conservés. J'ai cherché pas mal mais ne semble pas trouver de moyen de le faire, peut-être que je manque quelque chose d'évident?

Merci

33
Raam

Donnez le chemin complet. Cela devrait fonctionner. Pas le chemin relatif depuis l'emplacement actuel. Par exemple, je donne ci-dessous, où je veux que les fichiers du dossier man5 soient archivés.

$ 7z a -tzip myzip.Zip /home/pradeeban/Desktop/man4/man5/*

Le Zip ne contenait que les fichiers, sans les répertoires.

Ensuite, je n'ai donné que le chemin relatif. Il y avait les répertoires, à l'intérieur du Zip.

$ 7z a -tzip myzip.Zip Desktop/man4/man5/*

Essayé avec Linux (Ubuntu 12.04). Je ne sais pas si cela diffère de Windows.

24

Ajoutez simplement un point avant le chemin, c'est-à-dire 7z a -tzip -r myzip.Zip .\Relative\Dir\*

70
Nickolay Olshevsky

J'ai découvert un moyen de le faire en utilisant un chemin d'accès relatif:

7z a -tzip  myzip.Zip %CD%\dir1\dir2\*

% CD% est la façon dont vous obtenez le chemin d'accès actuel dans un fichier de commandes Windows, mais cela fonctionne également à partir de la ligne de commande. Plus d'informations sur Capture du répertoire courant à partir d'un fichier batch .

11
NightOwl888

Comme expliqué dans la question connexe dans FAQ utilisateur 7-Zip , 7z stocke les chemins relatifs au répertoire de travail, vous devrez donc d'abord cd vers le répertoire de niveau supérieur souhaité pour l'archivage et exécutez 7 -Zip d'ici.

cd dir1\dir2\
7z a -tzip  myzip.Zip *

Si vous l'exécutez à partir d'un script et que vous ne souhaitez pas l'affecter avec le répertoire modifié, utilisez les fonctionnalités Push/pop du répertoire disponibles dans votre shell de choix ou exécutez cd + 7-Zip dans le processus généré pour éviter d'affecter l'intégralité de votre script avec le répertoire modifié. Par exemple, utiliser le démarrage de Windows serait:

start /D dir1\dir2\ /wait 7z a -tzip  myzip.Zip *
3
Oleg V. Volkov

Cela a fonctionné pour moi

Considérez la structure de dossiers comme C:\Parent\SubFolders ..... Et vous voulez créer parent.Zip qui contiendra tous les fichiers et dossiers C:\Parent sans dossier parent [c'est-à-dire qu'il commencera à partir de SubFolders .....]

cd /D "C:\Parent"

"7z.exe" a Parent.Zip "*.*" -r

Cela va créer Parent.Zip dans C:\Parent

1