将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 - 并在选项卡上阅读帮助目录列表项命令行版本下列出的页面。命令ex 在帮助以及所有其他命令和开关中都有解释。您只需要阅读帮助。 【参考方案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 文件提取到目标目录中

PHP Zip:提取目录的内容

7zip:在C#中,如何将不同目录下的多个同名文件添加到同一个zip文件中?

从 zip 中提取文件而不使用 python zipfile 保留***文件夹

将 zip 文件的内容作为 StorageFile 对象读取而不提取?

从 zip 文件中提取文件并保留 mod 日期?