Альтернатива descript.ion
Select messages from
# through # FAQ
[/[Print]\]
Goto page Previous  1, 2, 3  Next  :| |:
Total Commander -> Плагины Total Commander

#16:  Author: swr PostPosted: Sun Feb 10, 2019 23:20
    —
Flasher wrote:
Под каждую колонку отдельный скрипт что ли?


Да, у меня сейчас 3 отдельных скрипта.

#17:  Author: FlasherLocation: Москва PostPosted: Sun Feb 10, 2019 23:25
    —
Нужно в одном всё делать, иначе нагрузка втрое увеличивается, а скорость уменьшается.
Опишите все три критерия поиска.

#18:  Author: swr PostPosted: Mon Feb 11, 2019 00:52
    —
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



Скрипт срабатывает, но возможно я неправильно дополнил код? я в этом не разбираюсь...

#19:  Author: FlasherLocation: Москва PostPosted: Mon Feb 11, 2019 01:18
    —
swr wrote:
Flasher wrote:
Опишите все три критерия поиска.

Сделал как вы сказали
Да? Что-то не заметил. Я не просил приводить скрипт и ini.
swr wrote:
возможно я неправильно дополнил код?
Правильнее сказать избыточно, тут достаточно одного паттерна с группой подвыражений.

#20:  Author: swr PostPosted: Mon Feb 11, 2019 01:27
    —
Flasher wrote:

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


Я такое сам не сделаю.

#21:  Author: FlasherLocation: Москва PostPosted: Mon Feb 11, 2019 01:56
    —
swr
Продолжаем разговор слепого с глухим? Я просьбу для чего выделил?

#22:  Author: swr PostPosted: Mon Feb 11, 2019 14:12
    —
Flasher wrote:

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


Я интерпритировал "критерии поиска" как раз, как три регулярных выражения по которым ищутся значения и соответственно привёл это всё в коде, я вас не понимаю, что вы имеете ввиду под критериями поиска? Всё что мне нужно (и это уже работает) я привел в скрипте, из этого скрипта же видно по каким регуляркам ищутся значения? Confused

#23:  Author: FlasherLocation: Москва PostPosted: Mon Feb 11, 2019 15:21
    —
Данные регулярные выражения на описание всех критериев не тянут. Они не дают представления о комбинировании искомых подстрок, их последовательности, расположении относительно начала/конца в составе конкретных примеров комментариев.

#24:  Author: swr PostPosted: Thu Feb 21, 2019 23:41
    —
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

#25:  Author: FlasherLocation: Москва PostPosted: Fri Feb 22, 2019 02:05
    —
swr wrote:
"Имя файла 4.ext" мой[y=2019]коммент[c=Green]
3. ... будет скрывать всё что заключено в квадратные скобки...
И получится: "Имя файла 4.ext" мойкоммент. Так и надо (без пробела)?

#26:  Author: swr PostPosted: Fri Feb 22, 2019 19:27
    —
Flasher wrote:
И получится: "Имя файла 4.ext" мойкоммент. Так и надо (без пробела)?


Да, я думаю, добавление условия с разделением двух комментариев излишне усложнит паттерн, а если нужно будет их разделить, то в самом комментарии будет добавлен пробел.

#27:  Author: FlasherLocation: Москва PostPosted: Fri Feb 22, 2019 22:18
    —
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

#28:  Author: swr PostPosted: Sat Feb 23, 2019 16:25
    —
Flasher wrote:
Зачем Color для всех типов файлов? Confused


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

Спасибо большое, все работает на отлично!

#29:  Author: FlasherLocation: Москва PostPosted: Sat Feb 23, 2019 19:13
    —
swr wrote:
идёт для всех файлов и папок
Тогда нужно убрать строку 'FoldersPaths=0'.

Пож-та.

#30:  Author: Mailk PostPosted: Wed Feb 27, 2019 21:51
    —
Я сам столкнулся с подобной проблемой когда к одному файлу нужно несколько записей и желательно как то можно было их еще юзать и с именим файла. Я бы посоветовал автору топика обратиться к плагину для записи данных в поток NTFS до 9 "коментов" не каких файлов и проблем с переносом их . Одна проблема NTFS только чтоб. Пардон что не совсем по теме .. но возможно это идеальное решения для проблемы.
из реадми....

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

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

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

Недостатки:
-потоки можно создавать только на дисках с файловой системой NTFS,
соответственно требуется Windows NT, 2000, XP, Vista и т.п.
При копировании файла/каталога на диск FAT32 комментарии(потоки) будут утеряны!



Total Commander -> Плагины Total Commander


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page Previous  1, 2, 3  Next  :| |:
Page 2 of 3

Powered by phpBB © 2001, 2005 phpBB Group