7-Zip 怎么只输出归档文件名并保留路径中的空格
如果只是想把 7-Zip 归档里的路径交给后续脚本,最容易踩的坑是把普通列表按空格切列。7z l -ba 会去掉表头和表尾,但正文仍是固定列宽;更稳妥的做法是使用 7z l -slt -ba,只提取每个条目的 Path = 字段。这样 docs/release notes final.txt 会作为一整行保留下来。
官方地址:https://7-zip.org/
本文只处理归档清单、裸输出和路径解析,不涉及解压覆盖策略。Windows 示例使用 7z.exe,macOS/Linux 示例把程序名换成 7zz 即可。
先从 7-Zip File Manager 确认归档入口
先打开 7-Zip File Manager,选择目标归档并确认中央列表能看到文件项。入口路径可以是“File → Open”,也可以直接把归档拖进窗口;关键是先确认归档本身可读,再把同一个路径交给命令行。

在这个阶段只核对三件事:窗口标题对应目标归档、文件列表出现预期条目、路径中的空格没有被界面截成多个字段。确认后再进入命令行输出。
用 l -ba 去掉表头,但不要按空格切列
l 是列出归档内容,-ba 是 bare output,用来隐藏表头和表尾。它适合让输出更紧凑,但每一行仍可能包含日期、时间、属性、大小和路径等固定列。下面的命令可以先观察裸列表:
# -ba 只去掉表头表尾;归档路径整体加引号,避免外层路径中的空格被 Shell 拆开
7z.exe l -ba "D:\Archives\release bundle.7z"
不要把结果直接写成“按空格取第 6 列”。文件名本身可以包含空格,固定列中的连续空格也可能让简单的 split 或 tokens 方案失效。若只需要给人看,裸列表够用;若要交给脚本,继续使用结构化输出。
用 l -slt -ba 按 Path 字段提取文件名
-slt 会把每个条目展开为字段块,-ba 负责去掉额外的头尾信息。解析时只删除固定前缀 Path = ,不会触碰路径中间的空格。
# 逐条读取 -slt 字段块,保存 Path 和 Attributes,避免按空格切分文件名
$path = $null
$isDirectory = $false
$lines = & 7z.exe l -slt -ba "D:\Archives\release bundle.7z"
foreach ($line in $lines) {
if ($line -eq '') {
# 空行表示一个条目结束,只输出非目录项
if ($path -and -not $isDirectory) { $path }
$path = $null
$isDirectory = $false
continue
}
if ($line.StartsWith('Path = ')) {
# 只去掉字段名前缀,路径内部的空格保持原样
$path = $line.Substring(7)
continue
}
if ($line.StartsWith('Attributes = ')) {
# 目录属性含 D,后续不把目录当作文件名输出
$isDirectory = $line -match 'D'
}
}
# 处理输出末尾没有空行的最后一个条目
if ($path -and -not $isDirectory) { $path }
如果目录项也需要保留,可以去掉 $isDirectory 判断;如果只想快速得到所有 Path,也可以把结构化输出交给 awk:
# macOS/Linux 使用 7zz;只匹配 Path 字段,不按空格切列
7zz l -slt -ba "backup with spaces.7z" |
awk '/^Path = / {sub(/^Path = /, ""); print}'

用可见状态验收输出
运行脚本后,把结果按下面的状态核对:
- 输出中没有 7-Zip 的表头、表尾或字段名,只有一行一个文件路径。
docs/release notes final.txt等带空格路径仍是一整行,没有被拆成多个字段。- 使用目录过滤脚本时,
Attributes = D的目录项不会出现在最终清单。 - 如果归档文件名本身包含空格,命令行中的归档路径仍被一对引号包住。
这套判断能区分两个问题:-ba 负责减少展示噪声,-slt 和字段解析负责让脚本知道每个值的边界。不要把“输出看起来少了表头”误认为“输出已经适合按空格切列”。
常见问题
为什么用了 -ba,文件名还是不能直接 split?
因为 -ba 只隐藏表头和表尾,不会把固定宽度表格变成转义后的 CSV。路径中有空格时,应读取 -slt 的 Path = 字段。
为什么结果里还有目录?
归档清单同时描述文件和目录。解析 Attributes = ,把含 D 的条目过滤掉,就能只输出文件项;如果目录本身也是业务输入,则不要做这一步。
Windows 和 macOS/Linux 的命令是否一样?
参数组合相同,主要差别是程序名和管道工具:Windows 常用 7z.exe 与 PowerShell,macOS/Linux 的官方控制台程序使用 7zz,示例中的路径引号和字段提取思路不变。
最终可以记住一句话:给人看的列表用 l -ba,给脚本读取的文件名用 l -slt -ba,按字段前缀提取而不是按空格切分。
7-Zip 命令行怎么排除目录并生成可复现压缩包
- 上一篇
- 7-Zip 命令行怎么排除目录并生成可复现压缩包
- 下一篇
- 7-Zip 怎么输出压缩包中每个文件的详细属性
-
- 文章 · 软件教程 | 22分钟前 |
- GitHub Actions 怎么用 add-mask 隐藏脚本输出中的临时值
- 113浏览 收藏
-
- 文章 · 软件教程 | 23分钟前 | 自动化 · gitHub actions · 软件教程 · CI/CD GitHub Actions workflow commands stop-commands Actions日志
- GitHub Actions 怎么暂时停止日志里的命令解析
- 238浏览 收藏
-
- 文章 · 软件教程 | 26分钟前 |
- GitHub Actions workflow_call 怎样给复用工作流定义类型化输入
- 457浏览 收藏
-
- 文章 · 软件教程 | 31分钟前 |
- GitHub Actions workflow_run 怎么接收上一个工作流的构建产物
- 304浏览 收藏
-
- 文章 · 软件教程 | 32分钟前 | 自动化 · CI/CD · gitHub actions · GitHub Actions workflow commands GITHUB_OUTPUT 多行输出 步骤输出
- GitHub Actions 为什么写入 GITHUB_OUTPUT 后下个步骤取不到多行值
- 253浏览 收藏
-
- 文章 · 软件教程 | 35分钟前 | 并发控制 · gitHub actions · 软件教程 · 持续集成 · Concurrency workflow GitHub Actions cancel-in-progress 分支运行
- GitHub Actions concurrency 怎么取消同分支的旧运行
- 370浏览 收藏
-
- 文章 · 软件教程 | 45分钟前 |
- 7-Zip 命令行怎么排除目录并生成可复现压缩包
- 174浏览 收藏
-
- 文章 · 软件教程 | 50分钟前 |
- 7-Zip 测试压缩包时怎么用退出码让 CI 判断失败
- 181浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 976次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 982次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 1098次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 1068次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 906次使用
-
- Golang操作命令行的几种方式总结
- 2022-12-27 426浏览
-
- Golang执行cmd命令行的方法
- 2023-01-20 412浏览
-
- golang执行命令行的实现
- 2023-01-07 109浏览
-
- Go语言中使用urfave/cli命令行框架
- 2022-12-31 386浏览
-
- golang实现命令行程序的使用帮助功能
- 2023-01-09 269浏览

