Выбрать в другой панели объект с именем подкурсорного

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

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

Viktor
Сообщения: 3
Зарегистрирован: Сб апр 04, 2020 15:32

Выбрать в другой панели объект с именем подкурсорного

Сообщение Viktor »

Помогите реализовать эту мелкую но полезную "фишку". Недавно перешел на Total Commander, до этого пользовалься Frigate Professional фаловым менеджером. В нем была команда (alt+Q) которая ищет файл(или папку) с тем же именем в другой панели и ставила туда неактивный курсор (InactiveFocus). Это очень удобно при копировании по F5 быстро найти последний файл и перейти на него по TAB. Или просто найти файл с тем же именем для того чтобы сравнить его с текущим. Возможно ли создать пользовательскую команду и задать "hotkey".
Последний раз редактировалось Viktor Сб апр 04, 2020 18:52, всего редактировалось 1 раз.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Viktor
В стандартном функционале TC такой возможности нет. В текущем подфоруме по автоматизации — ждите, что ответят (если подобное возможно)
А Ctrl+Q в нормальных файловых менеджерах подобного типа открывает на месте другой панели окно быстрого поиска. И во Frigate тоже, а ваша операция делается там по Alt+Q (этот ФМ перестал обновляться 12 лет назад, я им давно не пользуюсь, но справка осталась).
Кроме того, языком данного форума является русский, так что обходитесь без ''hotkey'. И вообще поаккуратнее с правописанием.
И не надо больше ничего править!
Заголовок темы приведён в более внятное состояние.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Viktor писал(а): с тем же именем
Команда: %COMMANDER_EXE% /A /O /S
Параметры: /R=%T%N

Команда: %COMMANDER_PATH%\Utils\TCFS2\TCFS2.exe /ef
Параметры: "tcd(,<`%T%v\:`>,S,1)"

Если речь о полном (путевом) имени, то T меняем на P.
Связать em_ команду с Alt+Q на странице Разное настроек, полагаю, не проблема.

P.S.: Уверен, что где-то это обсуждалось.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Viktor
Сообщения: 3
Зарегистрирован: Сб апр 04, 2020 15:32

Сообщение Viktor »

Спасибо Flasher вцелом то что нужно, но есть 2 проблемы:
1- если открыт "\\Рабочий стол\" выдаст ошибку "Диск не найден" или когда в другой панели FTP (мне кажется это связано с наклоном косой "/" вместо "\") то ничего не происходит :(
2- не критично, но когда ищу в папку в другой панели она открывается.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Viktor
Здесь можно ещё посмотреть.
Если выделение не требуется, то сцепку можно дополнить командой снятия выделения (cm_ClearAll):
cm_CopyNamesToClip,cm_FocusTrg,cm_LoadSelectionFromClip,cm_GoToFirstEntry,cm_GotoNextSelected,cm_ClearAll,cm_FocusTrg
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
Предложенный вариант имеет какие-то преимущества перед предыдущими? А о выделении тут речи вообще не было, требовалось правильно позиционировать неактивный курсор — и только.

Viktor
Да, ничего не происходит, если в целевой панели виртуальная папка или FTP (если в исходной — работает). Да, папка в целевой панели при такой навигации открывается. Совсем без ограничений вряд ли удастся обойтись.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Вахмурка
Сообщения: 2587
Зарегистрирован: Пн дек 27, 2004 14:47
Откуда: Большая деревня Москва
Контактная информация:

Сообщение Вахмурка »

Бывает, что распаковываешь архив на пассивную панель, ставя третью птицу ("Unpack each archive..."), а там очень много похожих архивов. Тогда, чтобы показать директорию именно только что распакованного, вместо команды Flasher'а
Flasher писал(а):Команда: %COMMANDER_EXE% /A /O /S
Параметры: /R=%T%N
пишем %О вместо %N
Сайт PowerPro+Total Commander
Скрипты PowerPro для Total Commander
* * *
«Не усматривайте злого умысла в том, что вполне объяснимо глупостью» (Р. Хэнлон)
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Avada писал(а):Предложенный вариант имеет какие-то преимущества перед предыдущими?
Это обязательное условие размещения сообщения?
Сцепка, позиционируясь на папке, не открывает её, с "Рабочим столом" работает.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Вахмурка
Видимо, и в этом есть практичеcкая польза, но запрашивалась всё-таки другая задача. Опять же в целевой панели может оказаться файл без расширения с тем же именем, что у файла под курсором, а у архивов могут быть двойные расширения (например *.fb2.zip).
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Viktor
Из всех рассмотренных мной вариантов самый симпатичный следующий:

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

'======================== VBS ========================
'   Установить курсор на объекте в пассивной панели
'   с именем объекта под курсором в активной панели
'
' Условия:  1) необходим компонент TCScript.dll
'           2) необходима команда em_selectfilesb, где
'           selectfilesb в первом поле, а %A во втором
'=====================================================
With CreateObject("TCScript.Helper")
  .Pause = 0 : .Wait = True : .LockTC 1
  IsSelected = .GetInfo(1007 - .GetInfo(1000))
  Name = .GetInfo("SN") : .SendCommand 4006, 1
  If Name = ".." Then
    If .GetInfo(1009) + .GetInfo(1010) = 2 Then .SendKeyStroke "{HOME}"
  Else If IsSelected Then C = .GetTextFromClip : .SendCommand 2017, 1
    .SendCommand  524, 1 : .UserCmd "em_selectfilesb """ & Name & """"
    .SendCommand 2049, 1 : .SendCommand 2053, 1 : .SendCommand 524, 1
    If IsSelected Then .SendCommand 2033, 1 : .SetTextToClip C
  End If
  .SendCommand 4006, 1 : .LockTC 0
End With
Помимо запрошеных пунктов здесь сохраняется выделение и не видно лишних мельтешений в панелях.
Последний раз редактировалось Flasher Чт апр 09, 2020 12:09, всего редактировалось 5 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

sa
В ответ на мой вопрос можно было:
а) просто огрызнуться;
б) ответить по существу (чего я и хотел).
Каждый из вариантов имеет право на существование, но поодиночке, а не в сцепке.

Flasher
Честно говоря, я перестал понимать, что именно в этой теме сейчас обсуждается и насколько соотносится с исходным запросом (не ставя под сомнение качество самих предложений). И с каждым следующим постом моё непонимание растёт.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada
Ладно, поправил шапку. Так яснее?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Да, безусловно.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Viktor
Сообщения: 3
Зарегистрирован: Сб апр 04, 2020 15:32

Сообщение Viktor »

Скрипт от Flasher'a не смог запустить :( . Спасибо за работу и отзывчивость но я не разобрался где достать TCScript.dll и команду em_selectfilesb:
Flasher писал(а):' Условия: 1) необходим компонент TCScript.dll
' 2) необходима команда em_selectfilesb, где
' selectfilesb в первом поле, а %A во втором
Буду благодарен если в двух словах опишите что сделать для запуска скрипта.

Использовал метод sa, он мне подходит поскольку прост в использовании, работает как с виртуальными папками так и в FTP соединениях.
sa
Сообщения: 2758
Зарегистрирован: Ср апр 29, 2009 18:56

Сообщение sa »

Viktor
Поскольку рассматриваемая сцепка изначально предназначалась для выделения нескольких файлов/папок из активной в пассивной панели, то для работы исключительно с объектом под курсором имеет смысл сцепку начать командой снятия выделения в активной панели (cm_ClearAll).
Ответить