web-dev-qa-db-fra.com

7Zip - Ligne de commande: Exclure le (s) dossier (s) par un motif générique?

Avez-vous une idée de la façon d’exclure un ou plusieurs chemins contenant des caractères génériques d’une commande 7Zip en ligne de commande?

Je fais quelque chose comme ça:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0

et voudrait exclure tout dossier \bin\*.* ou \obj\*.* trouvé sous "FolderToArchive". Pour exclure des fichiers, vous pouvez utiliser le paramètre -x. Le fichier d'aide donne cet exemple d'utilisation de -x:

7z a -tzip archive.Zip *.txt -x!temp.*

C'est excellent pour exclure un fichier. Mais, encore une fois, je voudrais exclure un dossier spécifié par un caractère générique. Sous mon "FolderToArchive", il y a plusieurs dossiers. Sous ces dossiers, il peut y avoir ou non des dossiers bin\ et obj\. Je voudrais ne pas les inclure dans les archives.

J'ai essayé des modèles comme:

-x!bin\*-x!bin\*.*-x!\bin\*-x!\bin\*.*-x!\\bin\\*-x!\\bin\\*.*

Aucun ne semble exclure. Est-ce simplement une limitation de 7zip?

104
Yoopergeek

Pour exclure les dossiers bin et obj de manière récursive, vous pouvez utiliser la commande suivante:

7z.exe a -t7z archive.7z FolderToArchive\ -mx0 -xr!bin -xr!obj
121
heavyd

Pour éviter les bogues, utilisez -r ou -xr avec précaution.

supposons que vous ayez des répertoires comme:

.\path1\path2\bin
.\path1\path2\src
.\path3\path4\path5\bin
.\path3\path4\path5\src

et lancez la commande:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -xr!bin

ce que vous avez dans archive.7z:

.\path2\src
.\path5\src

C'est-à-dire que .\path2\ et .\path5\ sont devenus le dossier top folder dans archive.7z et les deux répertoires bin ont été exclus.

-x ne supporte que chemin/nom_fichier relatif vers le dossier principal de l'archive.

Donc, si vous voulez seulement exclure .\path1\path2\bin, mais inclure tous les autres répertoires 'bin', la commande devrait ressembler à ceci:

7z a -t7z archive.7z .\path1\path2 .\path3\path4\path5 -x!path2\bin

J'ai essayé d'utiliser le chemin absolu dans -x, mais je n'y suis jamais parvenu.


Mise à jour:

Il existe une option -spf dans 7z pour Linux qui fonctionne avec un chemin absolu.

Selon Marco , -spf est également disponible sous Windows à partir de 7-Zip 15.14

13
zhazha