Страница 15 из 20
Добавлено: Чт мар 14, 2024 19:16
Orion9
Может кто-нибудь подтвердить/опровергнуть такое поведение?
Уже давно не пользовался Windows 7. Могу только добавить, что в 11-ой такой проблемы нет. Все работает ровно.
Добавлено: Чт окт 31, 2024 05:35
AkulaBig
del
Добавлено: Чт окт 31, 2024 08:17
Monarch-LFV
AkulaBig
Не совсем понятно зачем писать свой скрипт, если есть быстрый плагин
TCMediaInfo.
Из своего опыта скажу: писал разные VBS для WinScriptAdv, которые где-то дублируют возможности плагинов, но все они были медленнее заточенных плагинов, но оно и понятно, сколько этапов проходит от запроса до вывода информации:
TC -> WinscriptADV -> Запуск интерпретатора -> работа самого скрипта -> Запуск сторонней библиотеки (например, MediaInfo) -> WinscriptADV -> TC.
И так на каждый файл. Длинная цепочка получается, потому и медленно.
А чем не устраивает TCMediaInfo?
Добавлено: Чт окт 31, 2024 09:19
AkulaBig
Раз не нужен, удалил. Это проще сделать, чем что-то объяснять таким как вы.
Добавлено: Чт окт 31, 2024 22:24
Skif_off
AkulaBig
Не, ну любопытство - это номально же

, я и сам спрашиваю иногда на предмет использования у себя или замены используемого, а звучать может не так однозначно...
Так понял, возникла проблема с запуском скрипта AutoIt из скрипта на VBScript? Возможно, в скрипт, написанный для плагина, не был добавлен необходимый для запуска из vbs-скрипта выхлоп - не хватает
ConsoleWrite, типа как
тут.
Добавлено: Чт окт 31, 2024 23:05
AkulaBig
Возможно и из-за ConsoleWrite. Но еще есть проблема из-за filename. В ahk так, а в au3 $filename. Но знак доллара поставить не дает, сообщает об ошибке. Не понятно, что с этим делать.
Добавлено: Чт окт 31, 2024 23:45
Skif_off
Если скрипт 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
Добавлено: Пт ноя 01, 2024 00:13
Monarch-LFV
AkulaBig
Не думал, что мои слова вызовут такую реакцию. Прошу прощения если что не так. И согласен со Skif_off про любопытство. Объяснять всегда надо, особенно таким как я

Для себя тоже новое узнал, как вывод из stdout записать в переменную, до этого всегда писал во временный файл в %temp%, и оттуда считывал.
Skif_off
Спасибо за наводку!
Добавлено: Пт ноя 01, 2024 14:30
AkulaBig
Skif_off писал(а):писать результат в ConsoleWrite
Я сейчас занялся запуском MediaInfo CLI из vbs. Там тоже одна из проблем вывод результата в плагин. Но до этого мне еще далеко. Сейчас пока добился только вывода хотя-бы одного результата в самом скрипте. Теперь думаю как-бы обойтись без промежуточного файла для множества данных.
Добавлено: Пт ноя 01, 2024 16:40
Skif_off
AkulaBig
Вариантов тут немного, проще всего функцией 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
(
execStdOut() парой сообщений выше)
AkulaBig писал(а):Теперь думаю как-бы обойтись без промежуточного файла для множества данных.
Зависит от данных, которые вытаскиваете, и от того, как.
Добавлено: Пт ноя 01, 2024 17:21
AkulaBig
Хотелос-бы в массив закинуть весь список и из него брать значения. То-есть как у вас. Но не прописывать каждое значение для --Inform, а применить ключ -f. Надо проверить, будет работать с вашим кодом.
Добавлено: Пт ноя 01, 2024 17:47
Skif_off
AkulaBig писал(а):применить ключ -f
Вывод может содержать данные, которые не нужны, но на их получение уйдёт время. К тому же выхлоп может различаться в зависимости от формата и/или версии MedaInfo.
Добавлено: Пт ноя 01, 2024 19:48
AkulaBig
Skif_off писал(а):выхлоп может различаться в зависимости от формата и/или версии MedaInfo.
Такое практически невозможно. Тогда и TCMediaInfo неправильно будет работать. Это тоже самое, что мелко-мягкие написали-бы Винду с нуля. Убрав поддержку старого говнокода. Это очень заманчивая перспектива, но нереальная. Такое только юниксоиды практикуют.
Skif_off писал(а):
O = execStdOut("""path-to-mediainfo.exe"" --Inform=""Video;%Width%|%Height%|%BitRate%"" """ & filename & """")
Я правильно понимаю, что вы выкладываете алгоритм, а не рабочее решение? Или у вас этот код работает? Я-то уже обрадовался, что так можно писать. Но у меня не работает. А вот дальше начинается интересная история. Если этот код только через Run()\Exec() можно выполнить, то будет проблематично завернуть его в execStdOut.
Добавлено: Пт ноя 01, 2024 21:29
Skif_off
AkulaBig писал(а):Такое практически невозможно. Тогда и TCMediaInfo неправильно будет работать.
Думаю, TCMediaInfo запрашивает то, что прописано у него в конфиге, без -f или чего-то подобного.
По количеству выводимой с -f инфы различия будут, сравните файлы разных форматов.
AkulaBig писал(а):Я правильно понимаю, что вы выкладываете алгоритм, а не рабочее решение? Или у вас этот код работает? Я-то уже обрадовался, что так можно писать. Но у меня не работает.
С Lua такое проворачивал, проверил сейчас с VBScript, дописав
- работает, но почему-то мелькает окно консоли (непонятно, вроде как cli-версия MediaInfo).
По ходу, нужно либо уточнять параметры MediaInfo на предмет что там есть полезного, либо заворачивать в Run с
--LogFile= (скрывая окно и читая файл), либо загуглить, какие есть решения VBScript + MediaInfo.
Добавлено: Пт ноя 01, 2024 22:04
AkulaBig
Все дело, как всегда, было в кавычках. То-есть без cmd /C запускается, но окно консоли мелькает.
Поправленный вариант не выкладываю, так как есть косяки. Почему-то колонка Продолжительность на некоторых файлах ругается Индекс выходи за пределы диапазона '[number: 1]'
Добавлено спустя 5 минут:
Skif_off писал(а): работает, но почему-то мелькает окно консоли
У меня тоже.
Skif_off писал(а):заворачивать в Run с --LogFile= (скрывая окно и читая файл)
Такой вариант есть у меня. Посмотрю, что лучше сделать. Решить-бы проблему с Продолжительностью.
Добавлено спустя 29 минут:
С Продолжительностью все ясно. Не в ней дело. Почему-то А(0) ругается на любой параметр, если в файле данных нет, видимо. Возможно Сплит криво работает.