将zip内容提取到与zip文件同名的目录中,保留目录结构[关闭]
Posted
技术标签:
【中文标题】将zip内容提取到与zip文件同名的目录中,保留目录结构[关闭]【英文标题】:Extract zip contents into directory with same name as zip file, retain directory structure [closed] 【发布时间】:2017-01-30 09:31:02 【问题描述】:我想编写一个 bat 脚本来执行以下操作:
使用 7 Zip 将现有 zip 文件中的文件提取到与原始 zip 文件同名的文件夹中(不包括 .zip 扩展名),并保留 zip 文件中包含的文件和目录结构。
我可以使用
将所有相同的文件提取到当前目录中"C:\Program Files (x86)\7-Zip\7z.exe" e myZipFile.zip
【问题讨论】:
@Harriet 在从命令行使用 7-Zip 时,始终建议打开 7-Zip 的帮助 - 7-Zip 的程序文件夹中的文件7-zip.chm
- 并在选项卡上阅读帮助目录列表项命令行版本下列出的页面。命令e
和x
在帮助以及所有其他命令和开关中都有解释。您只需要阅读帮助。
【参考方案1】:
通过输入"C:\Path To\7-Zip\7z.exe"
阅读7z
-command 的帮助可以获得所有可能参数的帮助。在这里,我们发现了以下有趣的:
e : Extract files from archive (without using directory names)
和
x : eXtract files with full paths
反复试验表明,后者无需付出更大的努力即可满足您的期望行为:)
在@BadmintonCat 的评论之后,添加了将创建一个文件夹以将所有内容压缩到其中(用作批处理脚本,文件作为参数):
@echo off
SET "filename=%~1"
SET dirName=%filename:~0,-4%
7z x -o"%dirName%" "%filename%"
来自帮助:-oDirectory : set Output directory
。如果目录不存在,7z 将创建该目录。
【讨论】:
【参考方案2】:只需使用命令:7z x *.zip -o\*
【讨论】:
我不确定这是否能如他所愿。-o
选项需要一个名为的特定目录。使用-o\*
要么会扩展到所有文件(并且可能会出错),要么会创建一个实际名为*
的目录(也不是他想要的)。
将*.zip
替换为 zip 文件的实际名称,效果很好。 7z e yourfile.zip -o\*
find . -name "*.zip" -exec 7z x "" -o\* \;
基于答案和 cmets以上是关于将zip内容提取到与zip文件同名的目录中,保留目录结构[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
使用 Python 将 zip 文件和嵌套的 zip 文件提取到目标目录中
7zip:在C#中,如何将不同目录下的多个同名文件添加到同一个zip文件中?
从 zip 中提取文件而不使用 python zipfile 保留***文件夹