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
Andrey_A



PostPosted: Fri Jul 29, 2011 22:15    Post subject: Reply with quote

Я пользуюсь таким скриптом, может поможет, если необходимо подправьте под себя
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
View user's profile Send private message Send e-mail Visit poster's website ICQ Number


Powered by phpBB © 2001, 2005 phpBB Group