从命令行使用7-Zip从存档中提取特定文件


Answers:


32

作为surfasb答案的后续措施,请在末尾添加-r标志以递归:

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

多种过滤器支持:

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

例:

多个过滤器命令行:

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

PS:我使用7za.exe而不是7z.exe。这是我在脚本中使用的实际命令:

7za.exe x archive.zip -o outputdir *.xml *.pdb *.exe *.ocx *.dll -r

1
如何添加多个文件过滤器,例如.XML.zip?抱歉,如果我要劫持该线程,我只是不想添加重复的问题。
Fr0zenFyr 2014年

1
应该通过将过滤器按空间分开来很好。请参阅上面的编辑答案。:)
zionyx

以及如何从档案内部的档案中提取特定文件?假设我要查找的文件是“ MainArchive.zip”中“ SubArchive.zip”中的“ MyFile.txt”。这可能吗?
PeterCo '17

1
@PeterCo,我认为该命令只能SubArchive.zipMainArchive.zip您的情况中提取。您可以运行跟进命令提取MyFile.txtSubArchive.zip最初的提取后。
zionyx

13

您只需在文件名末尾添加即可。

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


1
如何添加多个文件过滤器,例如.XML.zip?抱歉,如果我要劫持该线程,我只是不想添加重复的问题。
Fr0zenFyr 2014年

@ Fr0zenFyr是一个不同的问题。为了明确说明它不是重复的,您可以自己引用此问题,然后指定您的问题与众不同。
music2myear17年

@ music2myear:感谢您的澄清。zionyx投票最多的答案已经包含了一个解决方案。我的评论已有2年以上的历史,因此假设我使用以上解决方案或已经发布问题并找到答案(BTW,这是我的情况),这是一个合理的猜测。我的已解决帖子是关于SO的,在此发表评论之前已创建了原始线程因此无法链接到此问题。:)
Fr0zenFyr

注意:如此处所述,请勿在-o和outputdir之间放置空格。
国王的小丑

4

如果查看7z 的手册页,您会发现可以使用以下命令从7z存档中提取文件(尽管手册页中缺少路径的用法):

7z x <archive> <path to file>

例子:

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

或者,您可以使用e

命令行版本的用户指南似乎对实际使用情况的更多信息。


2
那是存档内的相对路径吗?
music2myear17年

是的,“ folderwithin”是档案根目录中的一个文件夹。
国王的小丑

1

请注意,它7z具有以下语法(观察"-oMy Folder"设置输出文件夹名称的选项周围的空格和引号,使我花了几个小时才能弄清楚,因为我最初是这样做的–错误的方式:* -o "My Folder"*):

7z e "my zip.zip" "-oMy Folder" *.jpg "all of these.*" -r
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.