View previous topic :: View next topic |
Author |
Message |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Aug 13, 2010 13:44 Post subject: |
|
|
Volniy wrote: | Только это работать все равно не будет | Да я даже проверять не стал, повёлся на редакцию Tol'k. А жаль, было бы удобно.  Volniy wrote: | Но ведь есть же иной способ, и он-то как раз нормально описан в ридми: | Это всё есть, но хотелось бы, чтобы TCS.SendCommand по функционалу не отличалась от поля "Команда", где можно прописывать помимо внутренних команд ещё и пути с параметрами.
Batya wrote: | Всё бы хорошо, только виртуальную папку "Рабочий стол" так не откроешь | А это в новые условия задачи и не входило.
Batya wrote: | А для обычной папки не нужны скрипты, достаточно кнопки: | Это точно. Ночью котелок слабо варит. Видимо, мне так запала в голову та конструкция, что не удержался.
DoctorIkari wrote: | Что-то напортачил, в общем получилась такая белиберда: Code: | Path = WScript.Arguments(d:\Users\winRoot\Desktop\!_KAKASHKA_!) |
| Я для чего написал в комментах Параметры: <PATH> ? Зачем путь(в кавычках) прописывать в самом скрипте, если нужно его прописывать в кнопке? Специально для удобства делается на случай появления не одной такой кнопки с разными путями. Вариант Batya с обычной кнопкой здесь куда уместнее:
Code: | TOTALCMD#BAR#DATA
%COMMANDER_PATH%\TOTALCMD.EXE /S /O /T /L="%$DESKTOP%\!_KAKASHKA_!"
%COMMANDER_PATH%\TOTALCMD.EXE,6
Открыть Рабочий стол/NamePath в новой вкладке
-1 |
DoctorIkari wrote: | Если закрыть созданную копию, то мы переходим на следующую вкладку справа, а не на исходную с которой делали копию. ..
НО. .. курсор на новой вкладке оказывается на выбранном файле, а не вначале (хотя, кто знает.. может это и к лучшему) | Жаловаться на функционал ТС советую в отдельно отведённой для этого теме либо на оффоруме. Тут итак уже, ИМХО, оффтопа хватает. Создай кнопку и повесь её на сочетание клавиш >> Code: | 'Закрыть вкладку с переходом на предыдущую
'курсор в начало списка
Dim TCS
Set TCS = CreateObject("TCScript.Helper")
TCS.SendCommand "cm_CloseCurrentTab"
TCS.SendCommand "cm_SwitchToPreviousTab"
TCS.SendKeystroke "{HOME}"
Set TCS = Nothing
WScript.Quit |
Last edited by Flasher on Fri Aug 13, 2010 13:58; edited 1 time in total |
|
Back to top |
|
 |
Tol!k

Joined: 01 Apr 2008 Posts: 1727 Location: Арзамас
|
(Separately) Posted: Fri Aug 13, 2010 13:50 Post subject: |
|
|
DoctorIkari wrote: | выбивает ошибку (...строка 5, символ 1...) | Пиши или
Code: | TCS.SendKeystroke "CD d:\Users\winRoot\Desktop\!_KAKASHKA_!" |
или
Code: | TCS.SendKeystroke "CD " & Replace(WScript.Arguments(0), """", "") | и d:\Users\winRoot\Desktop\!_KAKASHKA_! в параметрах кнопки.
Но не всё разом. |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2229 Location: Москва, Россия
|
(Separately) Posted: Fri Aug 13, 2010 15:19 Post subject: |
|
|
Flasher wrote: | Видимо, мне так запала в голову та конструкция, что не удержался. |
Здесь, кстати переменная FSO вообще не нужна. А от переменной WSH можно отказаться так:
Code: | 'Открыть указанную папку в новой вкладке
'Параметры: "<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 |
_________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Aug 13, 2010 15:39 Post subject: |
|
|
Batya
Без объявления переменных и присваивания объектов вообще класс!  |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Fri Aug 13, 2010 18:33 Post subject: |
|
|
Tol!k wrote: | А чего ж не работает стандартная тоталовская команда? |
А это не совсем и стандартная команда, а одна из команд с параметром.
В отличие от обычных команд, которые можно выполнять, посылая окну тотала специальное сообщение с номером команды, эти команды не имеют нормальных номеров (см. цитату далее), а отрицательные номера им присвоены только для нужд локализации.
Quote: | [________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, а вот если все одной строкой, так может оно еще круче, а?
Code: | With CreateObject("WScript.Shell") .Run """" & .ExpandEnvironmentStrings("%Commander_Path%") & "\totalcmd.exe"" /S /O /T /L=""" & WScript.Arguments(0) & """" End With |
|
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Aug 13, 2010 19:07 Post subject: |
|
|
Volniy wrote: | Flasher, а вот если все одной строкой, так может оно еще круче, а?  | Ну да, переменные Path и ТСPath убрать неплохо было'б. Кол-во строк - дело десятое. А выход WScript.Quit тут не обязателен?  |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Fri Aug 13, 2010 20:33 Post subject: |
|
|
Flasher wrote: | А выход WScript.Quit тут не обязателен?  |
Если это последняя команда скрипта - вообще не нужен.
Quote: | 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. |
|
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Fri Aug 13, 2010 20:56 Post subject: |
|
|
Volniy
Ну, если посмотреть на большинство скриптов на форуме, то эта строка как раз последней и идёт. Её только в циклах имеет смысл использовать? |
|
Back to top |
|
 |
Batya

Joined: 15 Dec 2004 Posts: 2229 Location: Москва, Россия
|
(Separately) Posted: Fri Aug 13, 2010 22:58 Post subject: |
|
|
Volniy wrote: | а вот если все одной строкой, так может оно еще круче, а? |
Был соблазн ещё такой вариант записать, но удержался
IMHO, использовать переменные не только нормально, но и желательно. Так код более читабельный.
А в последнем моём варианте я убрал WSH, т.к. не люблю лишний раз без необходимости объекты объявлять.
Flasher wrote: | Ну, если посмотреть на большинство скриптов на форуме, то эта строка как раз последней и идёт. Её только в циклах имеет смысл использовать? |
Некоторые конструкции и приёмы программирования хоть и необязательны, но опять же делают код более читабельным и структурированным - например, комментарии, оформление и т.д. "WScript.Quit" в конце скрипта не нужен, но как-то с ним "красивше" Смысл имеет использовать не в циклах , а в конструкциях ветвления таких, как If ... Else ... End If. _________________ Нет, я не сплю. Я просто медленно моргаю. |
|
Back to top |
|
 |
Volniy

Joined: 15 Dec 2004 Posts: 585 Location: Местный
|
(Separately) Posted: Fri Aug 13, 2010 23:40 Post subject: |
|
|
Flasher wrote: | Её только в циклах имеет смысл использовать? |
1) В любом месте скрипта, в котором по логике его работы требуется немедленная остановка работы скрипта;
2) Тогда, когда нужно при выходе из скрипта передавать в процесс, вызвавший скрипт, код возврата, отличный от 0-вого (например, код ошибки).
P.S. Ребята, а мы тему, случаем, не перепутали?  |
|
Back to top |
|
 |
Flasher

Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Sat Aug 14, 2010 00:36 Post subject: |
|
|
Batya wrote: | Смысл имеет использовать не в циклах , а в конструкциях ветвления таких, как If ... Else ... End If | Ну они и в циклах присутствовать могут, я об этом подумал.
Volniy
1) Это было понятно.
2) Понял. Коды потом посмотрю. Спасибо.
Volniy wrote: | P.S. Ребята, а мы тему, случаем, не перепутали? | Так уж случилось, что усовершенствования одного скрипта привели к тематическому ликбезу. Вроде бы разобрались, возникнут вопросы - напишу сюда.  |
|
Back to top |
|
 |
DoctorIkari

Joined: 28 Feb 2010 Posts: 53 Location: Nihon
|
(Separately) Posted: Sat Aug 14, 2010 02:01 Post subject: |
|
|
Всем спасибо! Ответ более чем полный  _________________ The right man in the wrong place can make all the difference in the world... (hl2) |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|