我目前正在运行我的主vbscript中的一个新的vbscript,通过创建第二个脚本'在运行中'从字符串数组并将其写入外部powershell -C "gci | % {rni $_.Name ($_.Name -replace '.out', '')}"
文件,然后使用secondfile.vbs
我需要它在第一个运行时继续运行。
我遇到的问题是,因为我必须重复多次,使用FSO编写新的vbs文件会使进程慢一点 - 我试图消除它。 有没有办法从内存中运行vbscript,而无需创建物理文件?寻找一种方法将我的脚本作为字符串并直接作为独立的vbscript执行。提前感谢任何建议。
以下是目前工作原理的简化代码:
WshShell.Run "C:\secondfile.vbs"
答案 0 :(得分:2)
使用运行WSH VB脚本运行某些代码的最简单方法是将代码传递给ExecuteGlobal
函数(或Execute
使用本地范围):
arrCode = Array(_
"For x = 1 To 10", _
"MsgBox x", _
"Next"_
)
strCode = Join(arrCode, vbCrLf)
ExecuteGlobal strCode
您可以找到VBScript“多进程”实现by the link。该代码仅适用于WSH脚本引擎。 RhinoScript环境需要重新编写和修改代码,因为存在差异:RhinoScript没有WScript
对象可用,因此问题是无法检索启动RhinoScript文件的路径。唯一的方法是在代码中硬编码路径。 WSH VBS文件扩展名为.vbs
,RhinoScript为.rvb
。
评论中有些内容变得更加清晰。您写道,您正在尝试更快地运行代码,但请注意WshShell.SendKeys
方法比保存和执行文件需要更长的时间,并且它不可靠。我的线索是避免使用.SendKeys
并尝试使用RhinoScript object model应用程序方法实现自动化。也许这样你不需要任何代码创建。这取决于您最初打算自动化的内容。
另外,您指出vbscript代码片段是从一个主要的RhinoScript运行时一个接一个地创建,修改和执行的。因此,即使继续使用您的初始脚本,也不清楚为什么需要制作任何“多进程”模型?为什么不创建每个代码段并将其传递给ExecuteGlobal
,如上例所示?