У меня есть все виды файлов, которые я скачал отовсюду за эти годы, разбросанные по моим жестким дискам. Я пытаюсь организовать их все и столкнулся с проблемой. Иногда файл загружался неправильно (это было большой проблемой, когда Chromium впервые вышел) и поэтому был поврежден. Для медиа-файлов это может быть просто определить (для этого нужно открыть и изучить файл). Для исполняемых файлов или других двоичных файлов это относительно сложно (исполняемые файлы могут или не могут аварийно завершиться, другие двоичные файлы могут быть полностью неизвестны). Архивные файлы (например, ZIP, RAR, 7Z, EXE, ACE и т.д.), Однако, должны быть довольно простыми, они имеют встроенную функцию обнаружения повреждений.

Моя проблема сейчас в том, что я действительно не хочу открывать и тестировать каждый заархивированный файл на моем диске; это был бы кошмар. Я ищу утилиту, которая может автоматизировать процесс.

Есть ли программа, которая может сканировать архивные файлы на диске и вывести список поврежденных? В идеале он мог бы использовать плагины, чтобы поддерживать дополнительные, менее распространенные типы архивов, такие как LHA, UHA, ARJ и т.д.

2 ответа2

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 (

0

Программа для сканирования архивных файлов на диске (и я предполагаю, что вы имеете в виду zip, rar, 7z, exe, ace, и тому подобное) называется script .

Вы можете использовать 7-zip для test каждого архива в цикле, который ищет все архивные файлы. Вам все еще нужно будет дождаться выполнения test для каждого файла - так что единственное, что вы сохранили - это работа в реальном времени, когда вы тестируете каждый из них по отдельности.

Как прокомментировала Молли, правильный способ хранения архивов - хранить сумму MD5 вместе с файлом. Много раз вы также получаете его с загружаемыми исполняемыми файлами. Если вы начнете хранить суммы MD5 (или любые другие контрольные суммы) с файлами, проверка будет состоять в пересчете суммы MD5 и сравнении с сохраненным значением. Это будет значительно быстрее, чем архивное тестирование (известно, что MD5 работает быстро).

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .