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 

Альтернатива descript.ion
Goto page Previous  1, 2, 3  Next
 
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander printer-friendly view
View previous topic :: View next topic  
Author Message
swr



Joined: 07 Jun 2007
Posts: 59

Post (Separately) Posted: Sun Feb 10, 2019 23:20    Post subject: Reply with quote

Flasher wrote:
Под каждую колонку отдельный скрипт что ли?


Да, у меня сейчас 3 отдельных скрипта.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sun Feb 10, 2019 23:25    Post subject: Reply with quote

Нужно в одном всё делать, иначе нагрузка втрое увеличивается, а скорость уменьшается.
Опишите все три критерия поиска.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
swr



Joined: 07 Jun 2007
Posts: 59

Post (Separately) Posted: 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



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



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Feb 11, 2019 01:18    Post subject: Reply with quote

swr wrote:
Flasher wrote:
Опишите все три критерия поиска.

Сделал как вы сказали
Да? Что-то не заметил. Я не просил приводить скрипт и ini.
swr wrote:
возможно я неправильно дополнил код?
Правильнее сказать избыточно, тут достаточно одного паттерна с группой подвыражений.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
swr



Joined: 07 Jun 2007
Posts: 59

Post (Separately) Posted: Mon Feb 11, 2019 01:27    Post subject: Reply with quote

Flasher wrote:

тут достаточно одного паттерна с группой подвыражений.


Я такое сам не сделаю.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Feb 11, 2019 01:56    Post subject: Reply with quote

swr
Продолжаем разговор слепого с глухим? Я просьбу для чего выделил?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
swr



Joined: 07 Jun 2007
Posts: 59

Post (Separately) Posted: Mon Feb 11, 2019 14:12    Post subject: Reply with quote

Flasher wrote:

Продолжаем разговор слепого с глухим? Я просьбу для чего выделил?


Я интерпритировал "критерии поиска" как раз, как три регулярных выражения по которым ищутся значения и соответственно привёл это всё в коде, я вас не понимаю, что вы имеете ввиду под критериями поиска? Всё что мне нужно (и это уже работает) я привел в скрипте, из этого скрипта же видно по каким регуляркам ищутся значения? Confused
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Mon Feb 11, 2019 15:21    Post subject: Reply with quote

Данные регулярные выражения на описание всех критериев не тянут. Они не дают представления о комбинировании искомых подстрок, их последовательности, расположении относительно начала/конца в составе конкретных примеров комментариев.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
swr



Joined: 07 Jun 2007
Posts: 59

Post (Separately) Posted: Thu Feb 21, 2019 23:41    Post subject: Reply with quote

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. Извиняюсь за долгий ответ. Embarassed
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Feb 22, 2019 02:05    Post subject: Reply with quote

swr wrote:
"Имя файла 4.ext" мой[y=2019]коммент[c=Green]
3. ... будет скрывать всё что заключено в квадратные скобки...
И получится: "Имя файла 4.ext" мойкоммент. Так и надо (без пробела)?
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
swr



Joined: 07 Jun 2007
Posts: 59

Post (Separately) Posted: Fri Feb 22, 2019 19:27    Post subject: Reply with quote

Flasher wrote:
И получится: "Имя файла 4.ext" мойкоммент. Так и надо (без пробела)?


Да, я думаю, добавление условия с разделением двух комментариев излишне усложнит паттерн, а если нужно будет их разделить, то в самом комментарии будет добавлен пробел.
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Fri Feb 22, 2019 22:18    Post subject: Reply with quote

Code:
extensions=*
Зачем Color для всех типов файлов? Confused

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
View user's profile Send private message
swr



Joined: 07 Jun 2007
Posts: 59

Post (Separately) Posted: Sat Feb 23, 2019 16:25    Post subject: Reply with quote

Flasher wrote:
Зачем Color для всех типов файлов? Confused


Так маркирование как по Color так и по другой колонке идёт для всех файлов и папок, к тому же на месте color у меня может быть например принадлежность файла к какой-либо группе.

Спасибо большое, все работает на отлично!
Back to top
View user's profile Send private message
Flasher



Joined: 06 Nov 2009
Posts: 14229
Location: Москва

Post (Separately) Posted: Sat Feb 23, 2019 19:13    Post subject: Reply with quote

swr wrote:
идёт для всех файлов и папок
Тогда нужно убрать строку 'FoldersPaths=0'.

Пож-та.
_________________
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Back to top
View user's profile Send private message
Mailk



Joined: 16 Jan 2010
Posts: 251

Post (Separately) Posted: Wed Feb 27, 2019 21:51    Post subject: Reply with quote

Я сам столкнулся с подобной проблемой когда к одному файлу нужно несколько записей и желательно как то можно было их еще юзать и с именим файла. Я бы посоветовал автору топика обратиться к плагину для записи данных в поток NTFS до 9 "коментов" не каких файлов и проблем с переносом их . Одна проблема NTFS только чтоб. Пардон что не совсем по теме .. но возможно это идеальное решения для проблемы.
из реадми....

NTFS Descriptions
Content-плагин для Total Commander

Описание
--------
Плагин предназначен для просмотра, создания и редактирования комментариев к файлам и каталогам,
причём эти комментарии хранятся в виде потоков в файловой системе NTFS.

Преимущества такого способа:
-не создаются лишние файлы в каждом каталоге (типа descript.ion или files.bbs);
-комментарии сохраняются даже после копирования проводником;
-вы можете создавать сколько угодно комментариев с разными именами (в разных потоках).

Недостатки:
-потоки можно создавать только на дисках с файловой системой NTFS,
соответственно требуется Windows NT, 2000, XP, Vista и т.п.
При копировании файла/каталога на диск FAT32 комментарии(потоки) будут утеряны!
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Total Commander Forum Index -> Плагины Total Commander All times are GMT + 4 Hours
Goto page Previous  1, 2, 3  Next
Page 2 of 3

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group