Script Request

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

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

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

Сообщение Flasher »

Batya
Спасибо за подключение! Пока криво работает, прыгает на последний диск, там и остаётся.

Я, кстати, из функции CheсkDrive убрал бы " And D.IsReady", а то на прошлых этапах он тормозил процесс конкретно.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Flasher писал(а):Пока криво работает, прыгает на последний диск, там и остаётся.
А есть ещё диски, удовлетворяющие условиям?
И ты не забыл очистить в кнопке поле "Путь запуска"?
У меня нет нескольких задействованных съемных дисков. Проверял, удалив из условий " And (D.DriveType = 1)". Работало нормально.
Flasher писал(а):Я, кстати, из функции CheсkDrive убрал бы " And D.IsReady", а то на прошлых этапах он тормозил процесс конкретно.
Всё в твоих руках :wink:
Добавил, чтобы TC не пытался перейти на пустой оптический привод и на пустой диск картридера.
А сейчас, кстати, тормозит?
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Batya писал(а):И ты не забыл очистить в кнопке поле "Путь запуска"?
:oops: Угу, теперь заработало как надо. :)
Batya писал(а):Добавил, чтобы TC не пытался перейти на пустой оптический привод и на пустой диск картридера.
Я это понял, тогда оставляй для других, у меня картридеры внешние, с этим проблем нет. А с оптическими приводами, как и с сетевыми, так и с виртуальными вообще не должно быть проблем, мы же в условии задаём тип Removable(D.DriveType = 1). :wink:
Batya писал(а):А сейчас, кстати, тормозит?
Да особо уже не заметно. :)

Предлагаю универсализировать скрипт за счёт смены D.DriveType = 1 на D.DriveType = WScript.Arguments(0), в комментарии добавить описание параметров:
' 1 - тома сменных накопителей;
' 2 - тома жёстких дисков;
' 3 - сетевые диски;
' 4 - оптические приводы.
Новое название: Переход на диски в зависимости от заданного типа и переключение между ними.
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

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

Сообщение Flasher »

Batya
Спасибо, удобная вещь получилась. :)
Забыл дописать ' 5 - виртуальные диски.
У меня тут ещё вчера мысль промелькнула - осуществлять переход в обратном направлении. С этим сложнее?
Аватара пользователя
Batya
Сообщения: 2236
Зарегистрирован: Ср дек 15, 2004 09:51
Откуда: Москва, Россия

Сообщение Batya »

Flasher писал(а):Забыл дописать ' 5 - виртуальные диски.
Сделал.
Flasher писал(а):осуществлять переход в обратном направлении. С этим сложнее?

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

'========================================================
' Последовательное обратное переключение между дисками

' Параметры скрипта:
' [{Тип дисков}]
' Здесь {Тип дисков} может принимать значения:
' 1 - тома сменных накопителей;
' 2 - тома жёстких дисков;
' 3 - сетевые диски;
' 4 - оптические приводы;
' 5 - виртуальные диски.

' Авторcтво: Flasher, Batya
'========================================================
Option Explicit
'================ Изменяемые параметры ==================
Const DefaultDriveType = 1 'Тип дисков по умолчанию
'========================================================
Dim FSO, WSH, D, Drive, NewDrive, DriveType
Set FSO   = CreateObject("Scripting.FileSystemObject")
Set WSH   = CreateObject("WScript.Shell")
DriveType = DefaultDriveType
If WScript.Arguments.Count > 0 Then _
  DriveType = CInt(WScript.Arguments(0))
Drive    = UCase(FSO.GetDriveName(WSH.CurrentDirectory))
NewDrive = ""
For Each D In FSO.Drives
  If (UCase(D.Path) = Drive) Then
    If NewDrive <> "" Then _
      GoToDrive(NewDrive):Quit
  Else
    If CheckDrive Then _
      NewDrive = D.Path & ""
  End If
Next
'Если текущий диск первый, перейдём на последний диск
If NewDrive <> "" Then _
  GoToDrive(NewDrive):Quit

'Подходящих по условиям дисков нет. Выходим
Quit

Sub Quit
  Set D   = Nothing
  Set WSH = Nothing
  Set FSO = Nothing
  WScript.Quit 0
End Sub

Function CheckDrive
  CheckDrive = ((D <> "A:") And D.IsReady And (D.DriveType = DriveType) And (UCase(D.Path) <> Drive))
End Function

Sub GoToDrive(pDrive)
  Dim TCPath
  TCPath = WSH.ExpandEnvironmentStrings("%Commander_Path%")
  WSH.Run """" & TCPath & "\totalcmd.exe"" /S /O /L=" & pDrive, 1, True
End Sub
Нет, я не сплю. Я просто медленно моргаю.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Быстро. 8) Даже в серёдке слегка покороче получился. Отлично, молоток! :D

Добавлено: вот тут D.IsReady пришлось убрать, тормозит сильно, вместо 3-5 дс все 6-7 сс. :?
С виртуальными дисками я поспешил, видимо FSO.Drives может читать только RAM-диски, смонтированные штатными средствами. Пробовал разные цеплялки от плагина VirtualDisk до Alcohol 120.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

Может, плохо искал, но все-таки: нет ли скомпилированного скрипта, позволяющего выполнить несколько (надо до 10) cm_/em_ команд из строки вида

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

script.exe cm_xxx cm_yyy em_zzz ... 
?
Аватара пользователя
Rodny
Сообщения: 949
Зарегистрирован: Ср янв 24, 2007 00:59
Откуда: Могилёв, Беларусь

Сообщение Rodny »

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

Сообщение Flasher »

Rodny
Правильней не продублировать, а процитировать себя же (1, 2). :wink:
Ну и своё воткну на всякий.

Serge Yolkin
TCFS2 ещё не пробовал? Очень рекомендую. :wink:
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

Rodny
Flasher
Спасибо.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

TCMC был снесен Symantec'ом :( Вряд ли вирус, скорее у симантика паранойя. TCFS2 - как швейцарский ножичек на все случаи жизни. Мне показался избыточным. Пока разбираюсь с TCCP. em_ выполнить не удалось, пришлось через UserMenuNN дублировать команды.
Аватара пользователя
MVV
Сообщения: 4815
Зарегистрирован: Чт окт 15, 2009 10:58
Откуда: Ростов-Дон

Сообщение MVV »

Serge Yolkin писал(а):TCMC был снесен Symantec'ом :( Вряд ли вирус, скорее у симантика паранойя.
Проблема в EXE-пакере. Большинство антивирусов их не переваривают. Банально возьми чистый экзешник, проверь на вирустотале, потом его же запакуй опенсорсным UPX (который, кстати, поставляется с анпакером) и проверь на том же вирустотале - значительно возрастет подозрительность файла.
TCFS2 - как швейцарский ножичек на все случаи жизни. Мне показался избыточным.
Дык предназначение TCFS2 - не просто уметь посылать команды окну тотала. Цель была - создать инструментарий для перевода тотала в полноэкранный режим, причем максимально гибкого. Поэтому чтение/запись тоталовского INI, посыл cm-команд и управление окном были необходимы.
em_ выполнить не удалось
А em-команды посылаются принципиально иначе, чем cm-команды. Если cm-команда посылается стандартным сообщением с её номером, то имя em-команды посылается в сообщении WM_COPYDATA в текстовом виде.
Аватара пользователя
Avada
Сообщения: 10541
Зарегистрирован: Пт авг 01, 2008 16:17
Откуда: Россия, Саратов

Сообщение Avada »

Serge Yolkin писал(а):TCMC был снесен Symantec'ом Вряд ли вирус, скорее у симантика паранойя.
Известная проблема (разумеется, из-за упаковщика), неоднократно обсуждалась, в том числе на оффоруме. См. мой коммент, например, здесь. Выкладывались разные варианты, на которые орало разное количество антивирусов. Если надо, вечером могу поискать на домашнем компе наименее проблемный вариант.
Последний раз редактировалось Avada Пт июл 31, 2015 21:32, всего редактировалось 1 раз.
Даже самая богатая фантазия
Не представит себе наши безобразия.
Serge Yolkin
Сообщения: 664
Зарегистрирован: Сб июл 25, 2009 11:12

Сообщение Serge Yolkin »

MVVСпасибо за разъяснение.
Ответить