Страница 17 из 27

Добавлено: Сб фев 12, 2011 19:35
Batya
Rodny
Нужно установить путь на пассивной панели TC именно из vbs-скрипта?

Добавлено: Сб фев 12, 2011 19:49
Flasher
Rodny писал(а):является только запуск через командную строку типа ... или есть ещё варианты?
Знаю только аналог:

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

' Перейти(распаковать) к файлу/папке в противоположной панели
' Параметры: %P%N
With CreateObject("WScript.Shell")
.Exec("%COMMANDER_PATH%\totalcmd.exe /O /S /R=""" & WScript.Arguments(0) & """")
End With

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

Flasher
Спасибо, взял на заметку.

Добавлено: Сб фев 12, 2011 20:42
Flasher
Rodny
Значит, флешка медленная. Бери c eSATA-интерфейсом. :)

Добавлено: Вс фев 13, 2011 13:37
Batya
Flasher
А с помощью TCFS2.exe можно поменять текущую папку?

Добавлено: Вс фев 13, 2011 14:06
Flasher
Batya
Можно ли как-то задействовать функцию msg - не знаю, но тут всё равно придётся API-шки ковырять. Об этом лучше у MVV спросить. А отдельной командой для сих нужд утилита, естественно, не располагает. Предназначение иное, к тому же она не понимает параметры ТС.

Добавлено: Вс фев 13, 2011 22:08
MVV
Нельзя через TCFS2 изменить текущую папку. Утилита не умеет посылать сообщение WM_COPYDATA, с помощью которого можно менять папки и выполнять em-команды.

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


Flasher, точно бы пропустил. :)

Добавлено: Пн фев 14, 2011 09:25
Batya
Rodny
Соответственно, требуемый вариант:

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

With CreateObject("WScript.Shell") 
  .Run """" & .ExpandEnvironmentStrings("%COMMANDER_PATH%\Utils\TCMC\TCMC.exe") & """ CDS """ & NewSrcPath & """ """"", 1, True
End With

Добавлено: Пн фев 14, 2011 15:53
Rodny
Batya
Спасибо, я ночью уже соорудил почти такое же, только кавычек поменьше :)

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

P.S. Это, в общем-то, уже just for fun, основная задача решена.

Добавлено: Пн фев 14, 2011 16:26
Flasher
Rodny
Взял достаточно медленную флешку, распаковал туда INSTALL.CAB, сделал кнопку с предложенным мной скриптом выше - скорость выполнения 1-3 дс, чуть помедленнее Ctrl+Влево/Вправо, разница почти не заметна.

Добавлено: Пн фев 14, 2011 16:42
MVV
По идее, после неоднократного запуска TOTALCMD /o /s винда просто будет держать файл в кэше и запускать в разы быстрее, чем в первый раз. Для тестов нужно извлекать флешку, чтобы сбросить кэш (или сбрасывать его, если есть чем).

Добавлено: Пн фев 14, 2011 16:52
Flasher
MVV
Извини, какой файл? И почему только файл? Тесты проводились над кучей разных папок, файлов с длинными путями. Или ты имеешь в виду скрипт-файл? А флешку взял настолько тормозную, что ТС включается за 3 секунды, а выключается за пять. :)

Добавлено: Пн фев 14, 2011 17:26
MVV
Файл TOTALCMD.exe, разумеется. :D
И заодно все файлы, к которым он при запуске обращается.

Добавлено: Пн фев 14, 2011 17:35
Flasher
Ясно, первая попытка чуть помедленней - 3-4 дс.

Добавлено: Пн фев 14, 2011 20:38
MVV
Если тотал запускается с флешки, то, думаю, первая попытка для системы - это в момент его запуска, т.е. до первой попытки вызова скрипта. :)