1

我想将一个 VBscript 包含到另一个 VBscript 中(有点模拟 VBS 中的 OO),在网上找到了一些东西,对我来说似乎还可以。我不断收到“预期语句”错误ExecuteGlobal

Dim scriptLocation

Sub Main
    scriptLocation ="script2.vbs"
    Include(scriptLocation)
End Sub

Sub Include (strFile)
    Dim fsObj : Set fsObj = CreateObject("Scripting.FileSystemObject")
    Dim vbsFile : Set vbsFile = fsObj.OpenTextFile(strFile, 1, False)
    Dim myFunctionsStr : myFunctionsStr = vbsFile.ReadAll
    vbsFile.Close
    Set vbsFile = Nothing
    Set fsObj = Nothing
    ExecuteGlobal myFunctionsStr
End Sub

有人知道吗?

4

3 回答 3

4

一行上的错误消息ExecuteGlobal可能意味着:

  1. ExecuteGlobal你成功地把声明搞砸了。Include最可靠的方法:像对Sub 调用一样添加 param list ()
  2. 您加载的代码myFunctionStr是罪魁祸首。如果您进行链接/多重包含 VBScript 错误处理的“功能”,则很难找到罪魁祸首。简单的出路:使用 cscript 运行“库”文件。

顺便说一句:OOP 和包含代码(库/模块)之间没有必要的关系。

于 2013-03-14T15:47:37.693 回答
1

内置 sub 没有任何问题ExecuteGlobal。尝试这个:

ExecuteGlobal "*"

这将带来预期的语句错误。但是,如您所见,问题在于字符串内部。因此,只需调试您的script2.vbs

于 2013-03-14T16:28:40.023 回答
0

尝试在 HexEditor 中打开 script2.vbs。如果您的脚本以 UTF-8 编码,则文件开头包含 0x{ef bb bf}。方法 .ReadAll 从文件中读取所有内容到 myFunctionStr,包括 3 个字节。从字符串中删除该字节或将您的 script2.vbs 转换为 ANSI。

于 2014-04-23T10:39:47.203 回答