Как работать с предварительно выделенными файлами

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

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

Ответить
dumi
Сообщения: 7
Зарегистрирован: Вс фев 26, 2023 20:00

Как работать с предварительно выделенными файлами

Сообщение dumi »

Многоуважаемые знатоки ТС, просветите пожалуйста недостойного. Все главные функции файлменеджера (копирование, перемещение, архивирование и т.д.) умеют работать с предварительно выделенными файлами. Как из собственного скрипта, привязанного к кнопке, получить список предварительно выделенных файлов оптом или сформировать его путем перебора? Неважно, на каком языке, Бог с ним ... Интересует информация об этих объектах, как элементах контекста ТС или ОС, к которым должен быть доступ из скриптов. Должен существовать либо готовый список, либо какие-то отличительные характеристики у выделенных файлов, либо и то и другое. Потратил уже кучу времени на поиски на тематических форумах, и просто в Гугле, результата - практически ноль. Не верится, что это до меня никому не было нужно. Может это какое-то табу или "стыдная" тема, или имя "того, кого нельзя называть" (если публично страшно, напишите по секрету в личку :twisted: )? Или я говорю не на том языке(?) ...
Фрагмент скрипта в цикле перебора всех файлов текущей директории:

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

    if os.path.isfile (file) and os.access (file, os.R_OK):   
	      # Проверяем, что файл выделен
         file_info = os.stat (file)
         file_attributes = file_info.st_mode         		 
         if file_attributes & stat.FILE_ATTRIBUTE_ARCHIVE:  # Это вроде должно работать, но не работает
 	    show_var("file_attributes")  # Это моя подпрограммка для отладки, которая показывает значение переменной в модальном окошке:  file_attributes=33206 (это правильное ожидаемое значение)
 	    show_var("stat.FILE_ATTRIBUTE_ARCHIVE")   # stat.FILE_ATTRIBUTE_ARCHIVE = NONE (а вот это неожиданно) 
– для всех файлов, независимо от их выделенности ... В результате в список выделенных проходят все файлы текущей дирректории...
Какие еще улики в объектных моделях ТС или ОС могут быть использованы для выявления выделенности файла?
Аватара пользователя
CaptainFlint
Сообщения: 6239
Зарегистрирован: Вт дек 14, 2004 22:34
Контактная информация:

Сообщение CaptainFlint »

В подавляющем большинстве случаев выделенные файлы попросту передаются на вход запускаемой программе или скрипту через стандартные шаблоны Тотала, такие как %L, %S и пр., описанные в его справке.
https://flint-inc.ru/tchelp/#dlg_configbuttonbar
Скрипту остаётся лишь взять этот готовый список и работать с ним. Способ получения списка и его обработки, разумеется, зависит от конкретного шаблона и от возможностей выбранного языка программирования (в питоне это, например, переменная sys.argv или специализированный модуль argparse для разбора аргументов командной строки).

В отдельных случаях может возникать задача получения списка файлов непосредственно из окна Тотала, без запуска дополнительного приложения. Такая возможность тоже имеется, но это уже заметно сложнее и требует обмена сообщениями с главным окном Тотала посредством WinAPI-функций.
Почему же, ё-моё, ты нигде не пишешь "ё"?
dumi
Сообщения: 7
Зарегистрирован: Вс фев 26, 2023 20:00

Сообщение dumi »

CaptainFlint
Похоже это то, что надо! Спасибо.
Но, ... сопутствующий вопросец ...
Если я правильно понял, то "стандартный шаблон" – это текст "%S %Y" в поле "Параметры" кнопки? Больше ничего? Разделитель не нужен? Или я все не так понял?..

Работает! :) Только насчет разделителя в строке параметров - все еще вопросик, ну да ладно ...
dumi
Сообщения: 7
Зарегистрирован: Вс фев 26, 2023 20:00

Сообщение dumi »

Разделитель в "Параметрах" кнопки не нужен.
Тему можно закрыть, но я не знаю как ...
Ответить