Extraire un certain fichier d'une archive avec 7-Zip depuis la ligne de commande

34

Si j'ai une archive, par exemple, some.zipqui contient un ou plusieurs fichiers, comment puis-je extraire un seul fichier (je connais le nom du fichier) avec 7-Zip à partir de la ligne de commande dans Windows?

Kiesoo
la source

Réponses:

32

Pour faire suite à la réponse de surfasb , ajoutez un indicateur -r à la fin pour récuser:

7z e [archive.zip] -o[outputdir] [fileFilter] -r

Prise en charge de plusieurs filtres:

7z e [archive.zip] -o[outputdir] [fileFilter_1] [fileFilter_2] -r

Exemple:

Ligne de commande de plusieurs filtres:

7z e archive.zip -o outputdir *.xml *.dll -r

PS: j'utilise 7za.exe au lieu de 7z.exe. Voici la commande que j'utilise dans mon script:

7za.exe x archive.zip -o outputdir *.xml *.pdb *.exe *.ocx *.dll -r
zionyx
la source
1
Comment puis-je ajouter plusieurs filtres de fichiers, disons .XMLet .zip? Désolé si je détourne ce fil, je ne voulais tout simplement pas ajouter une question en double.
Fr0zenFyr
1
Devrait être bien en séparant les filtres par l'espace. Voir la réponse modifiée ci-dessus. :)
zionyx
Et comment puis-je extraire un fichier spécifique d'une archive à l'intérieur de l'archive? Disons que le fichier que je recherche est "MyFile.txt" dans "SubArchive.zip" dans "MainArchive.zip". Est-ce possible?
PeterCo
1
@PeterCo, je pense que la commande est uniquement capable d'extraire SubArchive.zipde MainArchive.zipdans votre cas. Vous pouvez exécuter un suivi commande à l' extrait MyFile.txtde SubArchive.zipaprès l'extraction initiale.
zionyx
13

Vous ajoutez simplement le nom de fichier à la fin.

7z e [archive.zip]-o [rép_sortie] [filtreFichier]

surfasb
la source
1
Comment puis-je ajouter plusieurs filtres de fichiers, disons .XMLet .zip? Désolé si je détourne ce fil, je ne voulais tout simplement pas ajouter une question en double.
Fr0zenFyr
C'est une question différente @ Fr0zenFyr. Pour indiquer clairement qu'il ne s'agit pas d'un doublon, vous pouvez référencer cette question par vous-même, puis spécifier en quoi la vôtre est différente.
music2myear
@ music2myear: Merci pour la clarification. La réponse la plus votée de zionyx inclut déjà une solution. Mon commentaire a plus de 2 ans, il serait donc raisonnable de supposer que j'ai utilisé la solution ci-dessus ou que j'ai déjà posté une question et trouvé une réponse (BTW, c'était mon cas). Mon message résolu est sur SO et le fil d'origine a été créé avant que mon commentaire ne soit ici, donc je n'ai pas pu créer de lien vers cette question. :)
Fr0zenFyr
Remarque: comme il est écrit ici, ne mettez pas d'espace entre -o et outputdir.
Bouffon du roi le
4

Si vous regardez la page de manuel de 7z, vous constaterez que la commande suivante peut être utilisée pour extraire un fichier d'une archive 7z (bien que l'utilisation du chemin d'accès soit absente de la page de manuel):

7z x <archive> <path to file>

Exemples:

7z x backup.7z *.html
7z x backup.7z folderwithin/myfile.html

Vous pouvez également utiliser e.

Le guide de l'utilisateur de la version en ligne de commande semble avoir plus d'informations sur l'utilisation réelle.

Perdrix Todd
la source
2
Est-ce le chemin relatif dans l'archive?
music2myear
Oui, le "folderwithin" est un dossier à la racine de l'archive.
Bouffon du roi le
1

Notez que 7zla syntaxe suivante (observer les espaces et les guillemets entourant l' "-oMy Folder"option pour définir le nom du dossier de sortie, m'a pris des heures à comprendre, comme je l'ai fait à l'origine - de la mauvaise façon: * -o "My Folder"*):

7z e "my zip.zip" "-oMy Folder" *.jpg "all of these.*" -r
Albert Marenčin
la source