Страница 6 из 8

Добавлено: Ср фев 25, 2015 09:38
sa
Flasher писал(а):Вероятность, что две ближайшие группы совпадут по размеру, но окажутся разными по содержимому = 0,0000000000000001%.
Как рассчитывал? А то у меня 100% получилось в тестовой структуре.

Добавлено: Ср фев 25, 2015 10:16
Avada
Ситуация, когда у одноимённых файлов размеры одинаковые, а содержимое разное, действительно вполне жизненна. Не 100%, конечно, но и не не исчезающе малые доли процента. Пример — несколько INI-файлов, где изменены значения нескольких ключей, но осталось прежним число символов во всех значениях.

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

Avada
Да, но в таком случае нужно, чтобы и самих дубликатов с этим изменённым ключом было как минимум по 2 для одного и другого одноразмерного файла. Вот такие ситуации насколько часто бывают? У меня никогда не было.

Добавлено: Ср фев 25, 2015 12:52
sa
Flasher писал(а):Что такое тестовая структура? Я про жизнь, а не спец. подгон.
Я тоже про жизнь. Результат получился в наобум выбранном каталоге архивных файлов, ну скажем, заказов изделий. Сам был удивлён 100% показателем. Случай, кстати, похож на описываемый Avada.

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

Кстати, по большому счёту выделение ведь нужно для избирательного подхода. Можно глазами пройтись по списку и там, где выделен первый в группе файл, просто снять выделение.

Добавлено: Ср фев 25, 2015 13:11
sa
Flasher писал(а):А как ты вычислил, что это 100% показатель?
У меня в дубликатах оказалось 5 групп, одинаковых по размеру, но и ровно столько же, различающихся по содержанию.
А чем не устраивает вариант с Num+?

Добавлено: Ср фев 25, 2015 13:17
Flasher
sa
Это не имеет со 100% случаев ничего общего. Ты пишешь про жизнь, но идёшь в папку, где заведомо ожидаешь получить подобный результат. При этом не хочешь писать, что там у тебя за архивы, и зачем они в таком виде нужны.

Добавлено: Ср фев 25, 2015 13:21
sa
Flasher писал(а):Это не имеет со 100% случаев ничего общего.
Точно, я про случай со 100%.

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

Добавлено: Ср фев 25, 2015 15:02
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

Добавлено: Ср фев 25, 2015 15:15
sa
Flasher
Всё же ещё раз, чем не устраивает вариант с Num+?

Добавлено: Ср фев 25, 2015 15:18
Flasher
sa
Ты на все мои вопросы ответил прежде чем спросить ещё раз?

Добавлено: Ср фев 25, 2015 15:29
sa
Flasher
Не, что за архивы, не расскажу! :D

Я полагал, что ты в первый раз вопрос про Num+ не заметил: я его задал не сразу, как изначально оформлял пост.

Добавлено: Ср фев 25, 2015 15:32
Flasher
Ну, вот и я не расскажу. Изображение

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