sa
|
Posted: Fri Jan 27, 2012 13:25 Post subject: |
|
|
Показалось удобным сделать выделение дубликатов файла под курсором, находящихся в папке и подпапках пассивной панели. Кнопкой ограничиться не сумел. Пришлось поместить в кнопку вызов такого скрипта:
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. Дубликаты выделяются без учёта даты (времени), размеров и содержимого файлов, только по имени+расширению, либо, в виде опции, по имени+маске+расширению. |
|