swr
|
Posted: Mon Feb 11, 2019 00:52 Post subject: |
|
|
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 |
Скрипт срабатывает, но возможно я неправильно дополнил код? я в этом не разбираюсь... |
|