Volniy
|
Posted: Sat Apr 07, 2007 04:56 Post subject: Удаление дубликатов файлов с одинаковым размером |
|
|
yuris5 wrote: | Вот бы ещё что бы работал при разных именах файлов... |
Неожиданно мне и самому это дело понадобилось. Вот вариант реализации скрипта. Не забываем об выделение всего списка с результатами поисков перед его применением. Строка с удалением только что выделенных строк закомментирована, это для самых смелых
Code: | '=====================[ Start of file ]=========================
' File: SelNotFirstFileSize.vbs
' Description: Выделяет все парные файлы, кроме первого, в списке,
' созданном поиском дубликатов ПО РАЗМЕРУ ФАЙЛА
' Installation: Создайте кнопку на панели TC
' Команда: "диск:\путь\к\файлу\SelNotFirstFileSize.vbs"
' Параметры: "%L"
' Copyright: (c) 2007, Volniy
Option Explicit
Dim FSO, ListFile, SelFile,TCS
Dim Cnt, Buf, FileSize1, FileSize2
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
FileSize1 = -1
Do While Not ListFile.AtEndOfStream
Set SelFile = FSO.GetFile(ListFile.ReadLine)
FileSize2 = SelFile.Size
If FileSize2 = FileSize1 Then
Buf = Buf & SelFile & vbNewLine
Cnt = Cnt + 1
End If
FileSize1 = FileSize2
Loop
ListFile.Close
TCS.SetTextToClip CStr(Buf)
TCS.SendCommand "cm_LoadSelectionFromClip", True
'TCS.SendCommand "cm_Delete", True
Set SelFile = Nothing
Set ListFile = Nothing
Set FSO = Nothing
Set TCS = Nothing
MsgBox "Выделено дубликатов: " & Cnt, vbInformation, "Завершено!"
WScript.Quit
'=====================[ End of file ]=========================
|
В принципе можно использовать этот скрипт и c поиском файлов совпадающих по содержимому, но тут вас подстерегает не сразу заметная опасность. Теоретически существует вероятность (не высокая, но все-таки...) того, что в двух соседних группах найденных дубликатов окажутся файлы с одинаковыми размерами, но при этом не совпадающие по содержимому. При этом для удаления будет выделены все файлы второй по порядку следования группы и, как результат, можно будет остаться вообще без единого экземпляра той группы. Так что или понадобится дополнительный визуальный контроль за результатами выделения или нужно будет к скрипту прикручивать проверку файлов по содержимому (с помощью внешней утилиты командной строки или средствами скриптов, второе будет медленно и еще ненадежно с нетекстовыми файлами).
Замечание это, кстати, справедливо и для версии скрипта, работающей с дубликатами имен файлов. |
|