Уже давно не пользовался Windows 7. Могу только добавить, что в 11-ой такой проблемы нет. Все работает ровно.Может кто-нибудь подтвердить/опровергнуть такое поведение?
[wdx] WinScript Advanced Content Plugin (x86\x64) (new)
Модераторы: Avada, CaptainFlint, Nik, d-view, Моторокер
- Monarch-LFV
- Сообщения: 360
- Зарегистрирован: Пн июл 22, 2019 13:20
AkulaBig
Не совсем понятно зачем писать свой скрипт, если есть быстрый плагин TCMediaInfo.
Из своего опыта скажу: писал разные VBS для WinScriptAdv, которые где-то дублируют возможности плагинов, но все они были медленнее заточенных плагинов, но оно и понятно, сколько этапов проходит от запроса до вывода информации:
TC -> WinscriptADV -> Запуск интерпретатора -> работа самого скрипта -> Запуск сторонней библиотеки (например, MediaInfo) -> WinscriptADV -> TC.
И так на каждый файл. Длинная цепочка получается, потому и медленно.
А чем не устраивает TCMediaInfo?
Не совсем понятно зачем писать свой скрипт, если есть быстрый плагин TCMediaInfo.
Из своего опыта скажу: писал разные VBS для WinScriptAdv, которые где-то дублируют возможности плагинов, но все они были медленнее заточенных плагинов, но оно и понятно, сколько этапов проходит от запроса до вывода информации:
TC -> WinscriptADV -> Запуск интерпретатора -> работа самого скрипта -> Запуск сторонней библиотеки (например, MediaInfo) -> WinscriptADV -> TC.
И так на каждый файл. Длинная цепочка получается, потому и медленно.
А чем не устраивает TCMediaInfo?
AkulaBig
Не, ну любопытство - это номально же
, я и сам спрашиваю иногда на предмет использования у себя или замены используемого, а звучать может не так однозначно...
Так понял, возникла проблема с запуском скрипта AutoIt из скрипта на VBScript? Возможно, в скрипт, написанный для плагина, не был добавлен необходимый для запуска из vbs-скрипта выхлоп - не хватает ConsoleWrite, типа как тут.
Не, ну любопытство - это номально же
Так понял, возникла проблема с запуском скрипта AutoIt из скрипта на VBScript? Возможно, в скрипт, написанный для плагина, не был добавлен необходимый для запуска из vbs-скрипта выхлоп - не хватает ConsoleWrite, типа как тут.
Если скрипт AutoIt запускать из vbs-скрипта, то первый должен читать имя файла из $CmdLine[1] и писать результат в ConsoleWrite, а второй выглядеть как-то так
Код: Выделить всё
content = execStdOut("""path-to-AutoIt3.exe"" ""path-to-script.au3"" """ & filename & """")
Function execStdOut(cmd)
Dim goWSH : Set goWSH = CreateObject("WScript.Shell")
Dim aRet: Set aRet = goWSH.exec(cmd)
execStdOut = aRet.StdOut.ReadAll()
End Function- Monarch-LFV
- Сообщения: 360
- Зарегистрирован: Пн июл 22, 2019 13:20
AkulaBig
Не думал, что мои слова вызовут такую реакцию. Прошу прощения если что не так. И согласен со Skif_off про любопытство. Объяснять всегда надо, особенно таким как я
Для себя тоже новое узнал, как вывод из stdout записать в переменную, до этого всегда писал во временный файл в %temp%, и оттуда считывал.
Skif_off
Спасибо за наводку!
Не думал, что мои слова вызовут такую реакцию. Прошу прощения если что не так. И согласен со Skif_off про любопытство. Объяснять всегда надо, особенно таким как я
Для себя тоже новое узнал, как вывод из stdout записать в переменную, до этого всегда писал во временный файл в %temp%, и оттуда считывал.
Skif_off
Спасибо за наводку!
Я сейчас занялся запуском MediaInfo CLI из vbs. Там тоже одна из проблем вывод результата в плагин. Но до этого мне еще далеко. Сейчас пока добился только вывода хотя-бы одного результата в самом скрипте. Теперь думаю как-бы обойтись без промежуточного файла для множества данных.Skif_off писал(а):писать результат в ConsoleWrite
AkulaBig
Вариантов тут немного, проще всего функцией Split разрезать.
Если из скрипта AutoIt, наверное, лучше не несколько раз вызывать ConsoleWrite и резать строки, а отдать одной строкой.
Наверное, уже заметили у MediaInfo CLI особенность, можно за один раз вытащить несколько значений, группируя их (General, Video и т.д.), типа
(execStdOut() парой сообщений выше)
Вариантов тут немного, проще всего функцией Split разрезать.
Если из скрипта AutoIt, наверное, лучше не несколько раз вызывать ConsoleWrite и резать строки, а отдать одной строкой.
Наверное, уже заметили у MediaInfo CLI особенность, можно за один раз вытащить несколько значений, группируя их (General, Video и т.д.), типа
Код: Выделить всё
Dim A, O
O = execStdOut("""path-to-mediainfo.exe"" --Inform=""Video;%Width%|%Height%|%BitRate%"" """ & filename & """")
A = Split(O, "|")
content = A(0)
content1 = A(1)
content2 = CLng(A(2)) / 1000Зависит от данных, которые вытаскиваете, и от того, как.AkulaBig писал(а):Теперь думаю как-бы обойтись без промежуточного файла для множества данных.
Последний раз редактировалось Skif_off Сб ноя 02, 2024 01:15, всего редактировалось 1 раз.
Такое практически невозможно. Тогда и TCMediaInfo неправильно будет работать. Это тоже самое, что мелко-мягкие написали-бы Винду с нуля. Убрав поддержку старого говнокода. Это очень заманчивая перспектива, но нереальная. Такое только юниксоиды практикуют.Skif_off писал(а):выхлоп может различаться в зависимости от формата и/или версии MedaInfo.
Я правильно понимаю, что вы выкладываете алгоритм, а не рабочее решение? Или у вас этот код работает? Я-то уже обрадовался, что так можно писать. Но у меня не работает. А вот дальше начинается интересная история. Если этот код только через Run()\Exec() можно выполнить, то будет проблематично завернуть его в execStdOut.Skif_off писал(а): O = execStdOut("""path-to-mediainfo.exe"" --Inform=""Video;%Width%|%Height%|%BitRate%"" """ & filename & """")
Думаю, TCMediaInfo запрашивает то, что прописано у него в конфиге, без -f или чего-то подобного.AkulaBig писал(а):Такое практически невозможно. Тогда и TCMediaInfo неправильно будет работать.
По количеству выводимой с -f инфы различия будут, сравните файлы разных форматов.
С Lua такое проворачивал, проверил сейчас с VBScript, дописавAkulaBig писал(а):Я правильно понимаю, что вы выкладываете алгоритм, а не рабочее решение? Или у вас этот код работает? Я-то уже обрадовался, что так можно писать. Но у меня не работает.
Код: Выделить всё
WScript.Echo OПо ходу, нужно либо уточнять параметры MediaInfo на предмет что там есть полезного, либо заворачивать в Run с --LogFile= (скрывая окно и читая файл), либо загуглить, какие есть решения VBScript + MediaInfo.
Все дело, как всегда, было в кавычках. То-есть без cmd /C запускается, но окно консоли мелькает.
Поправленный вариант не выкладываю, так как есть косяки. Почему-то колонка Продолжительность на некоторых файлах ругается Индекс выходи за пределы диапазона '[number: 1]'
Добавлено спустя 5 минут:
Добавлено спустя 29 минут:
С Продолжительностью все ясно. Не в ней дело. Почему-то А(0) ругается на любой параметр, если в файле данных нет, видимо. Возможно Сплит криво работает.
Поправленный вариант не выкладываю, так как есть косяки. Почему-то колонка Продолжительность на некоторых файлах ругается Индекс выходи за пределы диапазона '[number: 1]'
Добавлено спустя 5 минут:
У меня тоже.Skif_off писал(а): работает, но почему-то мелькает окно консоли
Такой вариант есть у меня. Посмотрю, что лучше сделать. Решить-бы проблему с Продолжительностью.Skif_off писал(а):заворачивать в Run с --LogFile= (скрывая окно и читая файл)
Добавлено спустя 29 минут:
С Продолжительностью все ясно. Не в ней дело. Почему-то А(0) ругается на любой параметр, если в файле данных нет, видимо. Возможно Сплит криво работает.