Открытие выделенных файлов во вкладках

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

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

Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Avada писал(а):Я, в свою очередь, полагаю, что для всех потенциальных пользователей скрипта, за исключением счастливых обладателей ОС x64, вариант с %Commander_Path% пока что выглядит несколько более предпочтительным, поскольку не заставляет задумываться, для какой версии TC годится, а для какой нет.
Совершенно не понял, при чём тут битность TC. В моём случае скрипт всегда пишется для актуальной версии (включая беты).

В описание условие добавлялось в других скриптах, но, ИМХО, для этого случая с поднятием древностей дописку можно опустить в расчёте на компетентного "зрителя".
Последний раз редактировалось Flasher Пн фев 13, 2012 03:05, всего редактировалось 1 раз.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Flasher
Моё дело — предупредить.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

C TCMC (указать свой путь) побыстрей будет:

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

'=====================================================================
' Открытие выделенных папок/архивов в отдельных вкладках другой панели
' Параметр: %L
'=====================================================================
If WScript.Arguments.Count = 0 Then WScript.Quit
For Each Fold In Split(CreateObject("Scripting.FileSystemObject").OpenTextFile(WScript.Arguments(0)).ReadAll, vbNewLine)
If Fold > vbNullString Then
  CreateObject("WScript.Shell").Run """%COMMANDER_PATH%\Utils\TCMC\TCMC.exe"" cdst """" """ & Fold & """", 7, True
    WScript.Sleep 40
End If
Next
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

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

Сообщение Flasher »

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

Сообщение Avada »

Flasher
Ну, не знаю... Вот сейчас ещё раз специально сравнил. Визуально — практически то же самое.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

Сообщение Tol!k »

кнопка

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

TOTALCMD#BAR#DATA
%ComSpec% /c for /f "delims=" %# in
('type "%WL"') do "%%commander_path%%\totalcmd.exe" /o /s /t /r="%%#"
wcmicons.dll,83
Выделенные папки/архивы открыть в отдельных вкладках другой панели

1
-1

Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Tol!k писал(а):кнопка
А каким образом можно модифицировать этот вариант для случаев если каталог/архив имеет юникодное имя (иероглифы в имени, к примеру)?
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD
Допустим:

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

TOTALCMD#BAR#DATA
%ComSpec% /c "for %# in
(%S) do "%%COMMANDER_EXE%%" /O /S /T /R="%P%%~#""
wcmicons.dll,83
Выбранные папки/архивы открыть в отдельных вкладках другой панели

1
Или так:

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

TOTALCMD#BAR#DATA
%ComSpec% /c "for %# in
(%S) do "%%COMMANDER_PATH%%\Utils\TCFS2\TCFS2.exe" /ef "tcd(,`%P%%~#`,ST)""
wcmicons.dll,83
Выбранные папки/архивы открыть в отдельных вкладках другой панели

1
Последний раз редактировалось Flasher Ср окт 24, 2018 21:57, всего редактировалось 1 раз.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Flasher писал(а):LonerD
Допустим:
Спасибо. Что-то совсем случайным образом работает - то в противоположной панели открывает, то в текущей, то вообще откроет только часть выделенных каталогов... (да и вариант от Tol!k тоже). Придётся команду вешать на скрипт.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD
По части — закавычил цикл. И с TCFS2 пример добавил. Проверь.
Открытие в разных панелях похоже на конфликт с резидентными скриптами. В стандартных условиях такого быть не должно, если ты, конечно, фокус в другую панель в процессе открытия сам не переставляешь.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Flasher писал(а):По части — закавычил цикл. И с TCFS2 пример добавил. Проверь.
Открытие в разных панелях похоже на конфликт с резидентными скриптами.
То же самое поведение на рабочем тотале. То не все каталоги открываются, то открываются в той же панели. Только у меня нет резидентных скриптов :roll: Пока не представляю, из-за чего такое поведение. Видимо, какая-то настройка "тормозит" процесс открытия вкладок одна сразу за другой, они просто не успевают открыться все и с заданными параметрами...
Попробовал на чистом Тотале - чётко отрабатывают оба варианта.

==========

Заодно родился такой скрипт на AutoHotkey.

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

;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Total Commander DreamLair                        ;
; Script: Open selected dirs/files in new tabs     ;
; Скрипт: Відкрити виділені файли/каталоги в нових вкладках
; Скрипт: Открыть выделенные файлы/каталоги в новых вкладках
; Script version: 1.0 (2018.10.25)                 ;
; Script author: LonerD                            ;
; Site: https://dreamlair.net                      ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; Parameter:                                       ;
;  1) %WL (required)                               ;
;  2) T - open in target panel                     ;
;  3) D - open only directories                    ;
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;

#NoEnv
#NoTrayIcon
#SingleInstance force

if not ( WinExist("ahk_class TTOTAL_CMD") || WinActive("ahk_class TTOTAL_CMD") )
  ExitApp
EnvGet, commander_exe, commander_exe

if 0 < 1
  ExitApp
Filelist = %1%
Panel = %2%
OnlyDirs = %3%

TagPanel := Panel = "T" ? "/R=" : "/L="

Loop, Read, % Filelist
{
  if !InStr(FileExist(A_LoopReadLine), "D") & ( OnlyDirs = "D" )
    Continue
  RunWait, % commander_exe " /O /S /T " TagPanel """" A_LoopReadLine """"
  Sleep, 200
}

ExitApp
==========

Второй вариант с открытием через отправку TC команды CD.

==========
PS. Строка "Sleep, 200" нужна для стабильной работы с установленным плагином TWinKey (добавляется небольшая пауза между открытиями вкладок). Если плагин не используется, то скорее всего для быстроты работы эту строку можно удалить.
Последний раз редактировалось LonerD Чт окт 25, 2018 02:04, всего редактировалось 2 раза.
Windows 11 | TC DreamLair eternal pre-α
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

LonerD писал(а):То же самое поведение на рабочем тотале.
На виртуальном? Там вообще не будет работать.
LonerD писал(а):они просто не успевают открыться все и с заданными параметрами...
Ну, ОК. А если ' start /b/high/wait ""' после do вставить?
LonerD писал(а):скрипт на AutoHotkey.
А чего не с cd-то? С ней же куда быстрее.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
LonerD
Сообщения: 1174
Зарегистрирован: Вт янв 04, 2011 03:56
Откуда: Макеевка
Контактная информация:

Сообщение LonerD »

Во, разобрался. Причина самая ожидаемая - TwinKey. :idea: Причём даже снять все галочки (отключить все функции) в настройках плагина - не вариант. Вышеуказанная проблема проявляется стабильно (10 каталогов выделяю - открывается штук 7-8 ). Только если удалить TwinKey (или отключить его через PluginsManager) - всё приходит в норму.
Flasher писал(а):
LonerD писал(а):То же самое поведение на рабочем тотале.
На виртуальном?
На моём настроенном с плагинами и всем прочим.
Flasher писал(а):А если ' start /b/high/wait ""' после do вставить?
Против лома нет приёма. Нет положительного эффекта))
Flasher писал(а):А чего не с cd-то? С ней же куда быстрее.
Вот такой получился....
Но каталоги с именами в юникоде у меня не открываются. Вижу, что в куске кода, отвечающем за работу CD, есть какая-то поддержка юникода (но смысл кода я не понимаю, не знаю почему не срабатывает).
Windows 11 | TC DreamLair eternal pre-α
Skif_off
Сообщения: 1252
Зарегистрирован: Ср ноя 28, 2012 13:44

Сообщение Skif_off »

LonerD
Тут не смотрели, как реализована работа с юникодом? Никаких проблем с cd и em-командами вроде не было (__ANSItoUTF8toANSI(), __CheckANSItoUTF8()).
Ответить