标题: [文件操作] 7z命令行如何只解压指定压缩包里的指定目录下的文件 [打印本页]
作者: freesoft00 时间: 2016-11-19 11:49 标题: 7z命令行如何只解压指定压缩包里的指定目录下的文件
本帖最后由 pcl_test 于 2016-11-19 15:47 编辑
7z命令行有点复制看着。
例如解压缩
7z e archive.7z-oc:\soft *.cpp
从压缩档案 archive.7z 中释放 *.cpp 文件到 c:\soft 文件夹
例如我的这个archive.7z有文件结构。只想解压缩archive.7z\Settings目录下的所有文件,这个命令应该如何写呢?
还有解压缩archive.7z\Settings目录下的txt文件如何写?
谢谢!
作者: pcl_test 时间: 2016-11-19 15:57
- 7z x "archive.7z" "Settings"
- 7z x "archive.7z" "Settings\*.txt"
复制代码
作者: freesoft00 时间: 2016-11-19 18:37
本帖最后由 freesoft00 于 2016-11-20 14:11 编辑
回复 2# pcl_test
我使用了e参数,因为不需要绝对路径。
这个目录Settings\目录下面的文件
11.txt
22.log
33.dll
44
55
test\
test2\
有test和test2子目录,其中也有文件。
我想解压缩Settings\目录下面的几个没有扩展名的文件44和55,
使用:
7z e "archive.7z" "Settings\*.*" 这样只解压缩了有扩展名的文件
使用:
7z e "archive.7z" "Settings"或者7z e "archive.7z" "Settings\*" 这样子目录的文件也都解压缩了。
应该如何写才能符合我的要求呢?
谢谢!
作者: freesoft00 时间: 2016-11-20 14:09
顶贴,多谢了
作者: pcl_test 时间: 2016-11-20 18:45
本帖最后由 pcl_test 于 2016-11-20 19:08 编辑
方法一
排除文件夹,提取文件- 7z x "archive.zip" "Settings\" -x!*\test*\
复制代码
排除文件夹,排除有扩展名文件,提取无扩展名文件- 7z x "archive.zip" "Settings\" -x!*\test*\ -x!*\*.*
复制代码
方法二- 7z l "archive.zip" "Settings\"
复制代码
套进for语句里根据attr和name筛选要提取的内容
作者: freesoft00 时间: 2016-11-21 12:01
回复 5# pcl_test
再次感谢!我试试。
作者: chishingchan 时间: 2024-11-4 23:36
本帖最后由 chishingchan 于 2024-11-4 23:38 编辑
回复 5# pcl_test
下载:https://7-zip.org/a/7zr.exe
同问,如何使用 7zr.exe 只解压指定压缩包里的指定目录下的文件?谢谢!
例如:https://github.com/upx/upx/relea ... upx-4.2.4-win32.zip
使用 7zr.exe 如何解压(提取)upx-4.2.4-win32.zip 压缩包里面的 upx.exe 文件?
作者: aloha20200628 时间: 2024-11-5 12:10
本帖最后由 aloha20200628 于 2024-11-5 12:37 编辑
回复 7# chishingchan
可用以下一行流代码完成 》将当前目录下的 "upx-4.2.4-win32.zip" 中的 "upx.exe" 解压到当前目录...
若不用 -r 参数,则须指明目标文件在压缩包里的全路径位置如 "\abc\xyz\upx.exe"
以下代码假设7z命令行版的全路径是 "C:\Program Files\7-Zip\7zC.exe"
- "C:\Program Files\7-Zip\7zC.exe" e -r -y "upx-4.2.4-win32.zip" "upx.exe"
复制代码
作者: chishingchan 时间: 2024-11-5 18:32
回复 8# aloha20200628
7zc.exe 行不行我不知道,7zr.exe 用这个命令行刚测试过是不行的。
作者: 199221365 时间: 2024-11-5 19:14
使用7-Zip命令行工具来解压缩特定目录或特定类型的文件,你可以使用通配符和路径参数。以下是你提到的两种情况的命令示例:
1. **解压缩`archive.7z`中`Settings`目录下的所有文件到`c:\soft`文件夹**:
```shell
7z e archive.7z -o"c:\soft" Settings\*
```
这里的`-o"c:\soft"`指定了解压缩的目标文件夹,`Settings\*`表示`Settings`目录下的所有文件和子目录。
2. **解压缩`archive.7z`中`Settings`目录下的所有`.txt`文件到`c:\soft`文件夹**:
```shell
7z e archive.7z -o"c:\soft" Settings\*.txt
```
这里的`Settings\*.txt`表示`Settings`目录下所有以`.txt`结尾的文件。
请注意,7-Zip的命令行工具对路径中的空格非常敏感,如果路径中包含空格,你需要将路径用双引号括起来,就像上面的示例那样。
确保你的7-Zip命令行工具的路径已经添加到了系统的环境变量中,这样你才能在任何目录下运行7-Zip命令。如果没有添加,你需要指定7-Zip可执行文件的完整路径来运行这些命令。
作者: chishingchan 时间: 2024-11-5 19:15
回复 7# chishingchan
我应该知道原因了!这单 7zr.exe 文件只支持原生格式(7z 格式),不支持其他格式!
7-zip 即不一样,因为含有库文件
作者: chishingchan 时间: 2024-11-5 19:17
本帖最后由 chishingchan 于 2024-11-5 19:20 编辑
顺便附上我的帮助汉化:- 7-Zip (r) 24.08 (x86) : 伊戈尔·巴甫洛夫 : 公共领域 : 2024-08-11
-
- 用法: 7zr <命令> [<开关>...] <存档名> [<文件名>...] [@列表文件]
-
- <命令>
- a : 将文件添加到存档
- b : 基准测试
- d : 从存档中删除文件
- e : 从压缩文件中提取文件(不使用目录名)
- h : 计算文件的哈希值
- i : 显示有关支持的格式的信息
- l : 列出存档内容
- rn : 重命名存档中的文件
- t : 测试存档的完整性
- u : 更新文件到存档
- x : 提取带有完整路径的文件
-
- <开关>
- -- : 停止开关和 @列表文件 解析
- -ai[r[-|0]][m[-|2]][w[-]]{@列表文件|!通配符} : 包括存档
- -ax[r[-|0]][m[-|2]][w[-]]{@列表文件|!通配符} : 排除存档
- -ao{a|s|t|u} : 设置覆盖模式
- -an : 禁用存档名称字段
- -bb[0-3] : 设置输出日志级别
- -bd : 禁用进度指示器
- -bs{o|e|p}{0|1|2} : 为输出/错误/进度行设置输出流
- -bt : 显示执行时间统计信息
- -i[r[-|0]][m[-|2]][w[-]]{@列表文件|!通配符} : 包含文件名
- -m{参数} : 设置压缩方法
- -mmt[N] : 设置 CPU 线程数
- -mx[N] : 设置压缩级别: -mx1 (最快) ... -mx9 (终极)
- -o{目录} : 设置输出目录
- -p{密码} : 设置密码
- -r[-|0] : 递归子目录以进行名称搜索
- -sa{a|e|s} : 设置存档名称模式
- -scc{UTF-8|WIN|DOS} : 为控制台输入/输出设置字符集
- -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : 为列表文件设置字符集
- -scrc[CRC32|CRC64|SHA256|*] : 设置 x、e、h 命令的哈希函数
- -sdel : 压缩后删除文件
- -seml[.] : 通过电子邮件发送存档
- -sfx[{名称}] : 创建 SFX 存档
- -si[{名称}] : 从 标准输入 读取数据
- -slp : 设置大页面模式
- -slt : 显示 l (列表) 命令的技术信息
- -snh : 将硬链接存储为链接
- -snl : 将符号链接存储为链接
- -sni : 存储 NT 安全信息
- -sns[-] : 存储 NTFS 备用流
- -so : 将数据写入 标准输出
- -spd : 禁用文件名通配符匹配
- -spe : 消除提取命令中根文件夹的复制
- -spf[2] : 使用完全限定的文件路径
- -ssc[-] : 设置敏感大小写模式
- -sse : 如果无法打开某个输入文件,则停止创建压缩包
- -ssp : 存档时不更改源文件的最后访问时间
- -ssw : 压缩共享文件
- -stl : 从最近修改的文件中设置存档时间戳
- -stm{十六进制掩码} : 设置 CPU 线程关联掩码(十六进制数)
- -stx{类型} : 排除存档类型
- -t{类型} : 设置存档类型
- -u[-][p#][q#][r#][x#][y#][z#][!新存档名称] : 更新选项
- -v{大小}[b|k|m|g] : 创建卷
- -w[{路径}] : 分配工作目录。空路径表示临时目录
- -x[r[-|0]][m[-|2]][w[-]]{@列表文件|!通配符} : 排除文件名
- -y : 假设所有询问均回答是
复制代码
作者: aloha20200628 时间: 2024-11-5 19:19
本帖最后由 aloha20200628 于 2024-11-5 20:05 编辑
回复 9# chishingchan
7zC.exe是其命令行版,批处脚本就用这个!本人日常即用此版
或从本坛第三方直接下载 7z.exe (http://bcn.bathome.net/s/tool/index.html?key=7z),单个文件落地即用,置于 *.zip 同目录,用以下代码即可...
- 7z.exe e -r -y "upx-4.2.4-win32.zip" "upx.exe"
复制代码
作者: chishingchan 时间: 2024-11-5 19:24
回复 13# aloha20200628
并非不会使用,只是不懂这个 7zr.exe 单文件为何不能提取文件!第 11 楼已给出答案。
如果一个单文件能完成任务,就不需要安装一个压缩包程序及依赖文件。
作者: 77七 时间: 2024-11-6 12:34
回复 14# chishingchan
试试7za, https://www.7-zip.org/a/7za920.zip
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |