Показ файлов, не имеющих совпадений по базовому имени

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

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

Ответить
Аватара пользователя
Ostap Fender
Сообщения: 35
Зарегистрирован: Пн июн 19, 2017 16:21

Показ файлов, не имеющих совпадений по базовому имени

Сообщение Ostap Fender »

Прошу Уважаемых модераторов дать теме более подходящее название.
(Вывод на панель файлов, не имеющих одноименного аналога, без учета расширения) -у меня просто обрезалось.
Пояснение:
Имеется папка. В ней находятся 100 файлов .png, и 75 файлов .txt, имеющих одинаковые имена с файлами .png. (Форматы файлов приведены образно).
1.Нажатие на кнопку должно вывести на панель 25 файлов .png, не совпадающих по имени ни с одним файлом .txt.
2.Кнопка должна работать как с выделенными файлами, так и с содержимым выделенных папок, выводя на панель только файлы.
Условие 2 не принципиально для выполнения, если это существенно затруднит создание кнопки, (можно предварительно показать папки без подкаталогов), но по возможности - желательно.
Понимаю, что эта возможность реализована в ТС в поиске с помощью плагина [=tc.Имя]. Но решение данной задачи, подразумевает несколько действий. А я хотел бы выполнить всё это за одно нажатие.
Данная кнопка предусматривает узконаправленную область применения, и не найдет массового спроса, но был бы очень признателен за её создание.
С уважением.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

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

'=============================== VBS ===============================
' Показать в активной панели файлы без наличия однобазовых спутников
' Условие: требуется компонент TCScript.dll
'===================================================================
Set Dict = CreateObject("Scripting.Dictionary")
Set FSO  = CreateObject("Scripting.FileSystemObject")
With CreateObject("TCScript.Helper")
  .Pause = 0 : .Wait = True
  Clip = .GetTextFromClip : P = .GetSrcPath
  Set Items = CreateObject("Shell.Application").NameSpace(P).Items
  For Each F in FSO.GetFolder(P).Files
    BN = FSO.GetBaseName(F)
    If Not Dict.Exists(BN) Then
      Dict.Add BN, "" : Items.Filter 73920, BN & ".*"
      If Items.Count = 1 Then List = List & vbLf & F
    End If
  Next : Set Dict = Nothing : Set FSO = Nothing
  .SetTextToClip List : .LockTC True : .SendCommand 2033, True
  .SendCommand 2023, True : .SendCommand 524, True
  .LockTC False : .SetTextToClip Clip
End With
Это именно показ, не фильтрация.
Последний раз редактировалось Flasher Ср дек 13, 2017 00:42, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Ostap Fender
Сообщения: 35
Зарегистрирован: Пн июн 19, 2017 16:21

Сообщение Ostap Fender »

Как всегда Flasher безукоризнен. А иначе и быть не могёт. Спасибо. Не знал я ТС как хотелось бы, а скоро вообще разучусь.
Доводим задачу до логического конца.
После вывода файлов на панель, кнопка должна создать в противоположной панели, в папке с названием @ которую она создаст сама, спутники для выведенных файлов формата .png и .tga (только для этих форматов, для других спутнике не нужны по сути),в формате .txt с таким содержимым: (в содержимом обязательно наличие пустой десятой строки)
Has Alpha Channel: yes
Number of Animations: 0
Horizontal Animation: no
Vertical Resizable: no
Horizontal Resizable: no
Fixed Top: 0
Fixed Bottom: 0
Fixed Left: 0
Fixed Right: 0
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

На доброе здоровье.
Все, что идёт далее, к сабжу не относится и реализуется иначе. Нет смысла что-то вообще показывать в панели, когда можно пройтись рекурсивно (т. е. по всей глубине, если это требуется по 2 условию) по папке, сопоставить имена и создать txt для подходящих.
Тема скорее новая (Создание отсутствующих описаний для файлов по маске) или вот эта.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Ответить