从另一个脚本运行vbscript而不编写文件

时间:2016-04-22 18:40:20

标签: vbscript runtime wsh rhino3d

我目前正在运行我的主vbscript中的一个新的vbscript,通过创建第二个脚本'在运行中'从字符串数组并将其写入外部powershell -C "gci | % {rni $_.Name ($_.Name -replace '.out', '')}" 文件,然后使用secondfile.vbs我需要它在第一个运行时继续运行。

我遇到的问题是,因为我必须重复多次,使用FSO编写新的vbs文件会使进程慢一点 - 我试图消除它。 有没有办法从内存中运行vbscript,而无需创建物理文件?寻找一种方法将我的脚本作为字符串并直接作为独立的vbscript执行。提前感谢任何建议。

以下是目前工作原理的简化代码:

WshShell.Run "C:\secondfile.vbs"

1 个答案:

答案 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,如上例所示?