View previous topic :: View next topic |
Author |
Message |
swr
Joined: 07 Jun 2007 Posts: 59
|
(Separately) Posted: Sun Feb 10, 2019 23:20 Post subject: |
|
|
Flasher wrote: | Под каждую колонку отдельный скрипт что ли? |
Да, у меня сейчас 3 отдельных скрипта. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sun Feb 10, 2019 23:25 Post subject: |
|
|
Нужно в одном всё делать, иначе нагрузка втрое увеличивается, а скорость уменьшается.
Опишите все три критерия поиска. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
swr
Joined: 07 Jun 2007 Posts: 59
|
(Separately) 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 |
Скрипт срабатывает, но возможно я неправильно дополнил код? я в этом не разбираюсь... |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 11, 2019 01:18 Post subject: |
|
|
swr wrote: | Flasher wrote: | Опишите все три критерия поиска. |
Сделал как вы сказали | Да? Что-то не заметил. Я не просил приводить скрипт и ini.
swr wrote: | возможно я неправильно дополнил код? | Правильнее сказать избыточно, тут достаточно одного паттерна с группой подвыражений. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
swr
Joined: 07 Jun 2007 Posts: 59
|
(Separately) Posted: Mon Feb 11, 2019 01:27 Post subject: |
|
|
Flasher wrote: |
тут достаточно одного паттерна с группой подвыражений. |
Я такое сам не сделаю. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 11, 2019 01:56 Post subject: |
|
|
swr
Продолжаем разговор слепого с глухим? Я просьбу для чего выделил? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
swr
Joined: 07 Jun 2007 Posts: 59
|
(Separately) Posted: Mon Feb 11, 2019 14:12 Post subject: |
|
|
Flasher wrote: |
Продолжаем разговор слепого с глухим? Я просьбу для чего выделил? |
Я интерпритировал "критерии поиска" как раз, как три регулярных выражения по которым ищутся значения и соответственно привёл это всё в коде, я вас не понимаю, что вы имеете ввиду под критериями поиска? Всё что мне нужно (и это уже работает) я привел в скрипте, из этого скрипта же видно по каким регуляркам ищутся значения? |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Mon Feb 11, 2019 15:21 Post subject: |
|
|
Данные регулярные выражения на описание всех критериев не тянут. Они не дают представления о комбинировании искомых подстрок, их последовательности, расположении относительно начала/конца в составе конкретных примеров комментариев. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
swr
Joined: 07 Jun 2007 Posts: 59
|
(Separately) Posted: Thu Feb 21, 2019 23:41 Post subject: |
|
|
Flasher wrote: | Данные регулярные выражения на описание всех критериев не тянут. Они не дают представления о комбинировании искомых подстрок, их последовательности, расположении относительно начала/конца в составе конкретных примеров комментариев. |
В итоге, к файлу будет 2 вида комментариев:
А. Стандартные комментарии
В. Внутри квадратных скобок, с префиксом вида 'a='
Комментарии с префиксом [y=2019] или [c=Green] могут находится друг относительно друга где угодно, примеры:
"Имя файла 1.ext" мой коммент[y=2019][c=Green]
"Имя файла 2.ext" [c=Green]мой коммент[y=2019]
"Имя файла 3.ext" [y=2019]мой коммент[c=Green]
"Имя файла 4.ext" мой[y=2019]коммент[c=Green]
Отображение в виде 3х колонок:
1. Комментарий заключённый в квадратные скобки с префиксом [c=...]
2. Комментарий заключённый в квадратные скобки с префиксом [y=...]
3. Комментарий вне квадратных скобок, то есть от обычного [=tc.comment] он будет отличаться тем, что будет скрывать всё что заключено в квадратные скобки - это будет своеобразным указанием на служебный комментарий.
P.S. Извиняюсь за долгий ответ. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Feb 22, 2019 02:05 Post subject: |
|
|
swr wrote: | "Имя файла 4.ext" мой[y=2019]коммент[c=Green]
3. ... будет скрывать всё что заключено в квадратные скобки... | И получится: "Имя файла 4.ext" мойкоммент. Так и надо (без пробела)? _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
swr
Joined: 07 Jun 2007 Posts: 59
|
(Separately) Posted: Fri Feb 22, 2019 19:27 Post subject: |
|
|
Flasher wrote: | И получится: "Имя файла 4.ext" мойкоммент. Так и надо (без пробела)? |
Да, я думаю, добавление условия с разделением двух комментариев излишне усложнит паттерн, а если нужно будет их разделить, то в самом комментарии будет добавлен пробел. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Feb 22, 2019 22:18 Post subject: |
|
|
Зачем Color для всех типов файлов?
swr wrote: | Отображение в виде 3х колонок: |
3, так 3:
Code: | content=Descript
content1=Color
content2=Year |
Code: | Set FSO = CreateObject("Scripting.FileSystemObject")
ion = FSO.GetParentFolderName(FileName) & "\descript.ion"
If FSO.FileExists(ion) Then
If FSO.GetFile(ion).Size > 3 Then
' Паттерн замены искомых частей на пробел:
Pattern = "(\[[^[\]]+\])+"
' Паттерны искомых частей комментария:
Pattern1 = "\[[cC]=([^[\]]+)\]"
Pattern2 = "\[[yY]=([^[\]]+)\]"
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 & """"
Set RExp = New RegExp
With RExp
.Pattern = "([[\]\{}\-\(\)^(\$\+\.])" : .Global = 1
.Pattern = "^" & .Replace(FileName, "\$1") & " ([^\r\n]+)$" : .MultiLine = 1
If .Test(All) Then
Comment = .Execute(All)(0).Submatches(0)
.Pattern = Pattern : Content = Trim(.Replace(Comment, " "))
Substring Pattern1, Content1
Substring Pattern2, Content2
End If
End With
End If
End If
Set FSO = Nothing : Set RExp = Nothing
Sub Substring(Patt, Cont)
With RExp
.Pattern = Patt : If .Test(Comment) Then Cont = .Execute(Comment)(0).SubMatches(0)
End With
End Sub |
_________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
swr
Joined: 07 Jun 2007 Posts: 59
|
(Separately) Posted: Sat Feb 23, 2019 16:25 Post subject: |
|
|
Flasher wrote: | Зачем Color для всех типов файлов? |
Так маркирование как по Color так и по другой колонке идёт для всех файлов и папок, к тому же на месте color у меня может быть например принадлежность файла к какой-либо группе.
Спасибо большое, все работает на отлично! |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Feb 23, 2019 19:13 Post subject: |
|
|
swr wrote: | идёт для всех файлов и папок | Тогда нужно убрать строку 'FoldersPaths=0'.
Пож-та. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
Mailk
Joined: 16 Jan 2010 Posts: 251
|
(Separately) Posted: Wed Feb 27, 2019 21:51 Post subject: |
|
|
Я сам столкнулся с подобной проблемой когда к одному файлу нужно несколько записей и желательно как то можно было их еще юзать и с именим файла. Я бы посоветовал автору топика обратиться к плагину для записи данных в поток NTFS до 9 "коментов" не каких файлов и проблем с переносом их . Одна проблема NTFS только чтоб. Пардон что не совсем по теме .. но возможно это идеальное решения для проблемы.
из реадми....
NTFS Descriptions
Content-плагин для Total Commander
Описание
--------
Плагин предназначен для просмотра, создания и редактирования комментариев к файлам и каталогам,
причём эти комментарии хранятся в виде потоков в файловой системе NTFS.
Преимущества такого способа:
-не создаются лишние файлы в каждом каталоге (типа descript.ion или files.bbs);
-комментарии сохраняются даже после копирования проводником;
-вы можете создавать сколько угодно комментариев с разными именами (в разных потоках).
Недостатки:
-потоки можно создавать только на дисках с файловой системой NTFS,
соответственно требуется Windows NT, 2000, XP, Vista и т.п.
При копировании файла/каталога на диск FAT32 комментарии(потоки) будут утеряны! |
|
Back to top |
|
|
|