[wdx] WinScript Advanced Content Plugin (x86\x64) (new)

Обсуждение только плагинов и утилит для Total Commander.

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

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

Сообщение Flasher »

Dimsok писал(а):В ЛС.
ОК. C dsl уже нашёл. Завтра посмотрю тогда, получится через поток или нет.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

К сожалению, этот плагин не даёт возможность вернуть пути к интерпретатору и скрипту

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

Content = WScript.FullName
Content1 = WScript.ScriptFullName
, а без них по-простому консоль не скроешь...
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Gentoo69
Так что, долго ждать починок?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Gentoo69
Сообщения: 68
Зарегистрирован: Вс июл 11, 2010 19:58

Сообщение Gentoo69 »

Обновление
v1.6 10 June, 2016
***
Добавлена поддержка PowerShell
____________________________________________

PowerShell.exe необходимо некоторое время для старта перед первым использованием ~3 - 6 секунд. Так что первые 3-6 сек, колонки будут пустыми.
PowerShell.exe запускается только раз, и остается запущенным пока не закроется WinScriptAdv плагин.

Можно ускорить запуск PS (вообще, не только в плагине), запустив один раз скрипт в консоли PowerShell (см. ниже) .

До : powershell.exe запускается около 5 сек.
После: powershell.exe запускается около 1,5 сек.

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

$env:path = [Runtime.InteropServices.RuntimeEnvironment]::GetRuntimeDirectory()
[AppDomain]::CurrentDomain.GetAssemblies() | % {
  if (! $_.location) {continue}
  $Name = Split-Path $_.location -leaf
  Write-Host -ForegroundColor Yellow "NGENing : $Name"
  ngen install $_.location | % {"`t$_"}
}
Source
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Gentoo69
А на мой вопрос ответить?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Gentoo69
Сообщения: 68
Зарегистрирован: Вс июл 11, 2010 19:58

Сообщение Gentoo69 »

Flasher
На днях будет готово.

Только я не понял вот это:
К сожалению, этот плагин не даёт возможность вернуть пути к интерпретатору[...]
, а без них по-простому консоль не скроешь...
Плагин ведь запускает парсер(интерпретатор) всегда со скрытым окном, т.е. консоль не видно будет...
Или о чем тут речь?
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Gentoo69
Может, и ошибаюсь, но не будет видно только консоли с заданным в конфиге CScript, а не той, что вызывается по WSH.Exec.
Что касается поста, то там больше касалось текущей возможности для реализации возврата запрошенных полей.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Gentoo69
Сообщения: 68
Зарегистрирован: Вс июл 11, 2010 19:58

Сообщение Gentoo69 »

Обновление

Не могу обновить шапку. Пишет "Sorry, but only moderators can edit old posts."

Скачать


v.1.7 27 June, 2016
***
Унификация скриптов.
Только для скриптов которые работают через exe интерпретаторы - AHK, PHP, Autoit:
Сейчас вам не нужно добавлять в конце подобных скриптов код для вывода на StdOut консоль значений переменных "content". Плагин сгенерирует и добавит эти строки. Поэтому удалите эти строки с конца кода скрипта, если они есть. (плагин также будет работать корректно если эти строки остались). См. примеры в папке Scripts.

***
Added 2 new params for ExeScriptParsers section:
StdOutFormat and CmdArgs
E.g.: au3=c:\Program Files (x86)\AutoIt3\AutoIt3.exe
au3CmdArgs=ExeArgs
au3StdOutFormat=ConsoleWrite ($%s & @CRLF)
Read info in options.ini


Now you can use VBS in portable versions of Total Commander:

options.ini:

Code:

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

; This VBS interpreter is only for example, WinScriptadv uses vbs\js\python engines via COM that is much faster than this. 
; You can use it in portable versions of Total commander or if WSH is broken in Windows. 
;vbs=%WINDIR%\system32\cscript.exe 
;vbsCmdArgs=//nologo 
;vbsVarFormat=filename="%s" 
;vbsDoubleSlashPath=0 
;vbsStdOutFormat=Wscript.echo %s 
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Gentoo69
На днях не получилось. Ну, хоть так. :)
В общем... С VBS все грабли, о которых шла речь, на виду.

1. Схема с указанием Cscript хоть и работает, но очень медленно в сравнении с простым вызовом с кнопки, даже если весь скрипт - это "Content = 1".
2. В ряде ситуаций вместо результата стала появляться отладка "Время ожидания операции истекло".
3. Wscript.echo надо менять на предлагаемую Wscript.StdOut.WriteLine, иначе имеем зябры вместо кириллицы. Юникод же и в этом случае не читается. Надо бы допилить.
4. Как и писал, после правки скрипта ничего в активной панели не обновляется ни при отключении/включении колонок, ни при обновлении панели, ни при переходе в другой каталог с возвратом.
5. Из-за неудовлетворения просьбы с подключением задаваемого парсера в отдельных скриптовых секциях имеем проблему скорости отображения полей данных от старых скриптов, с которыми ранее данные появлялись в разы шустрее и без глюков с Юникодом и кириллицей.

Из плюсов:
1. В отношении же скрытия WSH.Exec "console" всё как надо.
2. Ключ для WSH временно переключается. Не знаю, всем ли это понравится, но меня устраивает. Поэтому, видимо, из описания можно исключить "or if WSH is broken in Windows". Хотя есть ещё политики. :roll:
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Gentoo69
Сообщения: 68
Зарегистрирован: Вс июл 11, 2010 19:58

Сообщение Gentoo69 »

Flasher

1. Я не понял что такое
в сравнении с простым вызовом с кнопки,
. Можете подробнее объяснить?

А так быстрее не сделаешь, через exe парсер всегда медленно. Максимально быстро работает через COM (т.е если закомментировать\убрать эти строки с vbs в options.ini ExeScriptParsers).

2. Время ожидания операции истекло - когда парсер не закрывается в течении определенного времени, - 2 с половиной секунды.

3. Насчет юникода - я не знаю можно ли писать в консоль юникод. Всмысле писать то можно, но оттуда выходит не юникод. :)

4. В чем проблема закрыть\открыть TC. Это ж секунда, тем более все настройки ТС сохраняет. А делать отдельный функционал для этого думаю не стоит - т.к. обычно скрипты пишутся и отлаживаются отдельно от плагина, а тратить ресурсы на мониторинг скрипт файлов (придется сравнивать дату по таймеру) имхо не надо.
Хотя если сильно понадобится можно и сделать. :)

5. Ну а как тут по другому? Есть парсер который обрабатывает VBS скрипты через Com - он работает быстро, вы указываете--переопределяете другой парсер для VBS скриптов, указав его exe, соответственно все VBS скрипты будут выполняться через указанный другой парсер. Нет смысла разделять часть vbs скриптов через COM, а часть vbs через спец. парсер.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Gentoo69
1. Вызов скрипта командой <путь к CScript.exe> "<путь к скрипту>" с какой-нибудь мессагой.
2. Так почему ему требуется так много времени?
3. Пример на vbs:

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

CreateObject("Scripting.FileSystemObject")._
GetStandardStream(1, True).Write "Символы Unicode: àéÿüĄŀĦĤŕž"
WScript.Echo WScript.StdIn.ReadLine
Вызовем из Run: cmd /k cscript.exe //nologo C:\Тест\UnicodeStdOut.vbs
и увидим в консоли правильные символы.
4. Как можно отладить отдельно, если нужно узнать именно поведение плагина, отличающееся от поведения стандартного вызова (правильность отображения, скорость вывода)? И это никак не секунда, а где-то от 5-6 до 15 с учётом всех операций автозавершения и автозапуска, как у меня. Поэтому стоило бы сделать хотя бы опционально.
5. Как это не смысла, если я о нём написал выше? Разделение даст возможность работать быстро там, где не требуется дополнительных данных, и наоборот.
Т.е. по сути ничего в ini не меняется за исключением доп. ключа активации стороннего интерпретатора в секциях скриптов, в то время как без указания ключа останется системный.
6. А ещё у меня выползало окно "Crash External exception EEDFADE".
7. И почему не работает Option Explicit?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Flasher писал(а):Завтра посмотрю тогда, получится через поток или нет.
Да, совсем забыл. Т.к. внешник добавили, опубликую вариант от 30.05:
[cut="Dicts.vbs"]

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

'================== Путь к 7z.exe ==================
Const Z7 = """%COMMANDER_PATH%\Utils\7-Zip\7z.exe"""
'===================================================
Dim FSO, Ext, FileName, Strm, Stream, N, Reg,_
Enc, Content, Content1, Content2, Exec, Check
Set FSO = CreateObject("Scripting.FileSystemObject")
Dim WSH : Set WSH = CreateObject("WScript.Shell")
Ext = FSO.GetExtensionName(FileName)
If Ext = "dz" Then
  Ext = FSO.GetExtensionName(FSO.GetBaseName(FileName))
  Set Strm = WSH.Exec("cmd /c chcp 1251&" &_
  Z7 & " x """ & FileName & """ -so|more /c")
  Set Stream = Strm.StdOut : Stream.SkipLine
Else : N = 0 : If Ext = "dsl" Then N = -1
  Set Stream = FSO.OpenTextFile(FileName,,,N)
End If : Set Reg = New Regexp : Reg.IgnoreCase = True
If Ext = "dsl" Then
  Call DSL("NAME", Content)_
  ("INDEX_LANGUAGE", Content1)("CONTENTS_LANGUAGE", Content2)
ElseIf Ext = "xdxf" Then
  Reg.Pattern = ".*encoding=""(.*)"".*" : Check = 1
  Enc = Reg.Execute(Stream.ReadLine)(0).Submatches(0)
  Reg.Pattern = "^<xdxf lang_from=""(\w+)"" lang_to=""(\w+)"" "
  Stream.SkipLine  : Set Exec = Reg.Execute(Stream.ReadLine)(0)
  Content1 = Exec.Submatches(0) : Content2 = Exec.Submatches(1)
  Reg.Pattern = "^<full_name>(.+)</full_name>"
  With CreateObject("ADODB.Stream")
    .Open : .Charset = "windows-1251" : .WriteText Stream.ReadLine
    .Position = 0 : .Charset = Enc
    Content = Reg.Execute(.ReadText)(0).Submatches(0) : .Close
  End With
End If: Stream.Close : Set Stream = Nothing : Set FSO = Nothing
If IsObject(Strm) Then Strm.StdIn.Write "q" :_
If Check Then WSH.Exec "taskkill /T /F /PID " & Strm.ProcessID

Function DSL(Ins, Cont)
  Reg.Pattern = "^#" & Ins & "\s+""(.*)""$"
  Cont = Reg.Execute(Stream.ReadLine)(0).Submatches(0)
  Set DSL = GetRef("DSL")
End Function
[/cut]Предложенные ключи в options.ini для vbs раскомментировать, Wscript.echo заменить на Wscript.StdOut.WriteLine, в ActiveScripts добавить |Dicts с конца. И снизу секцию

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

[Dicts]
Script=Dicts.vbs
content=Название
content1=Язык 1
content2=Язык 2
extensions=dsl|dz|xdxf
Перезапустить ТС.
Последний раз редактировалось Flasher Чт июн 30, 2016 03:54, всего редактировалось 2 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

Flasher
Спасибо. А консольное окно чтоб где-нибудь за кулисами отображалось можно сделать?
Последний раз редактировалось Dimsok Ср июн 29, 2016 21:22, всего редактировалось 1 раз.
Аватара пользователя
Flasher
Сообщения: 14229
Зарегистрирован: Пт ноя 06, 2009 00:33
Откуда: Москва

Сообщение Flasher »

Dimsok >
Flasher писал(а):Предложенные ключи в options.ini для vbs раскомментировать
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Dimsok
Сообщения: 664
Зарегистрирован: Вс авг 17, 2014 00:45

Сообщение Dimsok »

vbsStdOutFormat=Wscript.StdOut.WriteLine %s раскомментировал. А что ещё нужно?
Ответить