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: Альтернатива descript.ion 
Author Message
swr



PostPosted: Mon Feb 11, 2019 00:52    Post subject: Reply with quote

Flasher wrote:
Нужно в одном всё делать, иначе нагрузка втрое увеличивается, а скорость уменьшается.
Опишите все три критерия поиска.


Сделал как вы сказали, так действительно быстрее и удобнее.

Code:
Set FSO = CreateObject("Scripting.FileSystemObject")
ion = FSO.GetParentFolderName(FileName) & "\descript.ion"

If FSO.FileExists(ion) Then
If FSO.GetFile(ion).Size > 3 Then

   pattern1 = ".*\[([^)(]+?)\]"
   pattern2 = ".*\(C=([^)(]+)\)"
   pattern3 = ".*\(Y=([^)(]+)\)"

   With CreateObject("SAPI.SpFileStream") .Open ion : .Read ArrB, 3 : .Close : End With
   For i = 1 To 2 : Dec = Dec & AscB(MidB(ArrB, i, 1)) : Next
   Select Case Dec
      Case 239187 Enc = "UTF-8"
      Case 255254 Enc = "UTF-16LE"
      Case 254255 Enc = "UTF-16BE"
      Case Else   Enc = "Windows-1251"
   End Select

   With CreateObject("ADODB.Stream")
      .Open : .Type = 2 : .CharSet = Enc : .LoadFromFile ion : All = .ReadText : .Close
   End With

   FileName = FSO.GetFileName(FileName)
   If InStr(FileName, " ") Then FileName = """" & FileName & """"

   With New RegExp
      .pattern = "([[\]\{}\-\(\)^(\$\+\.])" : .Global = 1 : .MultiLine = 1
      .pattern = "^" & .Replace(FileName, "\$1") & " " & pattern1
      .Global = 0 : If .Test(All) Then Content1 = .Execute(All)(0).SubMatches(0)
   End With

   With New RegExp
      .pattern = "([[\]\{}\-\(\)^(\$\+\.])" : .Global = 1 : .MultiLine = 1
      .pattern = "^" & .Replace(FileName, "\$1") & " " & pattern2
      .Global = 0 : If .Test(All) Then Content2 = .Execute(All)(0).SubMatches(0)
   End With

   With New RegExp
      .pattern = "([[\]\{}\-\(\)^(\$\+\.])" : .Global = 1 : .MultiLine = 1
      .pattern = "^" & .Replace(FileName, "\$1") & " " & pattern3
      .Global = 0 : If .Test(All) Then Content3 = .Execute(All)(0).SubMatches(0)
   End With

End If
End If

Set FSO = Nothing


в Options.ini

Code:
[Script]
ActiveScripts=Global


[Global]
Script=Global.vbs
content=Global
extensions=*
FoldersPaths=0
content1=Descript
content2=Color
content3=Year



Скрипт срабатывает, но возможно я неправильно дополнил код? я в этом не разбираюсь...
View user's profile Send private message Send e-mail


Powered by phpBB © 2001, 2005 phpBB Group