自动扫描损坏的存档文件

自动扫描损坏的存档文件

多年来,我从各处下载了各种各样的文件,这些文件散落在我的硬盘里。我正在整理所有文件时遇到了问题。有时文件下载不正确(这是 Chromium 首次推出时的一个大问题),因此损坏。对于媒体文件,这是可能很容易确定(需要实际打开并检查文件)。对于可执行文件或其他二进制文件,这相对困难(可执行文件可能会崩溃也可能不会崩溃,其他二进制文件可能完全未知)。但是存档文件(例如 ZIP、RAR、7Z、EXE、ACE 等)应该相当简单,它们具有内置损坏检测功能。

我现在的问题是,我真的不想打开并测试驱动器中每个存档文件;那将是一场噩梦。我正在寻找一个可以自动执行该过程的实用程序。

是否有一个程序可以扫描驱动器上的存档文件并列出已损坏的文件?理想情况下,它能够使用插件,以便支持其他不太常见的存档类型,例如 LHA、UHA、ARJ 等。

答案1

如果您获取 7-Zip 的命令行版本(7za.exe)并将其放在系统路径的某个位置(如C:\Windows),则以下脚本可能可以作为基准:

@echo off
set DownloadPath=C:\Path\To\Downloaded\Stuff
set ErrorReport=C:\Path\To\BadFiles.txt
pushd %DownloadPath%
for /r %%i in (*.7z;*.zip;*.cab;*.rar;*.ace) do (
    7za.exe t "%%i"
    if ERRORLEVEL 1 echo %%i>>%ErrorReport%
)
popd

将上述内容复制并粘贴到.cmd文件中,确保修改set DownloadPath=set ErrorReport=行以指向有效位置。ErrorReport如果文件不存在,则会创建该文件,如果文件已存在,则会将其附加到该文件。因此,您可以运行脚本一次,修改DownloadPath,然后再次运行它,而不会丢失之前的结果。

如果您只是想检查每个文件而不限制扩展名,则可以用 替换*.7z;*.zip...*因此该for行将显示为:for /r %%i in (*) do (

答案2

用于扫描磁盘上的存档文件的程序(我假设您的意思是zip, rar, 7z, exe, ace,和类似的程序)称为script

你可以使用7-ziptest循环查找所有存档文件,然后对每个存档执行该操作。您仍然需要等待对每个文件执行该操作——test因此您唯一节省的就是实际单独测试每个文件的辛苦工作。

就像 Molly 所评论的那样,存储档案的正确方法是将 MD5 和与文件一起保存。很多时候,您还会在下载的可执行文件中准备好它。如果您开始将 MD5 和(或任何其他校验和)与文件一起保存,则检查将只是重新计算 MD5 和并与存储的值进行比较。这将比档案测试快得多(众所周知,MD5 速度很快)。

相关内容