Здравствуйте!В скрипте есть переменная, которая содержит VBS-скрипт. Подскажите, пожалуйста, как можно выполнить код из этой переменной не записывая в отдельный файл.
Здравствуйте, BreakHeart, Вы писали:
BH>Здравствуйте!В скрипте есть переменная, которая содержит VBS-скрипт. Подскажите, пожалуйста, как можно выполнить код из этой переменной не записывая в отдельный файл.
В свое время это было не самым распространенным сценарием (на сколько я помню, в WSH исходно динамическое выполнение было только в JS)
Сейчас пробежался, вроде как должны работать такие варианты:
1. Использовать функцию
eval(). Работает правда, как я понял, только если строка — это выражение (а не произвольный код), хотя вызвать MsgBox я таким образом смог
function myFunction()
myFunction = 5 +5
end function
str = "56 + 78"
t1 = eval(str)
t2 = eval("myFunction()")
eval("MsgBox( 1, 0 )")
call MsgBox(t1, 0)
call MsgBox(t2, 0)
2. Использовать объект ActiveX
MSScriptControl.ScriptControl. Вроде как это можно вызывать откуда угодно, но есть и свои нюансы. Я обнаружил, что на Windows 11, у него есть только 64-х битная версия, поэтому пример ниже работает только если вызвать wscript.exe из C:\Windows\SysWOW64\wscript.exe
set a = createobject("msscriptcontrol.scriptcontrol")
a.language = "vbscript"
a.executestatement "ab = 12"
msgbox a.eval("ab")