J'ai la structure de dossier 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
.
Lancer 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 contient tous les fichiers qu'il contenait. 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 souhaite pas non plus exécuter de manière récursive l'outil de ligne de commande pour chaque fichier / dossier.
Existe-t-il un commutateur offrant cette fonctionnalité?
command-line
compression
7-zip
bien joué.
la source
la source
cd
dans folder1 et7za.exe a -tzip ..\folder1.zip *.*
?Réponses:
À partir du fichier d’ aide 7-Zip :
Donc, la commande que vous voudriez être:
7za.exe a folder1.zip .\folder1\*
Faites également attention au traitement des caractères génériques par 7-Zip. Cela ne traite pas
*.*
comme "tous les fichiers" - cela signifie "tous les fichiers avec une période dans le nom du fichier". Les fichiers sans extension seront manquants. Si vous voulez vraiment tous les fichiers, utilisez*
plutôt.Enfin, le
-tzip
paramètre n'est pas nécessaire si le nom du fichier d'archive se termine par.zip
. 7-Zip est suffisamment intelligent pour déterminer le format que vous souhaitez dans ces cas. Ce n'est nécessaire que si vous voulez une extension personnalisée (par exemple7za.exe a -tzip foo.xpi <files>
pour un add-on Mozilla).la source
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.-à-d. Qu'il démarrera à partir de Sous-dossiers .....]
Cela va créer Parent.zip dans C: \ Parent
la source
*.*
signifie pas "tous les fichiers", mais plutôt "tous les fichiers qui ont un point comme partie du nom du fichier". Donc, cette réponse omettra en fait les fichiers sans extension (ceci est noté dans la réponse acceptée).Juste pour développer la réponse acceptée (je n'ai pas pu ajouter de commentaire ici):
Sous Linux, ajouter '*' ne fonctionnait pas pour moi, alors j'ai fini par concocter une ligne de commande plus détaillée qui donnait le résultat souhaité:
===========
explication du script:
J'espère que cela pourra être utile à quelqu'un.
la source
*
guillemets (sinon, le shell le développera dans les fichiers de cet endroit).Que dis-tu de ça. Par exemple, dossier / sous-dossier1, dossier / sous-dossier2
* Le nom de l'archive serait le dossier parent.
Simple droit?
la source