Выделение дубликатов

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik

sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Вероятность, что две ближайшие группы совпадут по размеру, но окажутся разными по содержимому = 0,0000000000000001%.
Как рассчитывал? А то у меня 100% получилось в тестовой структуре.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Ситуация, когда у одноимённых файлов размеры одинаковые, а содержимое разное, действительно вполне жизненна. Не 100%, конечно, но и не не исчезающе малые доли процента. Пример — несколько INI-файлов, где изменены значения нескольких ключей, но осталось прежним число символов во всех значениях.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa писал(а):А то у меня 100% получилось в тестовой структуре.
Что такое тестовая структура? Я про жизнь, а не спец. подгон.

Avada
Да, но в таком случае нужно, чтобы и самих дубликатов с этим изменённым ключом было как минимум по 2 для одного и другого одноразмерного файла. Вот такие ситуации насколько часто бывают? У меня никогда не было.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Что такое тестовая структура? Я про жизнь, а не спец. подгон.
Я тоже про жизнь. Результат получился в наобум выбранном каталоге архивных файлов, ну скажем, заказов изделий. Сам был удивлён 100% показателем. Случай, кстати, похож на описываемый Avada.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
А как ты вычислил, что это 100% показатель? Может, это как раз тот самый 0,000...1? :D Для того, чтобы это узнать, нужно в куче разных структур провести по попытке, и если в каждом случае будет такое соответствие, то твоя взяла. Только, боюсь, она уж точно не твоя. :wink:
И что это за архивы изделий? Можно поподробней?

Кстати, по большому счёту выделение ведь нужно для избирательного подхода. Можно глазами пройтись по списку и там, где выделен первый в группе файл, просто снять выделение.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):А как ты вычислил, что это 100% показатель?
У меня в дубликатах оказалось 5 групп, одинаковых по размеру, но и ровно столько же, различающихся по содержанию.
А чем не устраивает вариант с Num+?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Это не имеет со 100% случаев ничего общего. Ты пишешь про жизнь, но идёшь в папку, где заведомо ожидаешь получить подобный результат. При этом не хочешь писать, что там у тебя за архивы, и зачем они в таком виде нужны.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):Это не имеет со 100% случаев ничего общего.
Точно, я про случай со 100%.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher писал(а):Вот такие ситуации насколько часто бывают?
Ну вот я, скажем пробую выполнить поиск с дубликатами в подкататоге Plugins в TC. Если по имени, размеру и содержимому — 14 групп, 30 файлов. Если по имени и размеру — 20 групп, 44 файла. Расширения файлов самые разные — SFX, INI, TXT, HTML, CSS, DLL... Так что не очень мало и не очень много, а просто бывает.
Могу привести и совершенно конкретный пример: в последовательных релизах TWinKey у DLL дочерних плагинов и TWinCmd.exe имена и размеры одинаковые, а содержимое разное.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada писал(а):Если по имени и размеру — 20 групп, 44 файла.
Мы обсуждаем соседние группы дубликатов с файлами одного размера. Т.е. птица "по содержимому" обязательна.
Конкретный пример опять же не показателен. Речь идёт о дубликатах. А если их нет, но есть только одноразмерные файлы, то и в результатах этих файлов не будет.

Ладно, вот вариант по содержимому (но он жутко медленный, а на время залоченности ТС нежизнеспособен, поэтому я и не стал его давать):

Код: Выделить всё

'=============================================================
' Выделить дубликаты кроме первых в группах результатов поиска
' Параметр: %P
'=================== Путь к утилите TCFS2 ====================
TCFS2 = """%COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe"""
'=============================================================
If WScript.Arguments.Count Then WScript.Quit
Set FSO = CreateObject("Scripting.FileSystemObject")
R = "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\3\1407"
With CreateObject("WScript.Shell")
  .Run TCFS2 & " /ef msg($0B,0) tcm(3302) tcm(2018) tcm(3304)",,True
  On Error Resume Next
  A = .RegRead(R) : If A > 0 Or Err.Number <> 0 Then .RegWrite R, 0, "REG_DWORD"
  List = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
  For Each F in Split(List, vbNewLine)
    If .Run("fc /b """ & F & """ """ & F1 & """", 0, True) = 0 Then S = S & vbNewLine & F
    F1 = F
  Next : Temp = CreateObject("Shell.Application").NameSpace(._
  Environment("Process")("TEMP")).Self.Path & "" & FSO.GetTempName
  FSO.CreateTextFile(Temp,,True).Write S
  .Run "%comspec% /c clip < """ & Temp & """", 0, True
  .Run TCFS2 & " /ef msg($0B,1) tcm(2033)"
  .Run "%comspec% /c type|clip ", 0
  FSO.DeleteFile Temp, 1 : If A > 0 Then .RegWrite R, A, "REG_DWORD"
End With
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher
Всё же ещё раз, чем не устраивает вариант с Num+?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sa
Ты на все мои вопросы ответил прежде чем спросить ещё раз?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher
Не, что за архивы, не расскажу! :D

Я полагал, что ты в первый раз вопрос про Num+ не заметил: я его задал не сразу, как изначально оформлял пост.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ну, вот и я не расскажу. Изображение
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Flasher писал(а):но он жутко медленный
А тут ещё пугают тем , что и ненадёжно это:
нужно будет к скрипту прикручивать проверку файлов по содержимому (с помощью внешней утилиты командной строки или средствами скриптов, второе будет медленно и еще ненадежно с нетекстовыми файлами).
Ответить