当前位置:首页 > 文章列表 > 文章 > 软件教程 > 7-Zip 怎么只输出归档文件名并保留路径中的空格

7-Zip 怎么只输出归档文件名并保留路径中的空格

来源:17golang原创 2026-11-11 05:14:35 0浏览 收藏

如果只是想把 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”,也可以直接把归档拖进窗口;关键是先确认归档本身可读,再把同一个路径交给命令行。

7-Zip 归档文件管理器中选中带空格路径的文件并准备使用 l -ba 的界面说明图
图1:7-Zip 归档入口与裸列表参数的操作示意图,不是运行截图。

在这个阶段只核对三件事:窗口标题对应目标归档、文件列表出现预期条目、路径中的空格没有被界面截成多个字段。确认后再进入命令行输出。

用 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 结构化列表中按 Path 字段提取并过滤目录后的文件项说明图
图2:按 Path 字段解析并排除目录项后的结果示意图,不是运行截图。

用可见状态验收输出

运行脚本后,把结果按下面的状态核对:

  • 输出中没有 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,按字段前缀提取而不是按空格切分。

版本声明
本文转载于:17golang原创 如有侵犯,请联系study_golang@163.com删除
7-Zip 命令行怎么排除目录并生成可复现压缩包7-Zip 命令行怎么排除目录并生成可复现压缩包
上一篇
7-Zip 命令行怎么排除目录并生成可复现压缩包
7-Zip 怎么输出压缩包中每个文件的详细属性
下一篇
7-Zip 怎么输出压缩包中每个文件的详细属性
查看更多
最新文章
查看更多
课程推荐
  • 前端进阶之JavaScript设计模式
    前端进阶之JavaScript设计模式
    设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
    543次学习
  • GO语言核心编程课程
    GO语言核心编程课程
    本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
    516次学习
  • 简单聊聊mysql8与网络通信
    简单聊聊mysql8与网络通信
    如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
    500次学习
  • JavaScript正则表达式基础与实战
    JavaScript正则表达式基础与实战
    在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
    487次学习
  • 从零制作响应式网站—Grid布局
    从零制作响应式网站—Grid布局
    本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
    485次学习
查看更多
AI推荐
  • PubMedQA数据集详解:生物医学问答基准、功能与应用指南
    PubMedQA
    深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
    976次使用
  • H2O EvalGPT:开源LLM大模型评估与排行榜工具
    H2O EvalGPT
    H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
    982次使用
  • LMArena是什么?伯克利AI模型评估平台使用指南与功能解析
    LMArena
    LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
    1098次使用
  • 斯坦福HELM:大语言模型Holistic Evaluation整体评估框架详解
    HELM
    深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
    1068次使用
  • MMBench详解:多模态大模型基准测试、功能特点与使用指南
    MMBench
    MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
    906次使用
微信登录更方便
  • 密码登录
  • 注册账号
登录即同意 用户协议 和 隐私政策
返回登录
  • 重置密码