Страница 1 из 2
Выбрать в другой панели объект с именем подкурсорного
Добавлено: Сб апр 04, 2020 17:49
Viktor
Помогите реализовать эту мелкую но полезную "фишку". Недавно перешел на Total Commander, до этого пользовалься Frigate Professional фаловым менеджером. В нем была команда (alt+Q) которая ищет файл(или папку) с тем же именем в другой панели и ставила туда неактивный курсор (InactiveFocus). Это очень удобно при копировании по F5 быстро найти последний файл и перейти на него по TAB. Или просто найти файл с тем же именем для того чтобы сравнить его с текущим. Возможно ли создать пользовательскую команду и задать "hotkey".
Добавлено: Сб апр 04, 2020 18:37
Avada
Viktor
В стандартном функционале TC такой возможности нет. В текущем подфоруме по автоматизации — ждите, что ответят (если подобное возможно)
А Ctrl+Q в нормальных файловых менеджерах подобного типа открывает на месте другой панели окно быстрого поиска. И во Frigate тоже, а ваша операция делается там по Alt+Q (этот ФМ перестал обновляться 12 лет назад, я им давно не пользуюсь, но справка осталась).
Кроме того, языком данного форума является русский, так что обходитесь без ''hotkey'. И вообще поаккуратнее с правописанием.
И не надо больше ничего править!
Заголовок темы приведён в более внятное состояние.
Добавлено: Сб апр 04, 2020 19:37
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.: Уверен, что где-то это обсуждалось.
Добавлено: Пн апр 06, 2020 10:58
Viktor
Спасибо
Flasher вцелом то что нужно, но есть 2 проблемы:
1- если открыт "\\Рабочий стол\" выдаст ошибку "Диск не найден" или когда в другой панели FTP (мне кажется это связано с наклоном косой "/" вместо "\") то ничего не происходит

2- не критично, но когда ищу в папку в другой панели она открывается.
Добавлено: Пн апр 06, 2020 12:49
sa
Viktor
Здесь можно ещё посмотреть.
Если выделение не требуется, то сцепку можно дополнить командой снятия выделения (cm_ClearAll):
cm_CopyNamesToClip,cm_FocusTrg,cm_LoadSelectionFromClip,cm_GoToFirstEntry,cm_GotoNextSelected,cm_ClearAll,cm_FocusTrg
Добавлено: Пн апр 06, 2020 13:33
Avada
sa
Предложенный вариант имеет какие-то преимущества перед предыдущими? А о выделении тут речи вообще не было, требовалось правильно позиционировать неактивный курсор — и только.
Viktor
Да, ничего не происходит, если в целевой панели виртуальная папка или FTP (если в исходной — работает). Да, папка в целевой панели при такой навигации открывается. Совсем без ограничений вряд ли удастся обойтись.
Добавлено: Пн апр 06, 2020 13:45
Вахмурка
Бывает, что распаковываешь архив на пассивную панель, ставя третью птицу ("Unpack each archive..."), а там очень много похожих архивов. Тогда, чтобы показать директорию именно только что распакованного, вместо команды
Flasher'а
Flasher писал(а):Команда: %COMMANDER_EXE% /A /O /S
Параметры: /R=%T%N
пишем %О вместо %N
Добавлено: Пн апр 06, 2020 13:58
sa
Avada писал(а):Предложенный вариант имеет какие-то преимущества перед предыдущими?
Это обязательное условие размещения сообщения?
Сцепка, позиционируясь на папке, не открывает её, с "Рабочим столом" работает.
Добавлено: Пн апр 06, 2020 13:58
Avada
Вахмурка
Видимо, и в этом есть практичеcкая польза, но запрашивалась всё-таки другая задача. Опять же в целевой панели может оказаться файл без расширения с тем же именем, что у файла под курсором, а у архивов могут быть двойные расширения (например *.fb2.zip).
Добавлено: Пн апр 06, 2020 14:04
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
Помимо запрошеных пунктов здесь сохраняется выделение и не видно лишних мельтешений в панелях.
Добавлено: Пн апр 06, 2020 14:05
Avada
sa
В ответ на мой вопрос можно было:
а) просто огрызнуться;
б) ответить по существу (чего я и хотел).
Каждый из вариантов имеет право на существование, но поодиночке, а не в сцепке.
Flasher
Честно говоря, я перестал понимать, что именно в этой теме сейчас обсуждается и насколько соотносится с исходным запросом (не ставя под сомнение качество самих предложений). И с каждым следующим постом моё непонимание растёт.
Добавлено: Пн апр 06, 2020 15:10
Flasher
Avada
Ладно, поправил шапку. Так яснее?
Добавлено: Пн апр 06, 2020 15:20
Avada
Flasher
Да, безусловно.
Добавлено: Пн апр 06, 2020 22:00
Viktor
Скрипт от
Flasher'a не смог запустить

. Спасибо за работу и отзывчивость но я не разобрался где достать TCScript.dll и команду em_selectfilesb:
Flasher писал(а):' Условия: 1) необходим компонент TCScript.dll
' 2) необходима команда em_selectfilesb, где
' selectfilesb в первом поле, а %A во втором
Буду благодарен если в двух словах опишите что сделать для запуска скрипта.
Использовал метод
sa, он мне подходит поскольку прост в использовании, работает как с виртуальными папками так и в FTP соединениях.
Добавлено: Пн апр 06, 2020 23:46
sa
Viktor
Поскольку рассматриваемая сцепка изначально предназначалась для выделения нескольких файлов/папок из активной в пассивной панели, то для работы исключительно с объектом под курсором имеет смысл сцепку начать командой снятия выделения в активной панели (cm_ClearAll).