[VBS] выполнение кода из переменной
От: BreakHeart  
Дата: 23.05.25 15:38
Оценка:
Здравствуйте!В скрипте есть переменная, которая содержит VBS-скрипт. Подскажите, пожалуйста, как можно выполнить код из этой переменной не записывая в отдельный файл.
Re: [VBS] выполнение кода из переменной
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 27.05.25 11:11
Оценка:
Здравствуйте, 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")
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.