Total Commander Knowledge Base

Есть вопрос?

Поищите ответ в самой большой русскоязычной базе знаний по Total Commander!

Выделение дубликатов после поиска

Q: Имеется папка Music, содержащая кучу других папок, с музыкой, соответственно (mp3). Хочу удалить дубликаты. Нахожу, соответственно, через поиск, потом выношу файлы на панель. Дубликаты располагаются парами, тройками и т.д. Ручками выделять долго и нудно (много их). Как можно выделить дубликат(ы) для удаления?
Имеется ввиду что должен остаться только один файл из всех копий.
A: Предлагается следующий скрипт на TCWSHelper. Создаёте файл *.vbs с указанным кодом, запуск файла вешаете на кнопку. В параметрах кнопки устанавливаете %L.

После выполнения поиска дубликатов нужно нажать "Файлы на панель", затем выделить все файлы. Нажимаете кнопку. Будут выделены все файлы в группе дубликатов, кроме первого.
Внимание:

  1. Скрипт работает только если при поиске была установлена галочка "Поиск дубликатов по имени".
  2. Скрипт затирает содержимое буфера обмена.
' 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

Volniy