Как работать с предварительно выделенными файлами
Select messages from
# through # FAQ
[/[Print]\]

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

#1: Как работать с предварительно выделенными файлами Author: dumi PostPosted: Fri Jan 26, 2024 14:24
    —
Многоуважаемые знатоки ТС, просветите пожалуйста недостойного. Все главные функции файлменеджера (копирование, перемещение, архивирование и т.д.) умеют работать с предварительно выделенными файлами. Как из собственного скрипта, привязанного к кнопке, получить список предварительно выделенных файлов оптом или сформировать его путем перебора? Неважно, на каком языке, Бог с ним ... Интересует информация об этих объектах, как элементах контекста ТС или ОС, к которым должен быть доступ из скриптов. Должен существовать либо готовый список, либо какие-то отличительные характеристики у выделенных файлов, либо и то и другое. Потратил уже кучу времени на поиски на тематических форумах, и просто в Гугле, результата - практически ноль. Не верится, что это до меня никому не было нужно. Может это какое-то табу или "стыдная" тема, или имя "того, кого нельзя называть" (если публично страшно, напишите по секрету в личку Twisted Evil )? Или я говорю не на том языке(?) ...
Фрагмент скрипта в цикле перебора всех файлов текущей директории:
Code:
    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 (а вот это неожиданно)
– для всех файлов, независимо от их выделенности ... В результате в список выделенных проходят все файлы текущей дирректории...
Какие еще улики в объектных моделях ТС или ОС могут быть использованы для выявления выделенности файла?

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

В отдельных случаях может возникать задача получения списка файлов непосредственно из окна Тотала, без запуска дополнительного приложения. Такая возможность тоже имеется, но это уже заметно сложнее и требует обмена сообщениями с главным окном Тотала посредством WinAPI-функций.

#3:  Author: dumi PostPosted: Fri Jan 26, 2024 20:16
    —
CaptainFlint
Похоже это то, что надо! Спасибо.
Но, ... сопутствующий вопросец ...
Если я правильно понял, то "стандартный шаблон" – это текст "%S %Y" в поле "Параметры" кнопки? Больше ничего? Разделитель не нужен? Или я все не так понял?..

Работает! Smile Только насчет разделителя в строке параметров - все еще вопросик, ну да ладно ...

#4:  Author: dumi PostPosted: Fri Feb 02, 2024 13:44
    —
Разделитель в "Параметрах" кнопки не нужен.
Тему можно закрыть, но я не знаю как ...



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