Страница 1 из 1

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

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

Добавлено: Вт дек 12, 2017 18:40
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
Это именно показ, не фильтрация.

Добавлено: Вт дек 12, 2017 20:26
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

Добавлено: Ср дек 13, 2017 01:38
Flasher
На доброе здоровье.
Все, что идёт далее, к сабжу не относится и реализуется иначе. Нет смысла что-то вообще показывать в панели, когда можно пройтись рекурсивно (т. е. по всей глубине, если это требуется по 2 условию) по папке, сопоставить имена и создать txt для подходящих.
Тема скорее новая (Создание отсутствующих описаний для файлов по маске) или вот эта.