Подсветка каталога по названию выделенного файла

Обсуждение вопросов автоматизации Total Commander с помощью сторонних программ и скриптовых технологий.

Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер

Ответить
sbm
Сообщения: 3
Зарегистрирован: Чт июл 02, 2020 16:41

Подсветка каталога по названию выделенного файла

Сообщение sbm »

Добрый день.

Приходится распределять большое количество файлов по папкам, многие папки повторяются.
Можно ли как-то автоматизировать этот процесс, написав плагин, который, к примеру, при выделении файла в левой панели, в правой отображает папку, похожая по названию на выделенный файл?
И останется только перетащить файл из левой панели в выделенный каталог на правой панели.

https://yadi.sk/i/-VSF5MP0Yq7p9Q

Заранее спасибо
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sbm
В TC существуют плагины не для всего, что кому-то придёт в голову, а с вполне конкретной функциональностью (см. справку), которая произвольно не расширяется. А вопросы, подобные вашему, проясняются (если найдутся желающие) в подфоруме по автоматизации, куда эта тема для начала и переносится.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sbm
Тут либо работа по конкретным шаблонам нужна либо что-то совсем умное и сложное в работе со словарями, т. к. вариативность расстановки совпадающих частей текста запредельная.
Запрос совсем неопределённый. В заголовке написано про подсветку, в посте про выделение и отображение, хотя целью вообще является перемещение. Если уж писать какое-то средство автоматизации, то с выполнением конечной цели с максимальным сужением фильтрационных рамок.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sbm
Некоторые добавления к предыдущему ответу.
1. "Похожая по названию на выделенный файл" — это (даже безотносительно к сомнительной технической стороне реализации) очень мутный критерий. К примеру, у вас есть некий файл. В другой панели имеются, предположим, три папки, каждая из которых от исходного имени отличается одним символом. Какую прикажете выделять? Не задумывались над таким вопросом?
2. Ну выделили вам как-то папку, допустим. Но не факт, что она у вас окажется в поле зрения. Дальше будете искать её (вприглядку или сортировкой по выделению, если умеете) в списке?
3. Перетаскивать файл на выделенную в результате этих манипуляций папку — это, ИМХО, неуважение к собственному времени и постоянный риск ошибиться. Вы не в Проводнике, здесь предпочитаются другие операционные схемы (где есть и перетаскивание, да, но отнюдь не как самый лучший вариант). Куда логичнее было бы открыть папку и выполнить в неё нормальное копирование в стиле TC.
4. И вообще ситуация, когда вы всё намерены делать руками, а упростить пытаетесь один промежуточный этап (не факт, что вообще в таком виде нужный), выглядит достаточно странно. Здесь надо либо, как верно выше замечено, продумывать автоматизацию всей цепочки (при нормальном её пояснении и технической возможности), либо оставить эту идею в покое.
5. И, наконец, не рекомендую использовать "подсветку" (означающую в TC совсем другое) как синоним "выделения". Вас просто не поймут.
Последний раз редактировалось Avada Пн июн 26, 2023 22:37, всего редактировалось 1 раз.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada писал(а):Но не факт, что она у вас окажется в поле зрения.
Если открывать и выходить в родитель, то окажется. Либо с добавлением cm_GoToFirstEntry,cm_GotoNextSelected. Короче, это (безотносительно справедливости п. 3) решается. Только на нормальной версии, а не той древней, что на скриншоте.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Если открывать, то естественно. Но я-то то оцениваю логику исходного запроса.
Скриншот, кстати, сделал активным, а версия там в самом деле совершенно антикварная. Такое сейчас использовать просто неприлично.
Даже самая богатая фантазия
Не представит себе наши безобразия.
sbm
Сообщения: 3
Зарегистрирован: Чт июл 02, 2020 16:41

Сообщение sbm »

Avada
Полностью автоматизировать этот процесс невозможно в ввиду большой вариантности и неоднозначности условий, поэтому я и хотел облегчить именно ручную работу по разносу файлов.
Можно конкретизировать так: выделил файл в левой панели, нажал некоторую кнопку или сочетание клавиш и в правой панели отобразились только папки с похожими названиями.
"Похожими" здесь берется некоторая маска из названия файла - первые 5 букв и по им делается фильтр на правую панель
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sbm
Число вариантов можно сузить путём подстановки маски из комбинации слов (от большего числа к меньшему до нахождения), разделенных по небуквенному символу или границе с верхним регистром.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
sbm
Сообщения: 3
Зарегистрирован: Чт июл 02, 2020 16:41

Сообщение sbm »

Flasher писал(а):sbm
Число вариантов можно сузить путём подстановки маски из комбинации слов (от большего числа к меньшему до нахождения), разделенных по небуквенному символу или границе с верхним регистром.
и как это можно сделать?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sbm
[cut="Например, с Хелпером (установка в ReadMe; PCRE в WSH нет, т. ч. за регулярку пардоньте):"]

Код: Выделить всё

'============================ VBS ============================
' Показать в другой панели папки с наибольшим числом буквенных
' комбинаций (в строгом порядке) у имён выбранных объектов
' Условие: требуется компонент TCScript.dll
' /f — ключ смены показа папок на фильтрацию файлов
'======================================== Автор: Flasher © ===
Option Explicit: Dim TP, i, Items, REx, Clip, F, N, L, M, c, Arr, S
With CreateObject("TCScript.Helper")
  .Pause = 0 : TP = .GetInfo("TP") : i = .GetInfo(1000)
  If Mid(TP,2,1) <> ":" Or ( .GetInfo(1004 + i) = 0 And _
  .GetInfo(1006 + i) = 0 And .GetInfo(1008 + i) = 1 ) Then WSH.Quit
  Set Items = CreateObject("Shell.Application").NameSpace(TP).Items
  Set REx = New RegExp : REx.Global = 1: REx.Pattern = "[" &P& "]+"
  REx.IgnoreCase = 1 : .Wait = True : Clip = .GetTextFromClip : .LockTC True
  Dim Test, K : Test = WSH.Arguments.Named.Exists("f") : If Test Then K = 32
  For Each F in .GetSrcSelectedFiles
    If Test Or Right(F, 1) = "\" Then
      N = REx.Replace(Left(F, Len(F) - 1), "*") : M = ""
      For i = 1 To Len(N)
        L = Mid(N, i, 1) : If L <> "*" And UCase(L) = L Then L = "*" & L
        M = M & L
      Next: N = M
      If N = "*" Then
        N = Left(F, Len(F) - 1)
      Else
        If Left(N, 1) = "*" Then N = Mid(N, 2)
        If Right(N,1) = "*" Then N = Left(F, Len(F) - 1)
      End If
      Arr = Split(N, "*")
      For c = Ubound(Arr) To 0 Step -1
        Items.Filter 73888 + K, "*" & N & "*"
        If Items.Count Then
          If Test Then
            For Each i in Items
              i = Mid(i.Path, InStrRev(i.Path, "\") + 1)
              If InStr(i, ";") > 0 Or InStr(i, " ") > 0 Then i = """" & i & """"
              S = S & ";" & i
            Next
          Else
            For Each i in Items
              S = S & vbLf & i & "\"
            Next
          End If
          Exit For
        End If
        If InStr(N, "*") Then N = Left(N, Len(N) - Len(Arr(c)))
      Next
    End If
  Next
  Set REx = Nothing : Set Items = Nothing
  If Not IsEmpty(S) Then
    If Test Then
      If .INIRead(.TCPath & "\usercmd.ini", "em_cd", "cmd") <> "cd" Then
        .INIWrite .TCPath & "\usercmd.ini", "em_cd", "cmd", "cd"
        .INIWrite .TCPath & "\usercmd.ini", "em_cd", "param", "%Z%A"
      End If
      .SendCommand 4006, 1 : .UserCmd "em_cd " & S & "|*\" : .SendCommand 4006, 1
    Else
      .SetTextToClip Mid(S, 2)
      For Each n in Array(4006,524,312,2033,2023,524,2049,4006)
        .SendCommand n, 1
      Next
    End If: .LockTC False : .SetTextToClip Clip
  End If
End With

Function P
P = Replace("\0000-\0040\005B-\0060\007B-\00A9\00AB-\00B4\00B6-\00B9"&_
"\00BB-\00BF\00D7\00F7\02C2-\02C5\02D2-\02DF\02E5-\02EB\02ED\02EF"   &_
"-\036F\0375\0378-\0379\037E\0380-\0385\0387\038B\038D\03A2\03F6"    &_
"\0482-\0489\0530\0557-\0558\055A-\0560\0588-\05CF\05EB-\05EF\05F3-" &_
"\061F\064B-\066D\0670\06D4\06D6-\06E4\06E7-\06ED\06F0-\06F9\06FD-"  &_
"\06FE\0700-\070F\0711\0730-\074C\07A6-\07B0\07B2-\07C9\07EB-\07F3"  &_
"\07F6-\07F9\07FB-\07FF\0816-\0819\081B-\0823\0825-\0827\0829-\083F" &_
"\0859-\089F\08B3-\0903\093A-\093C\093E-\094F\0951-\0957\0962-\0970" &_
"\0981-\0984\098D-\098E\0991-\0992\09A9\09B1\09B3-\09B5\09BA-\09BC"  &_
"\09BE-\09CD\09CF-\09DB\09DE\09E2-\09EF\09F2-\0A04\0A0B-\0A0E\0A11"  &_
"-\0A12\0A29\0A31\0A34\0A37\0A3A-\0A58\0A5D\0A5F-\0A71\0A75-\0A84"   &_
"\0A8E\0A92\0AA9\0AB1\0AB4\0ABA-\0ABC\0ABE-\0ACF\0AD1-\0ADF\0AE2-"   &_
"\0B04\0B0D-\0B0E\0B11-\0B12\0B29\0B31\0B34\0B3A-\0B3C\0B3E-\0B5B"   &_
"\0B5E\0B62-\0B70\0B72-\0B82\0B84\0B8B-\0B8D\0B91\0B96-\0B98\0B9B"   &_
"\0B9D\0BA0-\0BA2\0BA5-\0BA7\0BAB-\0BAD\0BBA-\0BCF\0BD1-\0C04\0C0D"  &_
"\0C11\0C29\0C3A-\0C3C\0C3E-\0C57\0C5A-\0C5F\0C62-\0C84\0C8D\0C91"   &_
"\0CA9\0CB4\0CBA-\0CBC\0CBE-\0CDD\0CDF\0CE2-\0CF0\0CF3-\0D04\0D0D"   &_
"\0D11\0D3B-\0D3C\0D3E-\0D4D\0D4F-\0D5F\0D62-\0D79\0D80-\0D84\0D97"  &_
"-\0D99\0DB2\0DBC\0DBE-\0DBF\0DC7-\0E00\0E31\0E34-\0E3F\0E47-\0E80"  &_
"\0E83\0E85-\0E86\0E89\0E8B-\0E8C\0E8E-\0E93\0E98\0EA0\0EA4\0EA6"    &_
"\0EA8-\0EA9\0EAC\0EB1\0EB4-\0EBC\0EBE-\0EBF\0EC5\0EC7-\0EDB\0EE0-"  &_
"\0EFF\0F01-\0F3F\0F48\0F6D-\0F87\0F8D-\0FFF\102B-\103E\1040-\104F"  &_
"\1056-\1059\105E-\1060\1062-\1064\1067-\106D\1071-\1074\1082-\108D" &_
"\108F-\109F\10C6\10C8-\10CC\10CE-\10CF\10FB\1249\124E-\124F\1257"   &_
"\1259\125E-\125F\1289\128E-\128F\12B1\12B6-\12B7\12BF\12C1\12C6-"   &_
"\12C7\12D7\1311\1316-\1317\135B-\137F\1390-\139F\13F5-\1400\166D-"  &_
"\166E\1680\169B-\169F\16EB-\16F0\16F9-\16FF\170D\1712-\171F\1732-"  &_
"\173F\1752-\175F\176D\1771-\177F\17B4-\17D6\17D8-\17DB\17DD-\181F"  &_
"\1878-\187F\18A9\18AB-\18AF\18F6-\18FF\191F-\194F\196E-\196F\1975"  &_
"-\197F\19AC-\19C0\19C8-\19FF\1A17-\1A1F\1A55-\1AA6\1AA8-\1B04\1B34" &_
"-\1B44\1B4C-\1B82\1BA1-\1BAD\1BB0-\1BB9\1BE6-\1BFF\1C24-\1C4C\1C50" &_
"-\1C59\1C7E-\1CE8\1CED\1CF2-\1CF4\1CF7-\1CFF\1DC0-\1DFF\1F16-\1F17" &_
"\1F1E-\1F1F\1F46-\1F47\1F4E-\1F4F\1F58\1F5A\1F5C\1F5E\1F7E-\1F7F"   &_
"\1FB5\1FBD\1FBF-\1FC1\1FC5\1FCD-\1FCF\1FD4-\1FD5\1FDC-\1FDF\1FED-"  &_
"\1FF1\1FF5\1FFD-\2070\2072-\207E\2080-\208F\209D-\2101\2103-\2106"  &_
"\2108-\2109\2114\2116-\2118\211E-\2123\2125\2127\2129\212E\213A-"   &_
"\213B\2140-\2144\214A-\214D\214F-\2182\2185-\2BFF\2C2F\2C5F\2CE5-"  &_
"\2CEA\2CEF-\2CF1\2CF4-\2CFF\2D26\2D28-\2D2C\2D2E-\2D2F\2D68-\2D6E"  &_
"\2D70-\2D7F\2D97-\2D9F\2DA7\2DAF\2DB7\2DBF\2DC7\2DCF\2DD7\2DDF-"    &_
"\2E2E\2E30-\3004\3007-\3030\3036-\303A\303D-\3040\3097-\309C\30A0"  &_
"\30FB\3100-\3104\312E-\3130\318F-\319F\31BB-\31EF\3200-\33FF\4DB6-" &_
"\4DFF\9FCD-\9FFF\A48D-\A4CF\A4FE-\A4FF\A60D-\A60F\A620-\A629\A62C-" &_
"\A63F\A66F-\A67E\A69E-\A69F\A6E6-\A716\A720-\A721\A789-\A78A\A78F"  &_
"\A7AE-\A7AF\A7B2-\A7F6\A802\A806\A80B\A823-\A83F\A874-\A881\A8B4-"  &_
"\A8F1\A8F8-\A8FA\A8FC-\A909\A926-\A92F\A947-\A95F\A97D-\A983\A9B3-" &_
"\A9CE\A9D0-\A9DF\A9E5\A9F0-\A9F9\A9FF\AA29-\AA3F\AA43\AA4C-\AA5F"   &_
"\AA77-\AA79\AA7B-\AA7D\AAB0\AAB2-\AAB4\AAB7-\AAB8\AABE-\AABF\AAC1"  &_
"\AAC3-\AADA\AADE-\AADF\AAEB-\AAF1\AAF5-\AB00\AB07-\AB08\AB0F-\AB10" &_
"\AB17-\AB1F\AB27\AB2F\AB5B\AB60-\AB63\AB66-\ABBF\ABE3-\ABFF\D7A4-"  &_
"\D7AF\D7C7-\D7CA\D7FC-\D7FF\D804-\D807\D809-\D80B\D80E-\D819\D81B-" &_
"\D82B\D82D-\D82E\D830-\D834\D836-\D839\D83B-\D83F\D86F-\D87D\D87F-" &_
"\F8FF\FA6E-\FA6F\FADA-\FAFF\FB07-\FB12\FB18-\FB1C\FB1E\FB29\FB37"   &_
"\FB3D\FB3F\FB42\FB45\FBB2-\FBD2\FD3E-\FD4F\FD90-\FD91\FDC8-\FDEF"   &_
"\FDFC-\FE6F\FE75\FEFD-\FF20\FF3B-\FF40\FF5B-\FF65\FFBF-\FFC1\FFC8-" &_
"\FFC9\FFD0-\FFD1\FFD8-\FFD9\FFDD-\FFFF", "\", "\u")
End Function
[/cut]
Последний раз редактировалось Flasher Вс июл 19, 2020 21:37, всего редактировалось 3 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sbm
К вопросу о верхнем регистре (а заодно и о точках): почитайте правила форума. У нас не чат. Оверквотинг тут тоже категорически не приветствуется (кнопка "цитата" — только для умеющих эти цитаты нормально оформлять, а не для повтора всего подряд).
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

sbm
Также к вопросу о верхнем регистре. Про указанную границу забыл в скрипте. Исправлено.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить