ОК. C dsl уже нашёл. Завтра посмотрю тогда, получится через поток или нет.Dimsok писал(а):В ЛС.
[wdx] WinScript Advanced Content Plugin (x86\x64) (new)
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
К сожалению, этот плагин не даёт возможность вернуть пути к интерпретатору и скрипту
, а без них по-простому консоль не скроешь...
Код: Выделить всё
Content = WScript.FullName
Content1 = WScript.ScriptFullNameАвтору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Обновление
v1.6 10 June, 2016
***
Добавлена поддержка PowerShell
____________________________________________
PowerShell.exe необходимо некоторое время для старта перед первым использованием ~3 - 6 секунд. Так что первые 3-6 сек, колонки будут пустыми.
PowerShell.exe запускается только раз, и остается запущенным пока не закроется WinScriptAdv плагин.
Можно ускорить запуск PS (вообще, не только в плагине), запустив один раз скрипт в консоли PowerShell (см. ниже) .
До : powershell.exe запускается около 5 сек.
После: powershell.exe запускается около 1,5 сек.
Source
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$_"}
}Flasher
На днях будет готово.
Только я не понял вот это:
Или о чем тут речь?
На днях будет готово.
Только я не понял вот это:
Плагин ведь запускает парсер(интерпретатор) всегда со скрытым окном, т.е. консоль не видно будет...К сожалению, этот плагин не даёт возможность вернуть пути к интерпретатору[...]
, а без них по-простому консоль не скроешь...
Или о чем тут речь?
Gentoo69
Может, и ошибаюсь, но не будет видно только консоли с заданным в конфиге CScript, а не той, что вызывается по WSH.Exec.
Что касается поста, то там больше касалось текущей возможности для реализации возврата запрошенных полей.
Может, и ошибаюсь, но не будет видно только консоли с заданным в конфиге CScript, а не той, что вызывается по WSH.Exec.
Что касается поста, то там больше касалось текущей возможности для реализации возврата запрошенных полей.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Обновление
Не могу обновить шапку. Пишет "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:
Не могу обновить шапку. Пишет "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
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". Хотя есть ещё политики.
На днях не получилось. Ну, хоть так.
В общем... С 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". Хотя есть ещё политики.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
1. Я не понял что такое
А так быстрее не сделаешь, через exe парсер всегда медленно. Максимально быстро работает через COM (т.е если закомментировать\убрать эти строки с vbs в options.ini ExeScriptParsers).
2. Время ожидания операции истекло - когда парсер не закрывается в течении определенного времени, - 2 с половиной секунды.
3. Насчет юникода - я не знаю можно ли писать в консоль юникод. Всмысле писать то можно, но оттуда выходит не юникод.
4. В чем проблема закрыть\открыть TC. Это ж секунда, тем более все настройки ТС сохраняет. А делать отдельный функционал для этого думаю не стоит - т.к. обычно скрипты пишутся и отлаживаются отдельно от плагина, а тратить ресурсы на мониторинг скрипт файлов (придется сравнивать дату по таймеру) имхо не надо.
Хотя если сильно понадобится можно и сделать.
5. Ну а как тут по другому? Есть парсер который обрабатывает VBS скрипты через Com - он работает быстро, вы указываете--переопределяете другой парсер для VBS скриптов, указав его exe, соответственно все VBS скрипты будут выполняться через указанный другой парсер. Нет смысла разделять часть vbs скриптов через COM, а часть vbs через спец. парсер.
1. Я не понял что такое
. Можете подробнее объяснить?в сравнении с простым вызовом с кнопки,
А так быстрее не сделаешь, через exe парсер всегда медленно. Максимально быстро работает через COM (т.е если закомментировать\убрать эти строки с vbs в options.ini ExeScriptParsers).
2. Время ожидания операции истекло - когда парсер не закрывается в течении определенного времени, - 2 с половиной секунды.
3. Насчет юникода - я не знаю можно ли писать в консоль юникод. Всмысле писать то можно, но оттуда выходит не юникод.
4. В чем проблема закрыть\открыть TC. Это ж секунда, тем более все настройки ТС сохраняет. А делать отдельный функционал для этого думаю не стоит - т.к. обычно скрипты пишутся и отлаживаются отдельно от плагина, а тратить ресурсы на мониторинг скрипт файлов (придется сравнивать дату по таймеру) имхо не надо.
Хотя если сильно понадобится можно и сделать.
5. Ну а как тут по другому? Есть парсер который обрабатывает VBS скрипты через Com - он работает быстро, вы указываете--переопределяете другой парсер для VBS скриптов, указав его exe, соответственно все VBS скрипты будут выполняться через указанный другой парсер. Нет смысла разделять часть vbs скриптов через COM, а часть vbs через спец. парсер.
Gentoo69
1. Вызов скрипта командой <путь к CScript.exe> "<путь к скрипту>" с какой-нибудь мессагой.
2. Так почему ему требуется так много времени?
3. Пример на vbs:Вызовем из Run: cmd /k cscript.exe //nologo C:\Тест\UnicodeStdOut.vbs
и увидим в консоли правильные символы.
4. Как можно отладить отдельно, если нужно узнать именно поведение плагина, отличающееся от поведения стандартного вызова (правильность отображения, скорость вывода)? И это никак не секунда, а где-то от 5-6 до 15 с учётом всех операций автозавершения и автозапуска, как у меня. Поэтому стоило бы сделать хотя бы опционально.
5. Как это не смысла, если я о нём написал выше? Разделение даст возможность работать быстро там, где не требуется дополнительных данных, и наоборот.
Т.е. по сути ничего в ini не меняется за исключением доп. ключа активации стороннего интерпретатора в секциях скриптов, в то время как без указания ключа останется системный.
6. А ещё у меня выползало окно "Crash External exception EEDFADE".
7. И почему не работает Option Explicit?
1. Вызов скрипта командой <путь к CScript.exe> "<путь к скрипту>" с какой-нибудь мессагой.
2. Так почему ему требуется так много времени?
3. Пример на vbs:
Код: Выделить всё
CreateObject("Scripting.FileSystemObject")._
GetStandardStream(1, True).Write "Символы Unicode: àéÿüĄŀĦĤŕž"
WScript.Echo WScript.StdIn.ReadLineи увидим в консоли правильные символы.
4. Как можно отладить отдельно, если нужно узнать именно поведение плагина, отличающееся от поведения стандартного вызова (правильность отображения, скорость вывода)? И это никак не секунда, а где-то от 5-6 до 15 с учётом всех операций автозавершения и автозапуска, как у меня. Поэтому стоило бы сделать хотя бы опционально.
5. Как это не смысла, если я о нём написал выше? Разделение даст возможность работать быстро там, где не требуется дополнительных данных, и наоборот.
Т.е. по сути ничего в ini не меняется за исключением доп. ключа активации стороннего интерпретатора в секциях скриптов, в то время как без указания ключа останется системный.
6. А ещё у меня выползало окно "Crash External exception EEDFADE".
7. И почему не работает Option Explicit?
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Да, совсем забыл. Т.к. внешник добавили, опубликую вариант от 30.05:Flasher писал(а):Завтра посмотрю тогда, получится через поток или нет.
[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Код: Выделить всё
[Dicts]
Script=Dicts.vbs
content=Название
content1=Язык 1
content2=Язык 2
extensions=dsl|dz|xdxf
Последний раз редактировалось Flasher Чт июн 30, 2016 03:54, всего редактировалось 2 раза.
Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой.
Flasher
Спасибо. А консольное окно чтоб где-нибудь за кулисами отображалось можно сделать?
Спасибо. А консольное окно чтоб где-нибудь за кулисами отображалось можно сделать?
Последний раз редактировалось Dimsok Ср июн 29, 2016 21:22, всего редактировалось 1 раз.