Что нового

Время, дата Допиливание функции "Теги" в Windows 10

Mihaj

Новичок
Сообщения
18
Репутация
0
Предисловие: С некоторых пор в Windows 10 появилась очень долгожданная фича – возможность присваивать Теги файлам некоторых особо востребованных типов, и использовать их для быстрого выполнения выборок.
Это нужно в дополнение к изначальной возможности классификации данных (файлов) на компьютере по пользовательским категориям используя каталоги (директории, папки), которая позволяет жестко связать объект только с одной тематической группой, в то время, как очень часто объект логически связан одновременно с несколькими или многими темами. Теги позволяют, практически не усложняя ни систему, ни эргономику, связывать объекты, теоретически, с любым количеством категорий/тем. Не следует путать это с узко специальными, например, MP3-тегами, которые, к тому же, работают только при наличии весьма весомого специального ПО. – Общесистемные теги позволяют логически объединять данные (файлы, объекты) разных типов. Да, давно существуют другие способы преодолевать это ограничение файловой системы ОС, например, ярлыки(линки), мягкие, жесткие, но в сравнении с общесистемными тегами это лишь довольно неудобные ограниченные костыли …
Предисловие 2. … И все бы, наконец, стало хорошо, но в "лучших" традициях мелкомягких (MS), вопрос чуть-чуть не додумали … Выполнение штатной процедуры присвоения тегов влечет изменение даты модификации файла. – Уж точно, не менее значимого параметра и для выборок, и для сортировки файлов, и не только, чем теги. Если в случаях с одиночными файлами это еще можно пережить, вручную возвращая атрибут даты в на-зад (если вовремя заметил и предусмотрел), то для систематического использования такая благодать совершенно неприемлема. Отсюда, острое желание это положение дел решительно изменить.

Что имеем сейчас - существующий сценарий присвоения тегов группе файлов:
  1. В файл-менеджере выделяем файлы, которым нужно присвоить одинаковые теги.
  2. Вызываем формочку "Свойства". В ней переходим на вкладку "Подробно".
    скринСвойстваТеги.png
    Если для всех типов выделенных файлов предусмотрено системное свойство "Теги", то находим его в списке свойств, если среди выделенных файлов имеется хоть один, для типа которого такое свойство не положено, то в списке свойств этого свойства нет … Если есть, то вводим нужные теги. А если нет, то жмем "Отмена" и смотрим что мы там навыделяли … И вызываем формочку снова …
  3. По нажатию кнопки "ОК" формочка закрывается, файлы пересохраняются, и дата-время модификации у них меняется на текущее.
Задача. Немножко усовершенствовать существующий сценарий:
(почти "Технические требования" :smile:)
  1. Пользователь выделил в файл-менеджере файлы, которым нужно присвоить одинаковые теги. (В каком файл-менеджере, в Windows или в Total Commander, в принципе без разницы, но лично я предпочел бы второй.)
  2. Нажал нашу командную кнопку, или пункт меню, или "горячую клавишу" "Теги", которая запускает наш скрипт.
  3. Скрипт проходит по выделенным файлам и собирает в таблицу (массив) ссылки на файлы и их существующие даты-время. Здесь пример кода, в котором, помимо прочего, производится поиск выделенных файлов. Дату-время каждого найденного файла видимо должна добыть функция FileGetTime(). Затем
  4. (скрипт) открывает штатную форму "Свойства" (см.спойлер выше). Проверяет, есть ли в ней свойство "Теги" (теги всегда располагаются во вкладке "Подробно", в разделе "Описание", но раздел "Описание" не всегда является первым). Если этого свойства нет, то скрипт заканчивает работу (дальше не наше дело), а если есть, то ждет, когда пользователь нажмет "ОК", и завершится системная процедура сохранения файлов.
  5. После завершения сохранения, скрипт проходит по записанным в памяти файлам и восстанавливает в них записанные атрибуты "дата-время", вероятно, с помощью функции FileSetTime().
Вроде всё ...

Примечания:
  1. Версию AutoIt не указал, так как я его пока не устанавливал. Но я пробовал выставить в Total Commander простейшую кнопку, сработанную в AutoIt, и она заработала. И это был скрипт, а не экзешник. Может Тотал "от природы" на это способен?
  2. Во время предварительного обсуждения было озвучено предположение, что, возможно, с помощью скрипта можно присвоить файлам теги в обход штатной процедуры сохранения, которая портит даты, и тогда не нужны были бы операции перезаписи даты-времени. Но, во-первых, очень сомнительно, что это возможно (любопытно бы конечно проверить, если кто-н умеет), а во-вторых, тогда, наверное, пришлось бы делать собственную форму для ввода тегов, а в системной форме не такая уж простая логика работы поля "Теги" (там обеспечивается подтягивание уже существующих тегов по первым символам, автоматическая вставка разделителя – … это объективно очень полезно, чтобы минимизировать размножение тегов из-за случайных различий в написании).
  3. Предвижу возможность возникновения необходимости заменить все существующие теги выбранных файлов на новые. Интерактивно это сделать невозможно. Но, на первый взгляд, программно это можно реализовать.
  4. Также возможна ситуация, когда все теги у выделенных файлов нужно удалить. Если у этих файлов разные теги, то это сейчас также сделать невозможно. Но, кажется, программно и это можно реализовать.
  5. Чтобы реализовать последние две возможности, необходимо предоставить пользователю опции для указания его намерений. Это можно сделать в виде группы из трех радиобатонов, для явного указания режима редактирования тегов (стандартный(добавление), замена всех, удаление всех). Но тогда, наверное, нужно делать для них специальную форму, на которой тогда будет находиться и кнопка вызова собственно формы "Свойства". В этом случае, заодно, можно добавить и опции манипуляции с датой (указать определенное значение, или вообще заказать ничего не делать). Но это всё можно добавить позже, если получится основное и будет сильная потребность …
 
Верх