View previous topic :: View next topic |
Author |
Message |
yuris5
Joined: 01 Apr 2007 Posts: 13 Location: 02
|
(Separately) Posted: Sun Apr 01, 2007 18:52 Post subject: Удаление дубликатов |
|
|
Добрый день. Собственно сабж.
Пробовал SelNotFirst.vbs от Volniy но чёт не работает,
хотя не ошибок нет , нет и результата...
Может кто сделал, или знает как удалить дубликаты.
--------------------------------------------------------------------------------------
И ещё, есть прога DupDetector которая ищет похожие картинки (можно
задать % похожести), в результате выдает список в миниатюры
картинок, но грабли в том что если дупликатов тыщы, а удалять по
одному то
Может кто знает как сделать подобное в нашем любимом ТС, но и для
других типов файлов (мр3, jpeg, и д.р.)
-------------------------------------------------------------------------------------- |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sun Apr 01, 2007 19:30 Post subject: Re: Удаление дубликатов |
|
|
yuris5 wrote: | Добрый день. Собственно сабж.
Пробовал SelNotFirst.vbs от Volniy но чёт не работает,
хотя не ошибок нет , нет и результата...
Может кто сделал, или знает как удалить дубликаты. |
Нельзя ли поконкретнее, что делалось и что именно не получилось. Заранее скажу, что если скрипт использовался после поиска дубликатов со снятой галочкой "по имени", так он и не должен в таком случае работать (дубликаты скриптом определяются именно по именам файлов, без путей к ним). |
|
Back to top |
|
 |
yuris5
Joined: 01 Apr 2007 Posts: 13 Location: 02
|
(Separately) Posted: Sun Apr 01, 2007 20:17 Post subject: Re: Удаление дубликатов |
|
|
Вау, мне ответил сам СОЗДАТЕЛЬ!
Уважаю (и часто пользуюсь скриптами) 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 |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sun Apr 01, 2007 20:41 Post subject: Re: Удаление дубликатов |
|
|
yuris5 wrote: | В каталоге с папками и файлами делаю поиск файлов -> Дополнительно -> Поиск дубликатов: по имени и по размеру.
Далее Файлы на панель.
Далее жму кнопку:
button57=C:\WINDOWS\System32\WScript.exe
cmd57=""c:\Program Files\totalcmd651\plugins\util\SelNotFirst.vbs""
param57=""%L""
menu57=SelNotFirst
|
Ну ёмаё, надо же трошки задумываться все-таки, даже используя чужие наработки
Так вот, %L - это ведь путь к файлу-списку выделенных в активной панели файлов. Так что ты, кажись, пропустил:
Quote: | Далее "Выделить всё" | перед
А таперича работает?
PS Посмотрел свой старый пост с этим скриптом и что я там увидел? А вот что:
Quote: | Не забыть только выделить весь список найденных дубликатов перед запуском скрипта! |
|
|
Back to top |
|
 |
yuris5
Joined: 01 Apr 2007 Posts: 13 Location: 02
|
(Separately) Posted: Mon Apr 02, 2007 19:33 Post subject: Re: Удаление дубликатов |
|
|
Volniy wrote: |
Так что ты, кажись, пропустил:
Далее "Выделить всё" перед
Далее жму кнопку:
А таперича работает?
|
Да! Теперь РАБОТАЕТ!
Вот бы ещё что бы работал при разных именах файлов...
Volniy wrote: |
PS Посмотрел свой старый пост с этим скриптом и что я там увидел? А вот что:Не забыть только выделить весь список найденных дубликатов перед запуском скрипта! | [/quote]
Я бы тоже хотел бы увидеть старый пост...
А может кто подскажет где коллекция скриптов?
И ещё один вопрос: как можно отметить файлы в панели "через один" т.е. в виде "зебры". Пробовал в скрипте отравлять нажатия клавиш {INSERT} и {DOWN} , но за перемещающимся курсором нету выделенных файлов...  |
|
Back to top |
|
 |
aLexx

Joined: 14 Mar 2005 Posts: 442 Location: Новокузнецк
|
(Separately) Posted: Thu Apr 05, 2007 15:56 Post subject: |
|
|
А напиши-ка сюды весь текст скрипта.
Наверняка, что-то не то делаешь...  |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Thu Apr 05, 2007 19:03 Post subject: Re: Удаление дубликатов |
|
|
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 |
|
 |
yuris5
Joined: 01 Apr 2007 Posts: 13 Location: 02
|
(Separately) Posted: Fri Apr 06, 2007 08:00 Post subject: Re: Удаление дубликатов |
|
|
-------------------------------------------------------------------------------
Огромное СПАСИБО г-ну Volniy за прекрасно работающий скрипт!
-------------------------------------------------------------------------------
И ещё один вопрос: Чем воспользоваться для поиска и удаления одинаковых по сути файлов музыки (mp3,wma,ogg, ...), но имеющих разный размер, название, битрейт. Предпологаю такая прога должна делать анализ файлов по образу огибающей звука.
Только не закидавайте, плз, ответами типа GO -> ya.ru ... google.com и п.т.  |
|
Back to top |
|
 |
funduk

Joined: 16 Aug 2005 Posts: 1513 Location: Санкт-Петербург
|
(Separately) Posted: Fri Apr 06, 2007 11:56 Post subject: |
|
|
Сортировка по длине тебя спасёт. Ну если там ещё и теги нормальные есть, то используй контентные плагины для аудио, например, AudioInfo.
Иногда бывает полезно сравнивать по содержимому одинаково закодированные файлы разного размера (только смотнреть надо на соответствующие места, не занятые тегами, а их ещё найти надо)... |
|
Back to top |
|
 |
Вахмурка

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

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Sat Apr 07, 2007 04:56 Post subject: Удаление дубликатов файлов с одинаковым размером |
|
|
yuris5 wrote: | Вот бы ещё что бы работал при разных именах файлов... |
Неожиданно мне и самому это дело понадобилось. Вот вариант реализации скрипта. Не забываем об выделение всего списка с результатами поисков перед его применением. Строка с удалением только что выделенных строк закомментирована, это для самых смелых
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 |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Sat Jul 16, 2011 17:46 Post subject: |
|
|
Давно написал, но как-то всё не выкладывалось
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 |
|
 |
Strek

Joined: 17 Oct 2010 Posts: 199
|
(Separately) Posted: Thu Apr 25, 2013 09:12 Post subject: |
|
|
Volniy
Что делаю не так?
YouTube |
|
Back to top |
|
 |
sa
Joined: 29 Apr 2009 Posts: 2688
|
(Separately) Posted: Thu Apr 25, 2013 11:15 Post subject: |
|
|
Strek
А если с этим скриптом попробовать? |
|
Back to top |
|
 |
Strek

Joined: 17 Oct 2010 Posts: 199
|
(Separately) Posted: Thu Apr 25, 2013 11:59 Post subject: |
|
|
sa
 |
|
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
|