Показ файлов, не имеющих совпадений по базовому имени
Select messages from
# through # FAQ
[/[Print]\]

Total Commander -> Автоматизация Total Commander

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

#2:  Author: FlasherLocation: Москва PostPosted: Tue Dec 12, 2017 19:40
    —
Code:
'=============================== 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
Это именно показ, не фильтрация.

Last edited by Flasher on Wed Dec 13, 2017 01:42; edited 1 time in total

#3:  Author: Ostap Fender PostPosted: Tue Dec 12, 2017 21:26
    —
Как всегда 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

#4:  Author: FlasherLocation: Москва PostPosted: Wed Dec 13, 2017 02:38
    —
На доброе здоровье.
Все, что идёт далее, к сабжу не относится и реализуется иначе. Нет смысла что-то вообще показывать в панели, когда можно пройтись рекурсивно (т. е. по всей глубине, если это требуется по 2 условию) по папке, сопоставить имена и создать txt для подходящих.
Тема скорее новая (Создание отсутствующих описаний для файлов по маске) или вот эта.



Total Commander -> Автоматизация Total Commander


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

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group