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 

Single Post  Topic: Выделение дубликатов 
Author Message
sa



PostPosted: Fri Jan 27, 2012 13:25    Post subject: Reply with quote

Показалось удобным сделать выделение дубликатов файла под курсором, находящихся в папке и подпапках пассивной панели. Кнопкой ограничиться не сумел. Пришлось поместить в кнопку вызов такого скрипта:
Code:
'================================================================
'  Описание:  Выделить дубликаты файла под курсором,
'            находящиеся в папке и подпапках пассивной панели.
'             Имя файла может быть дополнено маской,
'            задаваемой вторым параметром скрипта. Например,
'            строка параметров %P%N%Z * позволит выделить файлы
'            с именами, начинающимися с имени файла под курсором.
' Параметры: %P%N%Z [маска]
'Требования: Необходима регистрация WSH Helper for TC by Volniy
'================================================================
Option Explicit
Dim FSO, TCS, P_N, P_N_Suf, PosPnt, PasDir, TextClip
If WScript.Arguments.Count < 1 Then
  MsgBox "Не указаны параметры: %P%N%Z", _
   vbOKOnly + vbCritical, "Выделение дубликатов файла"
  WScript.Quit
End If
P_N = WScript.Arguments(0)
PosPnt = InStrRev(P_N,".")
If WScript.Arguments.Count > 1 Then
   If PosPnt > InStrRev(P_N,"\") Then
      P_N_Suf = Mid(P_N, 1, PosPnt - 1) & WScript.Arguments(1) _
       & Mid(P_N, PosPnt)
   Else
      P_N_Suf = P_N & WScript.Arguments(1)
   End If
Else
   P_N_Suf = P_N
End If
Set FSO = CreateObject("Scripting.FileSystemObject")
If FSO.FolderExists(P_N) or InStrRev(P_N,"\") = Len(P_N) Then
  MsgBox "Курсор должен располагаться на файле", _
   vbOKOnly + vbCritical,  "Выделение дубликатов файла"
  Set FSO = Nothing
  WScript.Quit
End If
Set TCS = CreateObject("TCScript.Helper")
TextClip = TCS.GetTextFromClip
TCS.LockTC True
TCS.SendKeystroke "{TAB}"
TCS.SendCommand  "cm_RereadSource", True
PasDir = TCS.GetSrcPath
TCS.SendCommand "cm_DirBranch", True
TCS.SetTextToClip "*""" & Mid(P_N_Suf, InStrRev(P_N_Suf,"\") + 1) & """"
TCS.SendCommand "cm_LoadSelectionFromClip", True
TCS.SendCommand "cm_ShowOnlySelected", True
If InStr(LCase(P_N), LCase(PasDir)) = 1 Then
   TCS.SetTextToClip Mid(P_N, Len(PasDir) + 2)
   TCS.SendCommand "cm_LoadSelectionFromClip", True
   TCS.SendCommand "cm_ExchangeSelection", True
End If
TCS.SendKeystroke "{TAB}"
TCS.LockTC False
TCS.SetTextToClip(TextClip)
Set FSO = Nothing
Set TCS = Nothing
Wscript.Quit
Сама кнопка:
Code:
TOTALCMD#BAR#DATA
"%COMMANDER_PATH%\VBS\Выделить дубликаты на пассивной панели.vbs"
%P%N%Z
WCMICONS.DLL,70
Выделить дубликаты на пассивной панели


-1
P.S.
1. Чтобы перейти к нужному файлу на пассивной панели необходимо установить на него курсор и нажать Ctrl+B (вызвать команду “Показать все файлы без подкаталогов” для снятия этого вида).
2. Вернуть обычный вид панели можно с помощью F2 (команда “Обновить содержимое панели”) - независимо от местоположения курсора на пассивной панели, либо той же командой Ctrl+B, при условии, что курсор расположен на строке [..].
3. Дубликаты можно искать также и из архивов активной панели, только надо учесть: если расположить курсор на папке в таком архиве, то скрипт будет пытаться найти дубликаты среди файлов.
4. Дубликаты выделяются без учёта даты (времени), размеров и содержимого файлов, только по имени+расширению, либо, в виде опции, по имени+маске+расширению.
View user's profile Send private message


Powered by phpBB © 2001, 2005 phpBB Group