Страница 2 из 2

Добавлено: Пт авг 13, 2010 13:44
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

Добавлено: Пт авг 13, 2010 13:50
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_! в параметрах кнопки.
Но не всё разом.

Добавлено: Пт авг 13, 2010 15:19
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

Добавлено: Пт авг 13, 2010 15:39
Flasher
Batya
Без объявления переменных и присваивания объектов вообще класс! Изображение

Добавлено: Пт авг 13, 2010 18:33
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

Добавлено: Пт авг 13, 2010 19:07
Flasher
Volniy писал(а):Flasher, а вот если все одной строкой, так может оно еще круче, а? :wink:
Ну да, переменные Path и ТСPath убрать неплохо было'б. Кол-во строк - дело десятое. А выход WScript.Quit тут не обязателен? :)

Добавлено: Пт авг 13, 2010 20:33
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.

Добавлено: Пт авг 13, 2010 20:56
Flasher
Volniy
Ну, если посмотреть на большинство скриптов на форуме, то эта строка как раз последней и идёт. Её только в циклах имеет смысл использовать?

Добавлено: Пт авг 13, 2010 22:58
Batya
Volniy писал(а):а вот если все одной строкой, так может оно еще круче, а?
Был соблазн ещё такой вариант записать, но удержался :D
IMHO, использовать переменные не только нормально, но и желательно. Так код более читабельный.
А в последнем моём варианте я убрал WSH, т.к. не люблю лишний раз без необходимости объекты объявлять.
Flasher писал(а):Ну, если посмотреть на большинство скриптов на форуме, то эта строка как раз последней и идёт. Её только в циклах имеет смысл использовать?
Некоторые конструкции и приёмы программирования хоть и необязательны, но опять же делают код более читабельным и структурированным - например, комментарии, оформление и т.д. "WScript.Quit" в конце скрипта не нужен, но как-то с ним "красивше" :) Смысл имеет использовать не в циклах , а в конструкциях ветвления таких, как If ... Else ... End If.

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

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

WScript.Quit (1);
P.S. Ребята, а мы тему, случаем, не перепутали? :wink:

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

Volniy
1) Это было понятно.
2) Понял. Коды потом посмотрю. Спасибо.
Volniy писал(а):P.S. Ребята, а мы тему, случаем, не перепутали?
Так уж случилось, что усовершенствования одного скрипта привели к тематическому ликбезу. Вроде бы разобрались, возникнут вопросы - напишу сюда. :wink:

Добавлено: Сб авг 14, 2010 02:01
DoctorIkari
Всем спасибо! Ответ более чем полный :)