双击一个 RAR,跳出来的窗口写着「数据错误 - 该文件已损坏」;有时是进度条走到一半停住,提示 CRC 校验失败。这两种提示在 Windows 10/11 上都遇到过,共同点是整包内容一个都取不出来,第一反应往往是这个包彻底废了。
实际情况没有这么绝对。下载中断、分卷没凑齐、旧工具读不了 RAR5,这三类原因造成的报错,包内数据通常还在,坏的往往只是其中某几个文件的数据块。这个判断决定了接下来该做什么:不必急着重下,也不用急着删包。
处理顺序从代价最小的那一步开始:先跑一次「修复压缩文件」,打开同目录生成的 rebuilt 包;再用 7z t 测出坏的是哪一个文件;用 7z x 把它排除,把其余文件先提取出来;最后才考虑回源头重下一份。
下面这套流程的适用对象是本地已有的 RAR 包,含分卷包,系统为 Windows 10/11,7-Zip 与 WinRAR 的命令行都能用。
同一个「数据错误」提示,背后至少有四种情况。报错停在哪个位置,决定了后面该处理哪一层。
现象 | 最可能的原因 | 先做哪一步 |
|---|---|---|
修复跑完,双击原包还是同一句报错 | 打开的还是原来那个包,修复产物没被打开 | 打开同目录的 |
| 坏块落在包内具体文件上 | 用 |
解压走到固定百分比就中断 | 分卷少了一卷 | 补齐分卷并放到同一目录 |
旧工具读到一半报损坏 | 工具版本读不了 RAR5 | 升级解压工具后复测 |

WinRAR 的「修复压缩文件」不改动原包,只在同一个文件夹里生成一个新的 rebuilt.原包名.rar。不少人修复完又去双击原来那个包,看到的当然还是同一句报错,因为原包从头到尾没被碰过。
rebuilt.原包名.rar,双击解压要打开的是它。修复能不能救回数据,主要看
rebuilt包的体积,跟修复按钮点了几次没关系。rebuilt 包比原包小一大截,说明能救回来的数据本来就有限,别指望它和原包一样大。
打开 rebuilt 包仍然报「数据错误 - 该文件已损坏」或者 CRC 校验失败,说明坏的就是包内某个具体文件,转到下一步定位。
7z t 做的是完整性测试,工具会逐条读取包内每个文件并算一遍 CRC,报错那一行前面的文件名,就是损坏的那个。
测试要在压缩包所在目录里跑,路径带空格要用双引号整体包住,否则命令会被系统拆成两段。
7z t "D:\下载\包.rar"如果提示「不是内部或外部命令」,说明 7z.exe 不在 PATH 里,换成完整路径再跑:
"C:\Program Files\7-Zip\7z.exe" t "D:\下载\包.rar"D:\下载。CRC Failed 或「数据错误 - 该文件已损坏」的那一行,前面的文件名就是坏文件,记下它的完整相对路径。Expected / Actual 两个校验值,两个值差得离谱,说明文件被改过或者被截断。判据很直接:整包每一行都在报错,多半是下载没下完;只有一两行报错,那是单个文件损坏,包内其余内容都还在。
提取时用 7z x 显式排除坏文件,让好文件先落地,别让一个坏文件卡住整个包。
7z x "D:\下载\包.rar" -x!'data\img\a.png' -o'D:\out'7z t 报出来的那一行保持一致。D:\out,比一比文件数量和总大小,确认好文件齐了。
反复对同一个坏包重新解压不会变好,还会覆盖已经提取出来的好文件。换一个输出目录再试。
缺的那几个文件再单独想办法,别为了它们把已经落地的文件覆盖一遍。
分卷包少一卷,或者 RAR5 包用旧工具读,都会卡在同一个进度上报损坏,看起来像文件坏了。
包.part1.rar、包.part2.rar,少任何一卷都必须先补齐;老式分卷则是 包.rar、包.r00、包.r01 这种形式。7z t 测一遍,结果变了就说明之前是工具版本的问题,文件本身没坏。
分卷齐了、版本也新了还是报错,说明损坏在数据本身,回到下载源头取一份新包更划算。
多数坏包来自下载环节,回原下载页换一份新的,往往比在本地折腾快得多。
7z t 测一次,正常了就不用做容错提取。本地核对校验值可以用 certutil,把它输出的那串和发布方给的 MD5 比一比:
certutil -hashfile "D:\下载\包.rar" MD5确实拿不到干净包时,只做一次容错提取:对坏包做完整性检测,尽量把未损坏的文件提取出来,能救多少先救多少。
如果解压时硬盘有异响,或者从别的文件夹复制文件也报读错误,先备份重要数据再动手,坏道上的文件继续读可能直接失败。
rar文件损坏无法解压,提示「数据错误 - 该文件已损坏」怎么办?
先跑一次「修复压缩文件」,打开同目录生成的 rebuilt 包;还是报错就用 7z t 测出坏文件,再排除它提取其余内容。
修复之后 rebuilt 包还是 CRC 校验失败,是没修好吗?
修复只重建能读到的部分。包内某个文件的数据块已经损坏时,rebuilt 包照样过不了校验,这时按坏文件名单独处理,缺的那几个文件回源头重下。
7z t 显示 CRC Failed,怎么只把没坏的文件提取出来?
用 7z x "包.rar" -x!'坏文件路径' -o'输出目录',排除项写包内相对路径;也可以直接在 WinRAR 的解压窗口里勾选「保留损坏的文件」。
分卷压缩包少了一卷还能解压吗?
不能。少任何一卷,从 part1 开始解压到那一卷的位置就会中断,必须先把分卷补齐,并且放在同一个文件夹里。
RAR5 压缩包用旧版工具解压提示文件已损坏,要升级什么?
升级解压工具本身,把 7-Zip、WinRAR 都更到近两年的版本,再用 7z t 复测一遍;能正常读完,就说明之前是版本太旧。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。