Страница 2 из 8
Re: Выделение дубликатов
Добавлено: Сб мар 18, 2006 02:22
Volniy
Againster писал(а): Как можно выделить дубликат(ы) для удаления?
Имеется ввиду что должен остаться только один файл из пары.
А если без этих заморочек с выделением: раз надо удалить лишнее, вот и удаляем его после того как Тотал это лишнее нам уже нашел.
Вот скрипт:
Код: Выделить всё
'=====================[ Start of file ]=========================
' File: DelNotFirst.vbs
' Description: Удаляет все парные файлы кроме первого
' из списка, созданного поиском дубликатов в ТС
' Installation: Создайте кнопку на панели TC
' Команда: "диск:\путь\к\файлу\DelNotFirst.vbs"
' Параметры: "%L"
' Copyright: (c) 2006, Volniy
Option Explicit
Dim FSO, ListFile, SelFile
Dim File1, File2, Cnt
Set FSO = CreateObject("Scripting.FileSystemObject")
Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not ListFile.AtEndOfStream
SelFile = ListFile.ReadLine
File2 = FSO.GetFileName(SelFile)
If StrComp(File1, File2, 1) = 0 Then
On Error Resume Next
FSO.DeleteFile SelFile, True
Cnt = Cnt + 1
End If
File1 = File2
Loop
ListFile.Close
Set ListFile = Nothing
Set FSO = Nothing
MsgBox "Удалено дубликатов: " & Cnt, vbInformation, "Завершено!"
WScript.Quit
'=====================[ End of file ]=========================
Не забыть только выделить весь список найденных дубликатов перед запуском скрипта!
Добавлено: Пн мар 20, 2006 08:04
Моторокер
А с шагом полтора выделит? Бывает, что дубликатов 2 либо 3.
Добавлено: Пн мар 20, 2006 11:39
Batya
Вахмурка писал(а):Выделение с любым шагом, причем, если нужно, неоднократное, а также снятие выделения. По-моему, это как раз то, что нужно.
Не совсем. Проблема как раз в том, что здесь идет выделение не по шагу, а по группам дубликатов, причем размеры групп разные.
Volniy

Вообще-то задача изначально стояла:
Как можно выделить дубликат(ы) для удаления?
Удалить-то - просто, а как выделить?
Лучше скажи, почему SendKeystroke может криво отрабатывать? Где-то проскакивало, что на XP SendKeys криво работает. Не знаешь, как обойти?
Добавлено: Пн мар 20, 2006 21:00
Вахмурка
Проблема как раз в том, что здесь идет выделение не по шагу, а по группам дубликатов, причем размеры групп разные
Увы. Гислер использует не совсем стандартный listbox, поэтому извне, через SendMessage, получить доступ удается лишь к некоторым его свойствам. Однако, обратите внимание, что мой скрипт можно запускать а) неоднократно; б) с разными шагами; в) со снятием, а не только установкой выделения. То есть основную работу скрипт делает, а потом "экзотические" случаи можно ручками подправить. Все-таки в большинстве случаев группы одинаковые.
Добавлено: Вт мар 21, 2006 00:42
Volniy
Batya писал(а):Volniy

Вообще-то задача изначально стояла:
Как можно выделить дубликат(ы) для удаления?
Удалить-то - просто, а как выделить?
Я же хотел именно, как проще... Ну ладно, тогда можно переписать вот так:
Код: Выделить всё
'=====================[ Start of file ]=========================
' File: SelNotFirst.vbs
' Description: Удаляет все парные файлы кроме первого
' из списка, созданного поиском дубликатов в ТС
' Installation: Создайте кнопку на панели TC
' Команда: "диск:\путь\к\файлу\SelNotFirst.vbs"
' Параметры: "%L"
' Copyright: (c) 2006, Volniy
Option Explicit
Dim FSO, ListFile, SelFile,TCS
Dim File1, File2, Cnt, Buf
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
Do While Not ListFile.AtEndOfStream
SelFile = ListFile.ReadLine
File2 = FSO.GetFileName(SelFile)
If StrComp(File1, File2, 1) = 0 Then
Buf = Buf & SelFile & vbNewLine
Cnt = Cnt + 1
End If
File1 = File2
Loop
ListFile.Close
'TCS.ClearClip
TCS.SetTextToClip CStr(Buf)
TCS.SendCommand "cm_LoadSelectionFromClip", True
Set ListFile = Nothing
Set FSO = Nothing
Set TCS = Nothing
MsgBox "Выделено дубликатов: " & Cnt, vbInformation, "Завершено!"
WScript.Quit
'=====================[ End of file ]=========================
Лучше скажи, почему SendKeystroke может криво отрабатывать? Где-то проскакивало, что на XP SendKeys криво работает. Не знаешь, как обойти?
Насчет глюков с SendKeys подтверждают и Мелкомягкие. А в твоем скрипте, как я понял, проблема-то не в этом. Просто когда открывается виндовое диалоговое окно выбора файла фокус ввода может попадать совсем даже не в поле для имени файла (у меня, например, дерево дисков в фокусе), а SendKeys именно полю в фокусе шлет нажатия клавиш, вот и облом выходит. Я вообще очень неприветствую управление системными диалоговыми окнами через SendKeys: вполне можно наделать пакостей (например, поудалять файлы или типа того).
Добавлено: Вт мар 21, 2006 09:16
Batya
Volniy писал(а):"cm_LoadSelectionFromClip"
Блин, как же я раньше не видел этой команды?! Это же все решает!
Красиво

Добавлено: Вт май 09, 2006 20:30
Olaf
А у меня вот какой вопрос (вроде бы по теме): допустим у меня есть папка с файлами и я хочу поискать, и если есть на них дубликаты, то удалить их из всех прочих мест, кроме этой папки... это как-нибудь автоматизируется?
Добавлено: Вт май 09, 2006 21:14
funduk
Открой эту папку в другой панели и используй Shift+f2 (сам не пробовал, но должно работать)
Добавлено: Ср май 10, 2006 06:12
Olaf
funduk
я имел в виду не совсем это; это работает, когда дубликаты тж находятся в одной папке, а я говорю о ситуации, когда они раскиданы по всему винту
Добавлено: Ср май 10, 2006 11:36
funduk
Нда, странно, что такой очевидный вариант не работает...
Добавлено: Сб дек 09, 2006 11:50
Ник
Всем привет!
Кто пользует ТК 7 - облегчилась ли там работа с дубликатами (если они одинаковы по содержанию и размеру - например TXT или HTML - но не по имени)?
Спасибо!
Добавлено: Вс дек 24, 2006 18:29
Ник
Вахмурка писал(а):в большинстве случаев группы одинаковые
У кого как
Всё-таки, с выходом 7 версии - есть ли решение проблемы
выделения дубликатов "за один клик"?
Выделения, а не прямо удаления - т.к. мне лично нужно хотя вскользь на всё это посмотреть (особенно, когда 2000 маленьких дубликатов)...
Можно ли хотя бы получить "правильный" список файлов из панели дубликатов (не сплошняком, а с разделителями - строками из тире - как он и отображается)...
Написать Гислеру может?
Добавлено: Вс дек 24, 2006 18:36
CaptainFlint
Ник писал(а):Всё-таки, с выходом 7 версии - есть ли решение проблемы выделения дубликатов "за один клик"?
Нет, здесь всё остальсь так же.
Ник писал(а):Написать Гислеру может?
Писали уже...
Добавлено: Вс дек 24, 2006 18:49
Ник
И что Гислер ответил?
Мне он отвечает - и у меня создалось ощущение, что он общается только с юзерами, купившими ТК, и только тогда, когда они пишут с адреса, официально зарегистрированного в его базе покупателей.
Ответ обычно приходит через месяц...
Добавлено: Вс дек 24, 2006 21:15
CaptainFlint
Ник писал(а):И что Гислер ответил?
Точно не помню, но дискуссия была длинная. Он, как обычно, отнекивался, сообщая о всевозможных потенциальных проблемах, ему предлагали решение этих проблем. Чем всё закончилось, не помню, надо искать.
Ник писал(а):Ответ обычно приходит через месяц...
Это зависит от его загруженности. Иногда и по три месяца ждать приходится, а иногда в течение часа ответ приходит.