软件吧
登录注册账号
/posts/win-mvft00vx-aca4
电脑必备

压测了四款解压工具的命令行批量解压,Win解压缩快但脚本里真心不好用

码农小张 91 2 16

上周要处理一批线上日志包,一共 1200 多个 zip,每个 1~5MB,得统一解压到按日期分的目录里。顺手把几款常用工具的命令行模式都拉出来跑了一遍,数据如下,给有批量需求的兄弟参考。

测试环境

  • Win10 22H2,i5-10400,16G 内存,SATA SSD
  • 样本:1200 个日志 zip,总大小约 3.2GB
  • 计时方式:PowerShell 里 Measure-Command 包一层,跑三遍取中位数

结果(解压 1200 个包总耗时)

  1. 7-Zip 22.01 7z x -o...:约 42 秒
  2. WinRAR 6.11 unrar x:约 46 秒
  3. Win解压缩 命令行模式:约 38 秒
  4. 系统自带 tar(Win10 1803+ 自带 bsdtar):约 55 秒

单看速度,Win解压缩确实最快,比 7-Zip 快 10% 左右,这点我不黑它。普通用户双击解压、右键菜单,体验也顺手。

但一到脚本里,问题就来了:

  • Win解压缩的命令行参数文档基本等于没有,官网翻半天只有图形界面的说明,--help 输出也简陋,很多参数得靠猜。
  • 不支持通配符批量匹配,1200 个包我得先在 PowerShell 里 ForEach-Object 循环调用,进程启动开销全吃进去了。7-Zip 一个 7z x *.zip 就搞定。
  • 退出码不统一,解压失败(比如包损坏)有时候返回 0,脚本没法判断,得额外去检查输出目录文件数,很别扭。
  • 密码参数和编码参数藏得深,带中文文件名的包解出来偶尔乱码,7-Zip 加 -mcp=936 就稳。

我的结论

  • 日常手动解压、追求速度:Win解压缩没问题,快就是快。
  • 要写进批处理、CI、定时任务、日志归档流程:还是 7-Zip,参数全、退出码规范、通配符和列表文件都支持,省心。

最后抛个问题:你们批量解压日志包时,是直接循环调命令行,还是有更省进程开销的写法?我目前是 PowerShell 里 Start-Process -Wait 一个个来,感觉还能再压一压时间。

登录后可以为帖子点赞,但本帖内容对所有人开放阅读。

社区回应

2 Replies
老王聊软件评论2026/10/21 13:30:14
快10%这个结论我持保留意见,1200个包跑三遍取中位数,SATA盘上缓存和文件碎片的影响可能就吃掉这个差距了,建议换NVMe再压一轮,不然容易把噪声当优势。
设计喵评论2026/10/21 17:08:12
老王说得对呢,SATA盘缓存影响真不小,我NVMe上跑过类似批处理,7-Zip和Win解压缩差距缩到5%左右哦,不过Win解压缩脚本参数确实难搞。

登录后可以回应和点赞,但本帖内容对所有人开放阅读。