Total Commander Forum Index Total Commander
Форум поддержки пользователей Total Commander
Сайты: Все о Total Commander | Totalcmd.net | Ghisler.com | RU.TCKB
 
 RulesRules   SearchSearch   FAQFAQ   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Выделение дубликатов
Goto page 1, 2, 3, 4, 5, 6, 7, 8  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы printer-friendly view
View previous topic :: View next topic  
Author Message
Againster



Joined: 16 Mar 2006
Posts: 3
Location: Казань

Post (Separately) Posted: Thu Mar 16, 2006 15:24    Post subject: Выделение дубликатов Reply with quote

Имеется папка Music, содержащая кучу (много) других папок, с музыкой соответственно (mp3). Хочу удалить дубликаты. Нахожу соответственно через поиск, потом файлы на панель. Дубликаты располагаются парами, тройками и т.д. Ручками выделять долго и нудно (много их). Как можно выделить дубликат(ы) для удаления?
Имеется ввиду что должен остаться только один файл из пары.
Back to top
View user's profile Send private message
CaptainFlint



Joined: 14 Dec 2004
Posts: 6192
Location: Москва

Post (Separately) Posted: Thu Mar 16, 2006 16:33    Post subject: Reply with quote

Againster
Пока что в Тотале для этого нет способа. Где-то существовал скрипт для AutoHotkey, который выделяет такие файлы, о нём упоминали на оф. форуме, но ссылку на него не дали.
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Thu Mar 16, 2006 16:40    Post subject: Reply with quote

Хорошо бы такую фичу - выделить первый файл в блоке.

А обычно быстро-быстро перебираешь ручками Ins-Down Ins-Down Ins-Down Ins-Down Ins-Down
Back to top
View user's profile Send private message
Againster



Joined: 16 Mar 2006
Posts: 3
Location: Казань

Post (Separately) Posted: Thu Mar 16, 2006 16:48    Post subject: Reply with quote

2 Моторокер
А если 3 повтора? Не прокатит.
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Thu Mar 16, 2006 17:02    Post subject: Reply with quote

Если 3..N повторов, выделить первый файл в блоке, инвертировать выделение.
Back to top
View user's profile Send private message
Againster



Joined: 16 Mar 2006
Posts: 3
Location: Казань

Post (Separately) Posted: Thu Mar 16, 2006 17:07    Post subject: Reply with quote

в том то и дело что где 2 а где 3 повтора. А может и 4 Smile
Back to top
View user's profile Send private message
Моторокер



Joined: 06 May 2005
Posts: 1517
Location: г. Пермь (читается Перьмь)

Post (Separately) Posted: Thu Mar 16, 2006 17:32    Post subject: Reply with quote

Какая разница сколько? Останутся невыделенными только первые файлы, остальные можно удалить.
Back to top
View user's profile Send private message
Zoooom



Joined: 28 Dec 2004
Posts: 45

Post (Separately) Posted: Thu Mar 16, 2006 22:16    Post subject: Reply with quote

1)скрипт для ннКрон: 1000 0 DO SEND-KEYS: "{INSERT}{DOWN}" LOOP
2)если выделять через один то в любом случае не удалятся все копии дубликатов. достаточно будет пройтись еще разок поиском для нахождения оставшихся копий(если копий штук 20 одного вида то не один разSmile)
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Fri Mar 17, 2006 12:41    Post subject: Reply with quote

Againster
Если имена у файлов-дубликатов совпадают, могу предложить следующий скрипт:
Code:
Dim ListFile, FSO, TCS, StreamFile
ListFile = Wscript.Arguments(0)
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
Set StreamFile = FSO.OpenTextFile(ListFile, 1)

Dim FileName1, FileName2
FileName1 = ""
Do While Not StreamFile.AtEndOfStream
  SelFile = StreamFile.ReadLine
  FileName2 = FSO.GetFile(SelFile).Name
  If FileName1 = FileName2 Then
    FSO.OpenTextFile(ListFile & "_", 8, True).WriteLine SelFile
  End If
  FileName1 = FileName2
Loop
StreamFile.Close
TCS.SendCommand "cm_LoadSelectionFromFile"
TCS.SendKeystroke ListFile & "_" & "{ENTER}"
FSO.DeleteFile(ListFile & "_")
Set FSO = Nothing
Set TCS = Nothing
Set StreamFile = Nothing
WScript.Quit()

Для скрипта необходим Script Helper.
Как с этим работать...
Создать файл *.vbs с указанным кодом. Повесить файл на кнопку. В параметрах кнопки прописать %L. После выполнения поиска дубликатов нажать "Файлы на панель". Затем выделить все файлы. Нажать кнопку. Будут выделены все файлы в группе дубликатов, кроме первого.
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Mar 17, 2006 16:25    Post subject: Reply with quote

У меня скрипт не работает, вместо этого запускается один из выделенных файлов.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Fri Mar 17, 2006 16:44    Post subject: Reply with quote

D1P
Удали в строке
Code:
TCS.SendKeystroke ListFile & "_" & "{ENTER}"

окончание
Code:
 & "{ENTER}"

Как отрабатывает?
Должен отображаться диалог открытия файла, в котором указан файл, который содержит список файлов для выделения.

Можно попробовать перед указнной строкой сделать паузу:
Code:
Wscript.Sleep 1000
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Mar 17, 2006 18:24    Post subject: Reply with quote

В обоих случаях (и с удалённым окончанием, и с добавленной паузой) эффект одинаков - открывается файл в программе по умолчанию.
Back to top
View user's profile Send private message
Batya



Joined: 15 Dec 2004
Posts: 2224
Location: Москва, Россия

Post (Separately) Posted: Fri Mar 17, 2006 19:54    Post subject: Reply with quote

D1P
Тогда:
Code:
Dim ListFile, FSO, StreamFile
ListFile = Wscript.Arguments(0)
MsgBox(ListFile & "_")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set StreamFile = FSO.OpenTextFile(ListFile, 1)

Dim FileName1, FileName2
FileName1 = ""
Do While Not StreamFile.AtEndOfStream
  SelFile = StreamFile.ReadLine
  FileName2 = FSO.GetFile(SelFile).Name
  If FileName1 = FileName2 Then
    FSO.OpenTextFile(ListFile & "_", 8, True).WriteLine SelFile
  End If
  FileName1 = FileName2
Loop
StreamFile.Close
Set FSO = Nothing
Set StreamFile = Nothing
WScript.Quit()

После того, как скрипт отработает, посмотри, создался ли у тебя файл, имя котрого выводится в диалоговом окне.
В этом скрипте уж точно нет никаких запусков.
Back to top
View user's profile Send private message
D1P



Joined: 20 Dec 2004
Posts: 2973
Location: Тбилиси

Post (Separately) Posted: Fri Mar 17, 2006 20:39    Post subject: Reply with quote

Да, файл создался, и в нём, как я понял, содержание верное. Немного поэкспериментировал самостоятельно, судя по всему некорректно отрабатывается команда TCS.SendKeystroke.
Back to top
View user's profile Send private message
Вахмурка



Joined: 27 Dec 2004
Posts: 2586
Location: Большая деревня Москва

Post (Separately) Posted: Fri Mar 17, 2006 21:55    Post subject: Reply with quote

http://pprotcmd.narod.ru/Scripts/MarkStep.htm
Выделение с любым шагом, причем, если нужно, неоднократное, а также снятие выделения. По-моему, это как раз то, что нужно.
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Общие вопросы All times are GMT + 4 Hours
Goto page 1, 2, 3, 4, 5, 6, 7, 8  Next
Page 1 of 8

 
Jump to:  
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