ynbIpb
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Ну как перебирать файлы и считать MD5 вот пример: Код: #include "md5.au3" #include <File.au3> Global $BufferSize = 0x20000 Global $sFilesForDel = FileSelectFolder ("Open file", "", "", @ScriptDir) If $sFilesForDel = "" Then Exit $aFilesForDel = _FileListToArray($sFilesForDel, "*", 1) For $i=1 To $aFilesForDel[0] $FileHandle = FileOpen($sFilesForDel & "\" &$aFilesForDel[$i], 16) $MD5CTX = _MD5Init() For $j = 1 To Ceiling(FileGetSize($sFilesForDel & "\" &$aFilesForDel[$i]) / $BufferSize) _MD5Input($MD5CTX, FileRead($FileHandle, $BufferSize)) Next $Hash = _MD5Result($MD5CTX) FileClose($FileHandle) MsgBox (0, "", "Файл: "&$aFilesForDel[$i]&@CRLF&"md5: " & Hex ($Hash)) Next | MD5 UDF от Ward'a А дальше уж сравнение со списком додумаешь... ------------- updated -------------- Всё таки не додумал. Дополненный вариант: Код: #include "md5.au3" #include <File.au3> #include <Array.au3> ; для отладки $aMd5List = IniReadSection (@ScriptDir & "\md5.ini", "Files"); читаем секцию с MD5 хэшами из ini файла ;_ArrayDisplay($aMd5List) ; для отладки Global $BufferSize = 0x20000 Global $sFilesForDel = FileSelectFolder ("Open file", "", "", @ScriptDir); выбираем каталог с файлами If $sFilesForDel = "" Then Exit ; если ничего не выбрали, выход $aFilesForDel = _FileListToArray($sFilesForDel, "*", 1) ; читаем список файлов в массив ;_ArrayDisplay($aFilesForDel) ; для отладки $sResult = "" ; создаём переменную, для хранения результата работы For $i=1 To $aFilesForDel[0] ; цикл перебора файлов в каталоге $FileHandle = FileOpen($sFilesForDel & "\" &$aFilesForDel[$i], 16) $MD5CTX = _MD5Init() For $j = 1 To Ceiling(FileGetSize($sFilesForDel & "\" &$aFilesForDel[$i])/ $BufferSize) ; цикл подсчёта MD5 хэша текущего файла _MD5Input($MD5CTX, FileRead($FileHandle, $BufferSize)) Next $sHash = Hex (_MD5Result($MD5CTX)) FileClose($FileHandle) For $l = 1 To $aMd5List[0][0] ; цикл перебора списка хэшей из ini файла If $sHash = $aMd5List[$l][1] Then ; если хэш текущего файла совпадает с записью в ini файле FileDelete ($sFilesForDel & "\" &$aFilesForDel[$i]) ; удаляем текущий файл $sResult &= $sFilesForDel & "\" &$aFilesForDel[$i] & @CRLF ; записываем путь в переменную. EndIf Next Next If $sResult <> "" Then ; если переменная не пуста, значит искомые файлы найдены MsgBox (0, "Готово!", "Удалённые файлы: "&@CRLF& $sResult) Else MsgBox (0, "Готово!", "Нет файлов для удаления") EndIf | md5_del_files.rar | Всего записей: 1645 | Зарегистр. 01-05-2006 | Отправлено: 00:19 18-05-2014 | Исправлено: ynbIpb, 12:26 18-05-2014 |
|