2 десктопа в одном

Обсуждение Total Commander. Установка, использование, настройка, решение проблем, скрытые функции. Обсуждение новых версий.

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

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

Сообщение Flasher »

Volniy писал(а):Только это работать все равно не будет
Да я даже проверять не стал, повёлся на редакцию Tol'k. А жаль, было бы удобно. :)
Volniy писал(а):Но ведь есть же иной способ, и он-то как раз нормально описан в ридми:
Это всё есть, но хотелось бы, чтобы TCS.SendCommand по функционалу не отличалась от поля "Команда", где можно прописывать помимо внутренних команд ещё и пути с параметрами. :idea:
Batya писал(а):Всё бы хорошо, только виртуальную папку "Рабочий стол" так не откроешь
А это в новые условия задачи и не входило. :wink:
Batya писал(а):А для обычной папки не нужны скрипты, достаточно кнопки:
Это точно. Ночью котелок слабо варит. Видимо, мне так запала в голову та конструкция, что не удержался. :)
DoctorIkari писал(а):Что-то напортачил, в общем получилась такая белиберда:

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

Path = WScript.Arguments(d:\Users\winRoot\Desktop\!_KAKASHKA_!)
Я для чего написал в комментах Параметры: <PATH> ? Зачем путь(в кавычках) прописывать в самом скрипте, если нужно его прописывать в кнопке? Специально для удобства делается на случай появления не одной такой кнопки с разными путями. Вариант Batya с обычной кнопкой здесь куда уместнее:

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

TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TOTALCMD.EXE /S /O /T /L="%$DESKTOP%\!_KAKASHKA_!"

%COMMANDER_PATH%\TOTALCMD.EXE,6
Открыть Рабочий стол/NamePath в новой вкладке


-1
DoctorIkari писал(а):Если закрыть созданную копию, то мы переходим на следующую вкладку справа, а не на исходную с которой делали копию. ..
НО. .. курсор на новой вкладке оказывается на выбранном файле, а не вначале (хотя, кто знает.. может это и к лучшему)
Жаловаться на функционал ТС советую в отдельно отведённой для этого теме либо на оффоруме. Тут итак уже, ИМХО, оффтопа хватает. Создай кнопку и повесь её на сочетание клавиш >>

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

'Закрыть вкладку с переходом на предыдущую
'курсор в начало списка
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
TCS.SendCommand "cm_CloseCurrentTab"
TCS.SendCommand "cm_SwitchToPreviousTab"
TCS.SendKeystroke "{HOME}"
Set TCS = Nothing
WScript.Quit
Последний раз редактировалось Flasher Пт авг 13, 2010 13:58, всего редактировалось 1 раз.
Аватара пользователя
Tol!k
Сообщения: 1727
Зарегистрирован: Вт апр 01, 2008 20:02
Откуда: Арзамас

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

DoctorIkari писал(а):выбивает ошибку (...строка 5, символ 1...)
Пиши или

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

TCS.SendKeystroke "CD d:\Users\winRoot\Desktop\!_KAKASHKA_!"
или

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

TCS.SendKeystroke "CD " & Replace(WScript.Arguments(0), """", "")
и d:\Users\winRoot\Desktop\!_KAKASHKA_! в параметрах кнопки.
Но не всё разом.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Flasher писал(а):Видимо, мне так запала в голову та конструкция, что не удержался.
Здесь, кстати переменная FSO вообще не нужна. А от переменной WSH можно отказаться так:

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

'Открыть указанную папку в новой вкладке 
'Параметры: "<PATH>" 
Path = WScript.Arguments(0) 
With CreateObject("WScript.Shell") 
  TCPath  = .ExpandEnvironmentStrings("%Commander_Path%") & "\totalcmd.exe" 
  .Run """" & TCPath & """ /S /O /T /L=""" & Path & """"' 
End With
WScript.Quit
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya
Без объявления переменных и присваивания объектов вообще класс! Изображение
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Tol!k писал(а):А чего ж не работает стандартная тоталовская команда?
А это не совсем и стандартная команда, а одна из команд с параметром.

В отличие от обычных команд, которые можно выполнять, посылая окну тотала специальное сообщение с номером команды, эти команды не имеют нормальных номеров (см. цитату далее), а отрицательные номера им присвоены только для нужд локализации.
[________Commands with parameters_________]=0
;These negative numbers are just used for translation and cannot be used instead of the commands
CD <directory>=-2;Switch to the given directory
OPENTABS <filename>=-3;Open tabs from saved .tab file
APPENDTABS <filename>=-4;Append tabs to existing tabs
FTPOPEN <conf. ftp server>=-5;Open stored ftp connection
SYNCOPEN <sync operation>=-6;Open stored sync operation
LOADSEARCH <stored search>=-7;Open stored search operation
OPENBAR <filename>=-8;Load button bar from file
MULTIRENAME <operation name>=-9;Open stored multi-rename operation
OPENCUSTOMVIEW <view name>=-10;Switch to custom columns view
Всего одна возможность передать команду с параметром была предоставлена Гислером и эта команда позволяет напрямую установить пути в открытых панелях. Именно эта команда и реализована в вызове методов SetSrcPath и SetTrgPath хелпера. Методы как методы, очень даже неплохо работают и даже позволяют не только сменить директорию, но еще можно и установить в ней указатель на нужный файл, а еще и при желании сделать все это в новой вкладке.
Не пойму я, чего вы боитесь ими пользоваться-то? На кой вообще нужен этот весьма глючный вариант TCS.SendKeystroke "CD d:\Users\winRoot\Desktop\!_KAKASHKA_!"

Flasher, а вот если все одной строкой, так может оно еще круче, а? :wink:

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

With CreateObject("WScript.Shell") .Run """" & .ExpandEnvironmentStrings("%Commander_Path%") & "\totalcmd.exe"" /S /O /T /L=""" & WScript.Arguments(0) & """" End With
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Volniy писал(а):Flasher, а вот если все одной строкой, так может оно еще круче, а? :wink:
Ну да, переменные Path и ТСPath убрать неплохо было'б. Кол-во строк - дело десятое. А выход WScript.Quit тут не обязателен? :)
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Flasher писал(а):А выход WScript.Quit тут не обязателен? :)
Если это последняя команда скрипта - вообще не нужен.
If the Quit method is the final instruction in your script (and you have no need to return a non-zero value), you can leave it out, and your script will end normally.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Volniy
Ну, если посмотреть на большинство скриптов на форуме, то эта строка как раз последней и идёт. Её только в циклах имеет смысл использовать?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Volniy писал(а):а вот если все одной строкой, так может оно еще круче, а?
Был соблазн ещё такой вариант записать, но удержался :D
IMHO, использовать переменные не только нормально, но и желательно. Так код более читабельный.
А в последнем моём варианте я убрал WSH, т.к. не люблю лишний раз без необходимости объекты объявлять.
Flasher писал(а):Ну, если посмотреть на большинство скриптов на форуме, то эта строка как раз последней и идёт. Её только в циклах имеет смысл использовать?
Некоторые конструкции и приёмы программирования хоть и необязательны, но опять же делают код более читабельным и структурированным - например, комментарии, оформление и т.д. "WScript.Quit" в конце скрипта не нужен, но как-то с ним "красивше" :) Смысл имеет использовать не в циклах , а в конструкциях ветвления таких, как If ... Else ... End If.
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Volniy
Сообщения: 585
Зарегистрирован: Ср дек 15, 2004 00:17
Откуда: Местный

Сообщение Volniy »

Flasher писал(а):Её только в циклах имеет смысл использовать?
1) В любом месте скрипта, в котором по логике его работы требуется немедленная остановка работы скрипта;
2) Тогда, когда нужно при выходе из скрипта передавать в процесс, вызвавший скрипт, код возврата, отличный от 0-вого (например, код ошибки).

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

WScript.Quit (1);
P.S. Ребята, а мы тему, случаем, не перепутали? :wink:
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya писал(а):Смысл имеет использовать не в циклах , а в конструкциях ветвления таких, как If ... Else ... End If
Ну они и в циклах присутствовать могут, я об этом подумал.

Volniy
1) Это было понятно.
2) Понял. Коды потом посмотрю. Спасибо.
Volniy писал(а):P.S. Ребята, а мы тему, случаем, не перепутали?
Так уж случилось, что усовершенствования одного скрипта привели к тематическому ликбезу. Вроде бы разобрались, возникнут вопросы - напишу сюда. :wink:
Аватара пользователя
DoctorIkari
Сообщения: 53
Зарегистрирован: Вс фев 28, 2010 10:44
Откуда: Nihon
Контактная информация:

Сообщение DoctorIkari »

Всем спасибо! Ответ более чем полный :)
The right man in the wrong place can make all the difference in the world... (hl2)
Ответить