Board logo

标题: [文件操作] 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

  1. 7z x "archive.7z" "Settings"
  2. 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 编辑

方法一
排除文件夹,提取文件
  1. 7z x "archive.zip" "Settings\" -x!*\test*\
复制代码
排除文件夹,排除有扩展名文件,提取无扩展名文件
  1. 7z x "archive.zip" "Settings\" -x!*\test*\ -x!*\*.*
复制代码
方法二
  1. 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"
  1. "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 编辑

顺便附上我的帮助汉化:
  1. 7-Zip (r) 24.08 (x86) : 伊戈尔·巴甫洛夫 : 公共领域 : 2024-08-11
  2. 用法: 7zr <命令> [<开关>...] <存档名> [<文件名>...] [@列表文件]
  3. <命令>
  4.   a : 将文件添加到存档
  5.   b : 基准测试
  6.   d : 从存档中删除文件
  7.   e : 从压缩文件中提取文件(不使用目录名)
  8.   h : 计算文件的哈希值
  9.   i : 显示有关支持的格式的信息
  10.   l : 列出存档内容
  11.   rn : 重命名存档中的文件
  12.   t : 测试存档的完整性
  13.   u : 更新文件到存档
  14.   x : 提取带有完整路径的文件
  15. <开关>
  16.   -- : 停止开关和 @列表文件 解析
  17.   -ai[r[-|0]][m[-|2]][w[-]]{@列表文件|!通配符} : 包括存档
  18.   -ax[r[-|0]][m[-|2]][w[-]]{@列表文件|!通配符} : 排除存档
  19.   -ao{a|s|t|u} : 设置覆盖模式
  20.   -an : 禁用存档名称字段
  21.   -bb[0-3] : 设置输出日志级别
  22.   -bd : 禁用进度指示器
  23.   -bs{o|e|p}{0|1|2} : 为输出/错误/进度行设置输出流
  24.   -bt : 显示执行时间统计信息
  25.   -i[r[-|0]][m[-|2]][w[-]]{@列表文件|!通配符} : 包含文件名
  26.   -m{参数} : 设置压缩方法
  27.     -mmt[N] : 设置 CPU 线程数
  28.     -mx[N] : 设置压缩级别: -mx1 (最快) ... -mx9 (终极)
  29.   -o{目录} : 设置输出目录
  30.   -p{密码} : 设置密码
  31.   -r[-|0] : 递归子目录以进行名称搜索
  32.   -sa{a|e|s} : 设置存档名称模式
  33.   -scc{UTF-8|WIN|DOS} : 为控制台输入/输出设置字符集
  34.   -scs{UTF-8|UTF-16LE|UTF-16BE|WIN|DOS|{id}} : 为列表文件设置字符集
  35.   -scrc[CRC32|CRC64|SHA256|*] : 设置 x、e、h 命令的哈希函数
  36.   -sdel : 压缩后删除文件
  37.   -seml[.] : 通过电子邮件发送存档
  38.   -sfx[{名称}] : 创建 SFX 存档
  39.   -si[{名称}] : 从 标准输入 读取数据
  40.   -slp : 设置大页面模式
  41.   -slt : 显示 l (列表) 命令的技术信息
  42.   -snh : 将硬链接存储为链接
  43.   -snl : 将符号链接存储为链接
  44.   -sni : 存储 NT 安全信息
  45.   -sns[-] : 存储 NTFS 备用流
  46.   -so : 将数据写入 标准输出
  47.   -spd : 禁用文件名通配符匹配
  48.   -spe : 消除提取命令中根文件夹的复制
  49.   -spf[2] : 使用完全限定的文件路径
  50.   -ssc[-] : 设置敏感大小写模式
  51.   -sse : 如果无法打开某个输入文件,则停止创建压缩包
  52.   -ssp : 存档时不更改源文件的最后访问时间
  53.   -ssw : 压缩共享文件
  54.   -stl : 从最近修改的文件中设置存档时间戳
  55.   -stm{十六进制掩码} : 设置 CPU 线程关联掩码(十六进制数)
  56.   -stx{类型} : 排除存档类型
  57.   -t{类型} : 设置存档类型
  58.   -u[-][p#][q#][r#][x#][y#][z#][!新存档名称] : 更新选项
  59.   -v{大小}[b|k|m|g] : 创建卷
  60.   -w[{路径}] : 分配工作目录。空路径表示临时目录
  61.   -x[r[-|0]][m[-|2]][w[-]]{@列表文件|!通配符} : 排除文件名
  62.   -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 同目录,用以下代码即可...
  1. 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