Andrey_A

|
Posted: Fri Jul 29, 2011 22:15 Post subject: |
|
|
Я пользуюсь таким скриптом, может поможет, если необходимо подправьте под себя
Code: | '======================== Описание =======================================
' Выделяет папки\файлы по к-ву символов в именах, которое задаётся условием
' Выделяет так же в окне после поиска и при cm_DirBranch
'======================= Дополнение =======================================
' Всвязи с проблемой Helpera (при большом к-ве файлов) использована утилита NirCmd.exe
' После обработки пути (имена) записываются в файл MarkerList.txt
' Это очень удобно, т.к. сохранённое выделение можно заново загрузить!!!
'======================== Параметры =======================================
' Может быть от 0 до 2-параметров
' {Условия поиска для выделения} {Файл список}
' Условий может быть три варианта (первый параметр)
' =N - выделяет файлы\папки, в именах которых N символов
' <N - выделяет файлы\папки, в именах которых меньше N символов
' >N - выделяет файлы\папки, в именах которых больше N символов
'======================== Примеры ======================================
' без параметров - выделяет все имена в текущей панели, в которых встречается условие, введённое в окне для ввода условия
' <5 - выделяет все имена в текущей панели, в которых меньше 5 символов
' 0 %L - выделяет все имена в выделенном, в которых встречается условие, введённое в окне для ввода условия
' =6 %L - выделяет все имена в выделенном, в которых 6 символов
'
' Автор: Аверин Андрей
' Версия: 1.0 (17.12.2010)
Option Explicit
Dim FSO, WSH, TCS, Num, Sym, Stroka, FF, ListFile, Name, Cnt, List, PathG, TextZ, Data, MZList, MyFile, Program, ln
Set TCS = CreateObject("TCScript.Helper")
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WSH = WScript.CreateObject("WScript.Shell")
'======================== Изменяемые пути ===================================
Program = GetPath("%COMMANDER_PATH%\NirCmd.exe")
MZList = GetPath("%COMMANDER_PATH%\Files\Lists\MarkerList.txt")
'==========================================================================
TCS.LockTC True
If WScript.Arguments.Count = 2 Then
Set ListFile = FSO.OpenTextFile(GetPath(WScript.Arguments(1)), 1)
FF = ListFile.ReadAll
if WScript.Arguments(0) = "0" Then
MSBOXX
Else
Stroka = WScript.Arguments(0)
End If
Else
TCS.SendCommand ("cm_SelectAll") ' Выбираем всё
WScript.Sleep 200 ' Пауза
TCS.SendCommand ("cm_CopyFullNamesToClip") ' Копируем в буфер
FF = CreateObject("htmlfile").ParentWindow.ClipboardData.GetData("text")
TCS.SendCommand ("cm_ClearAll")
if WScript.Arguments.Count = 1 Then
Stroka = WScript.Arguments(0)
Else
MSBOXX
End If
End If
PathG = TCS.GetSrcPath & "\"
Sym = Mid(Stroka,1,1)
Num = CInt(Replace(Stroka, Sym, ""))
Data = Split(FF, vbNewLine)
If UBound(Data) > 1 Then
For Cnt = 0 To UBound(Data)
Name = FSO.GetBaseName(Data(Cnt))
ln = Len(Name)
Select Case Sym
Case "="
if ln = Num Then TextW
Case ">"
if ln > Num Then TextW
Case "<"
if ln < Num Then TextW
Case Else
MsgBox "Введено неправильное условие для выделения" & vbNewLine &_
"Повторите заново!" , vbOKOnly & vbCritical, "Выделение файлов по к-ву символов в имени"
WScript.Quit
End Select
Next
Set MyFile = FSO.CreateTextFile(MZList, True) ' Создаём файл
MyFile.Write(TextZ) ' Сохраняем выделение в файл
MyFile.Close
' Вызываем NirCmd.exe для отправки текста в буфер
WSH.Run Chr(34) & Program & Chr(34) & " " & "clipboard readfile " & Chr(34) & MZList & Chr(34) ,2,True
TCS.SendCommand "cm_LoadSelectionFromClip", True ' Выделяем из буфера
End if
Set WSH = Nothing
Set FSO = Nothing
Set TCS = Nothing
WScript.Quit
Sub MSBOXX
Stroka = InputBox("Введите Условие поиска по к-ву символов в" & vbNewLine &_
"именах файлов для дальнейшего выделения" & vbNewLine &_
"Может быть 3 условия, Примеры:" & vbNewLine &_
"=5 выделяются имена, в которых 5 символов" & vbNewLine &_
"<5 выделяются имена, меньше 5 символов" & vbNewLine &_
">5 выделяются имена, больше 5 символов" , "Выделение файлов по к-ву символов в имени", "=8")
if Stroka = "" Then
MsgBox "Не введены условия для выделения!" & vbNewLine &_
"Повторите заново!" , vbOKOnly & vbCritical, "Выделение файлов по к-ву символов в имени"
WScript.Quit
End If
End Sub
Sub TextW
TextZ = TextZ & Replace(UCase(Data(Cnt)), UCase(PathG), "") & vbNewLine
End Sub
Function GetPath(pPath)
GetPath = FSO.GetAbsolutePathName(WSH.ExpandEnvironmentStrings(pPath))
End Function |
Last edited by Andrey_A on Fri Jul 29, 2011 23:15; edited 1 time in total |
|