107 votes

Création d'une archive à partir d'un répertoire sans que le nom du répertoire soit ajouté à l'archive

J'ai la structure de dossier suivante :

  • racine
    • dossier 1
    • dossier2
    • dossier3
    • 7za.exe

Je veux lancer l'outil de ligne de commande 7-zip pour compresser tous les fichiers dans folder1 dans un fichier zip appelé folder1.zip .

Exécution de ce qui suit

7za.exe a -tzip folder1.zip folder1\\*.*

produit un fichier zip comme prévu. Cependant, lorsque j'ouvre le fichier zip, il contient un dossier appelé folder1 et à l'intérieur de celui-ci, j'ai tous les fichiers qui se trouvaient dans ce dossier. Je ne veux pas que le nom du dossier soit ajouté au dossier zip, c'est-à-dire que je voudrais ajouter tous les fichiers dans un format de fichier "plat".

Je ne veux pas non plus exécuter récursivement l'outil en ligne de commande pour chaque fichier/dossier individuel.

Existe-t-il un commutateur qui offre cette fonctionnalité ?

170voto

afrazier Points 22479

Desde el Aide de 7-Zip fichier :

une commande (Ajouter)

Ajoute des fichiers à l'archive.

Exemples

7z a archive1.zip subdir\

ajoute tous les fichiers et sous-dossiers du dossier subdir à l'archive archive1.zip. Les noms de fichiers de l'archive contiendront le préfixe "subdir".

7z a archive2.zip .\subdir\*

ajoute tous les fichiers et sous-dossiers du dossier subdir à l'archive archive2.zip. Les noms de fichiers de l'archive ne contiendront pas le préfixe "subdir".

cd /D c:\dir1\

7z a c:\archive3.zip dir2\dir3\

Les noms de fichiers dans l'archive c : \archive3.zip contiendra le répertoire 2 \dir3\ mais ils ne contiendront pas le préfixe c : \dir1\ préfixe.

Donc la commande que vous voulez serait : 7za.exe a folder1.zip .\folder1\*

Faites également attention à la façon dont 7-Zip gère les caractères génériques. Il ne traite pas *.* comme "tous les fichiers" -- cela signifie "tous les fichiers avec un point dans le nom de fichier". Les fichiers sans extension seront manqués. Si vous voulez vraiment tous les fichiers, utilisez simplement * à la place.

Enfin, le -tzip n'est pas nécessaire si le nom de fichier de l'archive se termine par .zip . 7-Zip est suffisamment intelligent pour savoir quel format vous voulez dans ces cas-là. Il n'est nécessaire que lorsque vous voulez une extension personnalisée (par exemple 7za.exe a -tzip foo.xpi <files> pour un module complémentaire Mozilla).

4voto

Cela a fonctionné pour moi

Considérez une 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 SubFolders.....]

cd /D "C:\Parent"

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

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

1voto

Simcha Khabinsky Points 708

Juste pour développer la réponse acceptée (je n'ai pas pu ajouter de commentaire ici) :

Sous Linux, l'ajout de '*' n'a pas fonctionné pour moi, j'ai donc fini par concocter une ligne de commande plus verbeuse qui a donné le résultat souhaité :

curr_dir=$(pwd); \ 
cd source_code/lambda/ ; \
7z a ../../lambda.zip .; \
cd $curr_dir \
unset curr_dir

\===========

script explication :

  • sauvegarde le chemin du répertoire actuel pour l'utiliser plus tard ;
  • naviguer vers le répertoire qui doit être archivé ;
  • créer des archives (remarquez le "." (point) à la fin) ;
  • revenir à la version originale ;
  • se débarrasser de la variable qui stockait le chemin du répertoire original

J'espère que cela pourra être utile à quelqu'un.

-3voto

user708375 Points 1

Par exemple, Dossier/sous-dossier 1, Dossier/sous-dossier 2.

sélectionner tous les sous-dossiers > clic droit puis créer une archive > sélectionner le format souhaité

*Le nom de l'archive serait le dossier parent

C'est simple, non ?

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X