View previous topic :: View next topic |
Author |
Message |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sat Mar 18, 2006 03:22 Post subject: Re: Выделение дубликатов |
|
|
Againster wrote: | Как можно выделить дубликат(ы) для удаления?
Имеется ввиду что должен остаться только один файл из пары. |
А если без этих заморочек с выделением: раз надо удалить лишнее, вот и удаляем его после того как Тотал это лишнее нам уже нашел.
Вот скрипт:
Code: | '=====================[ 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 ]=========================
|
Не забыть только выделить весь список найденных дубликатов перед запуском скрипта! |
|
Back to top |
|
 |
Моторокер

Joined: 06 May 2005 Posts: 1517 Location: г. Пермь (читается Перьмь)
|
(Separately) Posted: Mon Mar 20, 2006 09:04 Post subject: |
|
|
А с шагом полтора выделит? Бывает, что дубликатов 2 либо 3. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Mon Mar 20, 2006 12:39 Post subject: |
|
|
Вахмурка wrote: | Выделение с любым шагом, причем, если нужно, неоднократное, а также снятие выделения. По-моему, это как раз то, что нужно. |
Не совсем. Проблема как раз в том, что здесь идет выделение не по шагу, а по группам дубликатов, причем размеры групп разные.
Volniy
Вообще-то задача изначально стояла:
Quote: | Как можно выделить дубликат(ы) для удаления? |
Удалить-то - просто, а как выделить?
Лучше скажи, почему SendKeystroke может криво отрабатывать? Где-то проскакивало, что на XP SendKeys криво работает. Не знаешь, как обойти? |
|
Back to top |
|
 |
Вахмурка

Joined: 27 Dec 2004 Posts: 2586 Location: Большая деревня Москва
|
(Separately) Posted: Mon Mar 20, 2006 22:00 Post subject: |
|
|
Quote: | Проблема как раз в том, что здесь идет выделение не по шагу, а по группам дубликатов, причем размеры групп разные |
Увы. Гислер использует не совсем стандартный listbox, поэтому извне, через SendMessage, получить доступ удается лишь к некоторым его свойствам. Однако, обратите внимание, что мой скрипт можно запускать а) неоднократно; б) с разными шагами; в) со снятием, а не только установкой выделения. То есть основную работу скрипт делает, а потом "экзотические" случаи можно ручками подправить. Все-таки в большинстве случаев группы одинаковые. _________________ Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон) |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Tue Mar 21, 2006 01:42 Post subject: |
|
|
Batya wrote: | Volniy
Вообще-то задача изначально стояла:
Quote: | Как можно выделить дубликат(ы) для удаления? |
Удалить-то - просто, а как выделить? |
Я же хотел именно, как проще... Ну ладно, тогда можно переписать вот так:
Code: | '=====================[ 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 ]=========================
|
Quote: | Лучше скажи, почему SendKeystroke может криво отрабатывать? Где-то проскакивало, что на XP SendKeys криво работает. Не знаешь, как обойти? |
Насчет глюков с SendKeys подтверждают и Мелкомягкие. А в твоем скрипте, как я понял, проблема-то не в этом. Просто когда открывается виндовое диалоговое окно выбора файла фокус ввода может попадать совсем даже не в поле для имени файла (у меня, например, дерево дисков в фокусе), а SendKeys именно полю в фокусе шлет нажатия клавиш, вот и облом выходит. Я вообще очень неприветствую управление системными диалоговыми окнами через SendKeys: вполне можно наделать пакостей (например, поудалять файлы или типа того). |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2224 Location: Москва, Россия
|
(Separately) Posted: Tue Mar 21, 2006 10:16 Post subject: |
|
|
Volniy wrote: | "cm_LoadSelectionFromClip" |
Блин, как же я раньше не видел этой команды?! Это же все решает!
Красиво  |
|
Back to top |
|
 |
Olaf

Joined: 23 Mar 2006 Posts: 11
|
(Separately) Posted: Tue May 09, 2006 20:30 Post subject: |
|
|
А у меня вот какой вопрос (вроде бы по теме): допустим у меня есть папка с файлами и я хочу поискать, и если есть на них дубликаты, то удалить их из всех прочих мест, кроме этой папки... это как-нибудь автоматизируется? |
|
Back to top |
|
 |
funduk

Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Tue May 09, 2006 21:14 Post subject: |
|
|
Открой эту папку в другой панели и используй Shift+f2 (сам не пробовал, но должно работать) |
|
Back to top |
|
 |
Olaf

Joined: 23 Mar 2006 Posts: 11
|
(Separately) Posted: Wed May 10, 2006 06:12 Post subject: |
|
|
funduk
я имел в виду не совсем это; это работает, когда дубликаты тж находятся в одной папке, а я говорю о ситуации, когда они раскиданы по всему винту |
|
Back to top |
|
 |
funduk

Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Wed May 10, 2006 11:36 Post subject: |
|
|
Нда, странно, что такой очевидный вариант не работает... |
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Sat Dec 09, 2006 12:50 Post subject: |
|
|
Всем привет!
Кто пользует ТК 7 - облегчилась ли там работа с дубликатами (если они одинаковы по содержанию и размеру - например TXT или HTML - но не по имени)?
Спасибо! _________________ Xubuntu |
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Sun Dec 24, 2006 19:29 Post subject: |
|
|
Вахмурка wrote: | в большинстве случаев группы одинаковые |
У кого как
Всё-таки, с выходом 7 версии - есть ли решение проблемы выделения дубликатов "за один клик"?
Выделения, а не прямо удаления - т.к. мне лично нужно хотя вскользь на всё это посмотреть (особенно, когда 2000 маленьких дубликатов)...
Можно ли хотя бы получить "правильный" список файлов из панели дубликатов (не сплошняком, а с разделителями - строками из тире - как он и отображается)...
Написать Гислеру может? _________________ Xubuntu |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Sun Dec 24, 2006 19:36 Post subject: |
|
|
Ник wrote: | Всё-таки, с выходом 7 версии - есть ли решение проблемы выделения дубликатов "за один клик"? |
Нет, здесь всё остальсь так же.
Ник wrote: | Написать Гислеру может? |
Писали уже... _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Sun Dec 24, 2006 19:49 Post subject: |
|
|
И что Гислер ответил?
Мне он отвечает - и у меня создалось ощущение, что он общается только с юзерами, купившими ТК, и только тогда, когда они пишут с адреса, официально зарегистрированного в его базе покупателей.
Ответ обычно приходит через месяц... _________________ Xubuntu |
|
Back to top |
|
 |
CaptainFlint

Joined: 14 Dec 2004 Posts: 6193 Location: Москва
|
(Separately) Posted: Sun Dec 24, 2006 22:15 Post subject: |
|
|
Ник wrote: | И что Гислер ответил? |
Точно не помню, но дискуссия была длинная. Он, как обычно, отнекивался, сообщая о всевозможных потенциальных проблемах, ему предлагали решение этих проблем. Чем всё закончилось, не помню, надо искать.
Ник wrote: | Ответ обычно приходит через месяц... |
Это зависит от его загруженности. Иногда и по три месяца ждать приходится, а иногда в течение часа ответ приходит. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|