Question Créer une archive à partir d'un répertoire sans ajouter le nom du répertoire à l'archive


J'ai la structure de dossiers suivante:

  • racine      
    • dossier1
    • dossier2
    • dossier3
    • 7za.exe

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

Exécuter le suivant

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 que j'ai tous les fichiers qui étaient à l'intérieur de ce dossier. Je ne souhaite pas que le nom du dossier soit ajouté au dossier zip, c’est-à-dire que je souhaite ajouter tous les fichiers dans un format de fichier "plat".

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

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


65
2017-09-26 16:51


origine


Peut tu cd dans le dossier1 et 7za.exe a -tzip ..\folder1.zip *.*? - zpletan


Réponses:


Du 7-Zip Help 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 dans l'archive contiendront subdir \ prefix.

7z a archive2.zip .\subdir\*

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

cd /D c:\dir1\

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

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

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

Faites également attention à la gestion des caractères génériques par 7-Zip. 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 * au lieu.

Finalement, le -tzip paramètre n'est pas nécessaire si le nom du fichier d'archive se termine par .zip. 7-Zip est assez intelligent pour déterminer le format souhaité dans ces cas. Il n'est requis que lorsque vous souhaitez une extension personnalisée (par ex. 7za.exe a -tzip foo.xpi <files> pour un module complémentaire Mozilla).


106
2017-09-26 17:25





Cela a fonctionné pour moi

Envisagez une structure de dossier comme C: \ Parent \ SubFolders ..... Et vous voulez créer un fichier parent.zip qui contiendra tous les fichiers et dossiers C: \ Parent sans le dossier parent [c’est-à-dire qu’il démarrera à partir des sous-dossiers .....]

cd /D "C:\Parent"

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

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


1
2018-06-07 18:04



Cela duplique une autre réponse et n'ajoute aucun nouveau contenu. S'il vous plaît ne pas poster une réponse à moins que vous ayez réellement quelque chose de nouveau à contribuer. - DavidPostill♦
Eh bien, alors que je cherchais une solution, je n’avais pas cette solution exacte. Évidemment, je ne vais pas simplement copier des réponses que j'ai trouvées en ligne. Je passe un peu de temps là-dessus alors j'ai senti que je devais le partager. Comme par moi vous pouvez trouver cette réponse exacte ici et sur Stack Overflow posté par moi. - Pritesh Dhokchaule


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

Sous Linux, l'ajout de '*' ne fonctionnait pas pour moi, alors j'ai fini par concocter une ligne de commande plus verbeuse qui donnait le résultat souhaité:

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

===========

explication de script:

  • enregistrer le chemin d'accès actuel à utiliser ultérieurement;
  • naviguer dans le répertoire qui doit être archivé;
  • créer une archive (remarque '.' (point) à la fin);
  • revenir au répertoire d'origine;
  • se débarrasser de la variable qui stockait le chemin d'origine

J'espère que cela pourrait être utile pour quelqu'un.


0
2017-07-17 10:49





Que dis-tu de ça. par exemple. Dossier / sous-dossier1, dossier / sous-dossier2

sélectionnez tous les sous-dossiers> clic droit puis créez une archive> sélectionnez le format

* Le nom de l'archive serait le dossier parent.

Simple, n'est-ce pas?


-1
2018-03-17 05:23



La question concerne le CLI pour 7-zip, pas comment utiliser l'interface graphique. Apprendre à utiliser l'interface graphique est inutile lorsque vous voulez automatiser les choses. - binki