Compresser uniquement les fichiers à l'aide de 7z sans conserver le chemin

J'utilise l'exécutable en ligne de commande 7z pour les fichiers zip, mais je vois que lors de l'ajout à une archive, le chemin des fichiers est préservé dans l'archive.

Donc si je fais

7z a -tzip  myzip.zip dir1dir2*

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

Merci

27
demandé sur Raam 2012-05-25 15:31:55

5 réponses

Donnez le chemin complet. Cela devrait fonctionner. Pas le chemin relatif de l'emplacement actuel. Par exemple, je donne ci-dessous, où je veux que les fichiers dans le 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.

20
répondu Pradeeban Kathiravelu 2014-01-09 14:14:55

Il suffit d'ajouter un point avant le chemin, c'est-à-dire 7z a -tzip -r myzip.zip .\Relative\Dir\*

59
répondu Nickolay Olshevsky 2013-10-14 11:30:58

J'ai découvert un moyen de faire cela en utilisant un chemin relatif:

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

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

9
répondu NightOwl888 2017-07-26 20:02:46

Comme expliqué dans la question connexe de 7-zip user FAQ , 7z stocke les chemins relatifs au répertoire de travail, vous devrez donc d'abord cd dans le répertoire de niveau supérieur souhaité pour l'archive et exécuter 7-zip à partir d'ici.

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

Si vous l'exécutez à partir d'un script et que vous ne voulez pas l'affecter avec un répertoire modifié, utilisez les fonctions push/pop de 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'ensemble de votre script avec un répertoire modifié. Par exemple, à l'aide de Le démarrage de Windows serait:

start /D dir1\dir2\ /wait 7z a -tzip  myzip.zip *
2
répondu Oleg V. Volkov 2012-05-25 11:57:18

Cela a fonctionné pour moi

Considérez la structure de dossier 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 sous-dossiers.....]

cd /D "C:\Parent"

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

Cela va créer Parent.fermeture éclair C:\Parent

1
répondu Pritesh Dhokchaule 2016-06-07 18:13:25