Windows Script Host

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

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

Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Rodny
Нужно установить путь на пассивной панели TC именно из vbs-скрипта?
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Rodny писал(а):является только запуск через командную строку типа ... или есть ещё варианты?
Знаю только аналог:

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

' Перейти(распаковать) к файлу/папке в противоположной панели
' Параметры: %P%N
With CreateObject("WScript.Shell")
.Exec("%COMMANDER_PATH%\totalcmd.exe /O /S /R=""" & WScript.Arguments(0) & """")
End With
Последний раз редактировалось Flasher Вс фев 13, 2011 01:41, всего редактировалось 1 раз.
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

Batya писал(а):Нужно установить путь на пассивной панели TC именно из vbs-скрипта?
Ага, только это активная.
Ищу запасной вариант действий на случай, если Helper на данной машине отсутствует. TC может запускаться с флэшки или даже сетевого диска, поэтому обращение к "totalcmd.exe /O /S" малость тормозит.

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

Сообщение Flasher »

Rodny
Значит, флешка медленная. Бери c eSATA-интерфейсом. :)
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Flasher
А с помощью TCFS2.exe можно поменять текущую папку?
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya
Можно ли как-то задействовать функцию msg - не знаю, но тут всё равно придётся API-шки ковырять. Об этом лучше у MVV спросить. А отдельной командой для сих нужд утилита, естественно, не располагает. Предназначение иное, к тому же она не понимает параметры ТС.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Нельзя через TCFS2 изменить текущую папку. Утилита не умеет посылать сообщение WM_COPYDATA, с помощью которого можно менять папки и выполнять em-команды.

Папку можно менять, например, через TCMC, а еще - через TOTALCMD /o /s /l=. :)


Flasher, точно бы пропустил. :)
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Rodny
Соответственно, требуемый вариант:

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

With CreateObject("WScript.Shell") 
  .Run """" & .ExpandEnvironmentStrings("%COMMANDER_PATH%\Utils\TCMC\TCMC.exe") & """ CDS """ & NewSrcPath & """ """"", 1, True
End With
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

Batya
Спасибо, я ночью уже соорудил почти такое же, только кавычек поменьше :)

И тут возник вопрос: а может это у меня субъективное восприятие включается и на самом деле там большой разницы и нету?
Как вообще замерить время выполнения этих вариантов, если оно меньше секунды?
Пока играюсь с флэшкой, а она не самая медленная. На глаз после "totalcmd.exe /O /S" каталог меняется медленнее по сравнению с другими вариантами, но вот насколько... Родной DateDiff везде выдаёт 0 секунд.
Гуглятся какие-то конструкции типа GetTickCount, QueryPerformanceCounter и даже Stopwatch Class из .NET Framework. Но это для меня уже слишком сложно.

P.S. Это, в общем-то, уже just for fun, основная задача решена.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Rodny
Взял достаточно медленную флешку, распаковал туда INSTALL.CAB, сделал кнопку с предложенным мной скриптом выше - скорость выполнения 1-3 дс, чуть помедленнее Ctrl+Влево/Вправо, разница почти не заметна.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

По идее, после неоднократного запуска TOTALCMD /o /s винда просто будет держать файл в кэше и запускать в разы быстрее, чем в первый раз. Для тестов нужно извлекать флешку, чтобы сбросить кэш (или сбрасывать его, если есть чем).
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

MVV
Извини, какой файл? И почему только файл? Тесты проводились над кучей разных папок, файлов с длинными путями. Или ты имеешь в виду скрипт-файл? А флешку взял настолько тормозную, что ТС включается за 3 секунды, а выключается за пять. :)
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Файл TOTALCMD.exe, разумеется. :D
И заодно все файлы, к которым он при запуске обращается.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Ясно, первая попытка чуть помедленней - 3-4 дс.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Если тотал запускается с флешки, то, думаю, первая попытка для системы - это в момент его запуска, т.е. до первой попытки вызова скрипта. :)
Ответить