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  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
yuris5



Joined: 01 Apr 2007
Posts: 13
Location: 02

Post (Separately) Posted: Sun Apr 01, 2007 18:52    Post subject: Удаление дубликатов Reply with quote

Добрый день. Собственно сабж.
Пробовал SelNotFirst.vbs от Volniy но чёт не работает,
хотя не ошибок нет , нет и результата...
Может кто сделал, или знает как удалить дубликаты.
--------------------------------------------------------------------------------------
И ещё, есть прога DupDetector которая ищет похожие картинки (можно
задать % похожести), в результате выдает список в миниатюры
картинок, но грабли в том что если дупликатов тыщы, а удалять по
одному то Sad
Может кто знает как сделать подобное в нашем любимом ТС, но и для
других типов файлов (мр3, jpeg, и д.р.)
--------------------------------------------------------------------------------------
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sun Apr 01, 2007 19:30    Post subject: Re: Удаление дубликатов Reply with quote

yuris5 wrote:
Добрый день. Собственно сабж.
Пробовал SelNotFirst.vbs от Volniy но чёт не работает,
хотя не ошибок нет , нет и результата...
Может кто сделал, или знает как удалить дубликаты.


Нельзя ли поконкретнее, что делалось и что именно не получилось. Заранее скажу, что если скрипт использовался после поиска дубликатов со снятой галочкой "по имени", так он и не должен в таком случае работать (дубликаты скриптом определяются именно по именам файлов, без путей к ним).
Back to top
View user's profile Send private message
yuris5



Joined: 01 Apr 2007
Posts: 13
Location: 02

Post (Separately) Posted: Sun Apr 01, 2007 20:17    Post subject: Re: Удаление дубликатов Reply with quote

Вау, мне ответил сам СОЗДАТЕЛЬ!
Уважаю (и часто пользуюсь скриптами) Volniy, но вот с этим - грабли. А может запустится... Итак:
В каталоге с папками и файлами делаю поиск файлов -> Дополнительно -> Поиск дубликатов: по имени и по размеру.
Далее Файлы на панель.
Далее жму кнопку:
button57=C:\WINDOWS\System32\WScript.exe
cmd57=""c:\Program Files\totalcmd651\plugins\util\SelNotFirst.vbs""
param57=""%L""
menu57=SelNotFirst

Code:
 ' 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

Выплевывает окно:
Завершено!
Выделено дубликатов:
ОК

В итоге ничего не выделено...
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sun Apr 01, 2007 20:41    Post subject: Re: Удаление дубликатов Reply with quote

yuris5 wrote:
В каталоге с папками и файлами делаю поиск файлов -> Дополнительно -> Поиск дубликатов: по имени и по размеру.
Далее Файлы на панель.
Далее жму кнопку:
button57=C:\WINDOWS\System32\WScript.exe
cmd57=""c:\Program Files\totalcmd651\plugins\util\SelNotFirst.vbs""
param57=""%L""
menu57=SelNotFirst


Ну ёмаё, надо же трошки задумываться все-таки, даже используя чужие наработки Wink
Так вот, %L - это ведь путь к файлу-списку выделенных в активной панели файлов. Так что ты, кажись, пропустил:
Quote:
Далее "Выделить всё"
перед
Quote:
Далее жму кнопку:


А таперича работает?

PS Посмотрел свой старый пост с этим скриптом и что я там увидел? А вот что:
Quote:
Не забыть только выделить весь список найденных дубликатов перед запуском скрипта!
Back to top
View user's profile Send private message
yuris5



Joined: 01 Apr 2007
Posts: 13
Location: 02

Post (Separately) Posted: Mon Apr 02, 2007 19:33    Post subject: Re: Удаление дубликатов Reply with quote

Volniy wrote:

Так что ты, кажись, пропустил:
Далее "Выделить всё" перед
Далее жму кнопку:
А таперича работает?

Да! Теперь РАБОТАЕТ! Very Happy
Вот бы ещё что бы работал при разных именах файлов...
Volniy wrote:

PS Посмотрел свой старый пост с этим скриптом и что я там увидел? А вот что:Не забыть только выделить весь список найденных дубликатов перед запуском скрипта!
[/quote]
Я бы тоже хотел бы увидеть старый пост...
А может кто подскажет где коллекция скриптов? Question

И ещё один вопрос: как можно отметить файлы в панели "через один" т.е. в виде "зебры". Пробовал в скрипте отравлять нажатия клавиш {INSERT} и {DOWN} , но за перемещающимся курсором нету выделенных файлов... Sad
Back to top
View user's profile Send private message
aLexx



Joined: 14 Mar 2005
Posts: 442
Location: Новокузнецк

Post (Separately) Posted: Thu Apr 05, 2007 15:56    Post subject: Reply with quote

А напиши-ка сюды весь текст скрипта.
Наверняка, что-то не то делаешь... Smile
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Thu Apr 05, 2007 19:03    Post subject: Re: Удаление дубликатов Reply with quote

yuris5 wrote:
И ещё один вопрос: как можно отметить файлы в панели "через один" т.е. в виде "зебры".

Пишу код без тестирования, наобум. Я не понимаю, зачем это может быть нужно, но раз уж просили, то...

Code:
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
Cnt = Cnt + 1
File2 = FSO.GetFileName(SelFile)
If Cnt Mod 2 = 0 Then
   Buf = Buf & SelFile & vbNewLine
End If
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 \ 2 & " файлов", vbInformation, "Завершено!"
WScript.Quit
Back to top
View user's profile Send private message
yuris5



Joined: 01 Apr 2007
Posts: 13
Location: 02

Post (Separately) Posted: Fri Apr 06, 2007 08:00    Post subject: Re: Удаление дубликатов Reply with quote

-------------------------------------------------------------------------------
Огромное СПАСИБО г-ну Volniy за прекрасно работающий скрипт!
-------------------------------------------------------------------------------

И ещё один вопрос: Чем воспользоваться для поиска и удаления одинаковых по сути файлов музыки (mp3,wma,ogg, ...), но имеющих разный размер, название, битрейт. Предпологаю такая прога должна делать анализ файлов по образу огибающей звука.
Только не закидавайте, плз, ответами типа GO -> ya.ru ... google.com и п.т. Smile
Back to top
View user's profile Send private message
funduk



Joined: 16 Aug 2005
Posts: 1513
Location: Санкт-Петербург

Post (Separately) Posted: Fri Apr 06, 2007 11:56    Post subject: Reply with quote

Сортировка по длине тебя спасёт. Ну если там ещё и теги нормальные есть, то используй контентные плагины для аудио, например, AudioInfo.
Иногда бывает полезно сравнивать по содержимому одинаково закодированные файлы разного размера (только смотнреть надо на соответствующие места, не занятые тегами, а их ещё найти надо)...
Back to top
View user's profile Send private message
Вахмурка



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

Post (Separately) Posted: Fri Apr 06, 2007 19:28    Post subject: Reply with quote

Quote:
И ещё один вопрос: как можно отметить файлы в панели "через один" т.е. в виде "зебры"
Чем больше вариантов, тем лучше, верно? Вот мои 5 копеек...
_________________
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
Back to top
View user's profile Send private message
Volniy



Joined: 15 Dec 2004
Posts: 585
Location: Местный

Post (Separately) Posted: Sat Apr 07, 2007 04:56    Post subject: Удаление дубликатов файлов с одинаковым размером Reply with quote

yuris5 wrote:
Вот бы ещё что бы работал при разных именах файлов...

Неожиданно мне и самому это дело понадобилось. Вот вариант реализации скрипта. Не забываем об выделение всего списка с результатами поисков перед его применением. Строка с удалением только что выделенных строк закомментирована, это для самых смелых Wink
Code:
'=====================[ Start of file ]=========================

'  File:         SelNotFirstFileSize.vbs
'  Description:  Выделяет все парные файлы, кроме первого, в списке,
'                созданном поиском дубликатов ПО РАЗМЕРУ ФАЙЛА
'  Installation: Создайте кнопку на панели TC
'                Команда: "диск:\путь\к\файлу\SelNotFirstFileSize.vbs"
'                Параметры: "%L"
'  Copyright:    (c) 2007, Volniy

Option Explicit
Dim FSO, ListFile, SelFile,TCS
Dim Cnt, Buf, FileSize1, FileSize2
Set FSO = CreateObject("Scripting.FileSystemObject")
Set TCS = CreateObject("TCScript.Helper")
Set ListFile = FSO.OpenTextFile(WScript.Arguments(0), 1)
FileSize1 = -1
Do While Not ListFile.AtEndOfStream
  Set SelFile = FSO.GetFile(ListFile.ReadLine)
  FileSize2 = SelFile.Size
  If FileSize2 = FileSize1 Then
     Buf = Buf & SelFile & vbNewLine
     Cnt = Cnt + 1
  End If
  FileSize1 = FileSize2
Loop
ListFile.Close
TCS.SetTextToClip CStr(Buf)
TCS.SendCommand "cm_LoadSelectionFromClip", True
'TCS.SendCommand "cm_Delete", True
Set SelFile = Nothing
Set ListFile = Nothing
Set FSO = Nothing
Set TCS = Nothing
MsgBox "Выделено дубликатов: " & Cnt, vbInformation, "Завершено!"
WScript.Quit

'=====================[  End of file  ]=========================


В принципе можно использовать этот скрипт и c поиском файлов совпадающих по содержимому, но тут вас подстерегает не сразу заметная опасность. Теоретически существует вероятность (не высокая, но все-таки...) того, что в двух соседних группах найденных дубликатов окажутся файлы с одинаковыми размерами, но при этом не совпадающие по содержимому. При этом для удаления будет выделены все файлы второй по порядку следования группы и, как результат, можно будет остаться вообще без единого экземпляра той группы. Так что или понадобится дополнительный визуальный контроль за результатами выделения или нужно будет к скрипту прикручивать проверку файлов по содержимому (с помощью внешней утилиты командной строки или средствами скриптов, второе будет медленно и еще ненадежно с нетекстовыми файлами).

Замечание это, кстати, справедливо и для версии скрипта, работающей с дубликатами имен файлов.
Back to top
View user's profile Send private message
Tol!k



Joined: 01 Apr 2008
Posts: 1727
Location: Арзамас

Post (Separately) Posted: Sat Jul 16, 2011 17:46    Post subject: Reply with quote

Давно написал, но как-то всё не выкладывалось
Code:
@echo off &setlocal enableextensions &chcp 1251 >nul
rem Удаление дубликатов по хешу
rem Параметры: D:\папка
rem Автор: Tol!k
rem Используется RHash http://rhash.anz.ru/

set "folder=%~1"
if "%folder:~-1%"=="\" set "folder=%folder:~0,-1%"

set "hash="
for /f "tokens=1,*" %%a in (
'rhash.exe -M -r --ansi "%folder%" ^|sort'
) do call :dd "%%a" "%%b"
goto :eof

:dd
if "%hash%" == "%~1" (attrib -h %2 &del /q %2)
set "hash=%~1"
goto :eof
Back to top
View user's profile Send private message
Strek



Joined: 17 Oct 2010
Posts: 199

Post (Separately) Posted: Thu Apr 25, 2013 09:12    Post subject: Reply with quote

Volniy
Что делаю не так?
YouTube
Back to top
View user's profile Send private message
sa



Joined: 29 Apr 2009
Posts: 2688

Post (Separately) Posted: Thu Apr 25, 2013 11:15    Post subject: Reply with quote

Strek
А если с этим скриптом попробовать?
Back to top
View user's profile Send private message
Strek



Joined: 17 Oct 2010
Posts: 199

Post (Separately) Posted: Thu Apr 25, 2013 11:59    Post subject: Reply with quote

sa
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Автоматизация Total Commander All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
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