Копирование имён только выделенных файлов и каталогов
Модераторы: d-view, Моторокер, Avada, CaptainFlint, Nik
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Копирование имён только выделенных файлов и каталогов
Какие есть способы скопировать имена только выделенных файлов и каталогов? Возможно, хитрости через комбинацию cm-команд. Возможно, простым скриптом.
Стандартная команда 2017 если ничего не выделено - то копирует имя файла под курсором.
А нужно: Если что-то выделено (файлы или каталоги) - то копируем их имена (стандартная работа команды 2017). Если выделен один файл/каталог и курсор находится на нём - копируем имя этого одного файла/каталога. Если ничего не выделено - то содержимое буфера очищается. При этом положение курсора и состояние выделения не должно изменяться.
Стандартная команда 2017 если ничего не выделено - то копирует имя файла под курсором.
А нужно: Если что-то выделено (файлы или каталоги) - то копируем их имена (стандартная работа команды 2017). Если выделен один файл/каталог и курсор находится на нём - копируем имя этого одного файла/каталога. Если ничего не выделено - то содержимое буфера очищается. При этом положение курсора и состояние выделения не должно изменяться.
Просто в порядке реплики с места. Вспомнил тему, где обсуждалась специфика поведения выделенных объектов и объектов под курсором.
MVV писал(а):везде в тотале при отсутствии выделения файл под курсором считается выделенным (копирование/перемещение и т.п.).
Даже самая богатая фантазия
Не представит себе наши безобразия.
Не представит себе наши безобразия.
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Да не то, чтобы не подойдёт, но очень громоздко.
Вообще дело началось с небольшой команды - перейти к следующему расширению файла с сохранением выделения.
Задача решилась вот таким способом:
TCFS2.exe /ef msg($0B,0) tcm(2017) tcm(524) tcm(527) tcm(525) tcm(3305) tcm(2053) tcm(524) tcm(2033) msg($0B,1) redraw()
Если на панели есть выделение, то всё работает. А если ничего не выделено, то получается некрасиво - после перехода к следующему расширению тот файл, который изначально был под курсором, становится выделенным.
Вообще дело началось с небольшой команды - перейти к следующему расширению файла с сохранением выделения.
Задача решилась вот таким способом:
TCFS2.exe /ef msg($0B,0) tcm(2017) tcm(524) tcm(527) tcm(525) tcm(3305) tcm(2053) tcm(524) tcm(2033) msg($0B,1) redraw()
Если на панели есть выделение, то всё работает. А если ничего не выделено, то получается некрасиво - после перехода к следующему расширению тот файл, который изначально был под курсором, становится выделенным.
LonerD
Ты в команде забыл tcm(2918) перед redraw() поставить в конце. И вообще можно было бы вполне обсудить по месту назначения, а не пытаться искать в отдельном топике ответ на вопрос, который исходной задачи касается только косвенно.
Ты в команде забыл tcm(2918) перед redraw() поставить в конце. И вообще можно было бы вполне обсудить по месту назначения, а не пытаться искать в отдельном топике ответ на вопрос, который исходной задачи касается только косвенно.
Последний раз редактировалось Flasher Ср авг 22, 2012 22:37, всего редактировалось 1 раз.
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Вся суть в том, чтобы сохранить выделение если что-то выделено.А может сначала снять выделение и послать нажатие Insert?
Данной задачи касается косвенно, потому я и не стал изначально описывать её.который исходной задачи касается только косвенно.
Потому как могут возникать и другие задачи, требующие работы только с выделенными объектами.
PS. Да, кстати, частная задача решена.
Но глобальная так и осталась открытой.
Приходит в голову только алгоритм скрипта (не слишком сложный, но и не очевидный):
1. Копировать имена файлов в буфер.
2. Если в буфере несколько строк, то на этом алгоритм закончен (выделение есть).
3. Если в буфере одна строка - сохранить эту строку в переменную.
3.1. Инвертировать выделение.
3.2. Копировать имена файлов в буфер.
3.3. Инвертировать выделение.
3.4. Сравнить сохранённую переменную со строками полученного списка; если есть совпадения - то очистить буфер, иначе поместить в буфер значение сохранённой переменной.
Посылаешь tcm(530) вместо tcm(2017), потом делаешь своё черное дело, потом посылаешь tcm(524) и tcm(529) вместо tcm(2033). А блин, тотал его сбрасывает при вызове cm_ClearAll... О, а при вызове cm_ClearAllFiles не сбрасывает!LonerD писал(а):Вся суть в том, чтобы сохранить выделение если что-то выделено.
Итого,
Код: Выделить всё
TCFS2.exe /u- /ef msg($0B,0) tcm(530) tcm(524) tcm(527) tcm(525) tcm(3305) tcm(2053) tcm(3304) tcm(529) redraw() msg($0B,1) tcm(2918)- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
MVV
Спасибо, у меня было несколько другое решение, не такое элегантное.
Значит, при копировании в буфер файл под курсором в любом случае считается выделенным если отсутствуют другие выделения.
А команда 530 (Сохранить выделение временно) не считает одиночный файл выделенным. Интересное поведение, надо будет запомнить.
Спасибо, у меня было несколько другое решение, не такое элегантное.
Значит, при копировании в буфер файл под курсором в любом случае считается выделенным если отсутствуют другие выделения.
А команда 530 (Сохранить выделение временно) не считает одиночный файл выделенным. Интересное поведение, надо будет запомнить.
Думаю, тебе на этот вопрос только Гислер ответит..LonerD писал(а):Можно ли считать эту информацию из памяти (каким образом) ?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
- LonerD
- Сообщения: 1174
- Зарегистрирован: Вт янв 04, 2011 03:56
- Откуда: Макеевка
- Контактная информация:
Жаль, а я думал программисты смогут прояснить вопрос.
В частности пока не могу понять и воспроизвести алгоритм работы восстановления выделения по нажатию Esc в плагине TwinKey; создаётся впечатление что плагин считывает и запоминает результат работы команды 530 (cm_SaveSelection).
Вот тут упоминалось о возможности реализации проверки "нет ли в панели выделенных файлов". Интересен механизм этой проверки в случае одного файла - выделен он или просто курсор располагается на нём...
В частности пока не могу понять и воспроизвести алгоритм работы восстановления выделения по нажатию Esc в плагине TwinKey; создаётся впечатление что плагин считывает и запоминает результат работы команды 530 (cm_SaveSelection).
Вот тут упоминалось о возможности реализации проверки "нет ли в панели выделенных файлов". Интересен механизм этой проверки в случае одного файла - выделен он или просто курсор располагается на нём...
Windows 11 | TC DreamLair eternal pre-α