If I have an archive, for example,
some.zip that contains one or more files, how can I extract only one file (I know the name of the file) with 7-Zip from the command line in Windows?
As a follow-up to surfasb's answer, add a -r flag at the end to recurse:
7z e [archive.zip] -o[outputdir] [fileFilter] -r
Multiple filters support:
7z e [archive.zip] -o[outputdir] [fileFilter_1] [fileFilter_2] -r
Multiple filters command line:
7z e archive.zip -o outputdir *.xml *.dll -r
PS: I use 7za.exe instead of 7z.exe. This is the actual command I use in my script:
7za.exe x archive.zip -o outputdir *.xml *.pdb *.exe *.ocx *.dll -r
If you look at the man page for 7z you will find that the following command can be used to extract a file from a 7z archive (though the usage of path is missing from the man page):
7z x <archive> <path to file>
7z x backup.7z *.html 7z x backup.7z folderwithin/myfile.html
Alternatively you could use
The command line version users guide seems to have more information on the actual usage.
I found that on zsh command line, with 7-zip 16.06, that I had to put double-quotes around the wildcard filter argument. For example, this did not find any PDF files to extract:
7z e "archive has pdf in subdirectory.zip" -r *.pdf
but quoting the wildcard filter did find and extract the PDF file that was in a subdirectory of the zip archive, like this:
7z e "archive has pdf in subdirectory.zip" -r "*.pdf"