3

我在我的 VBscript 中遇到“无效字符”错误!特别是,在这段代码中:

'*******************************************************************
'Import Code
'by Cheyne Wallace
'November 2008

'When using only VBscript (not QTP), this code will import any function library passed into it.
'Copy this function into a file, then use it to bring in various other function libraries.
'Usage:
'   Import "Library.vbs"

Sub Import(strFile)
    Dim objFSO : Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim wss : Set wss = CreateObject("WScript.Shell")
    strFile = wss.ExpandEnvironmentStrings(strFile)
    strFile = objFSO.GetAbsolutePathName(strFile)
    Set objFile = objFSO.OpenTextFile(strFile, 1)
    ExecuteGlobal objFile.ReadAll
    objFile.Close : Set objFSO = nothing
    Set wss = Nothing
End Sub

错误Microsoft VBScript compilation error. Invalid Character. Code: 800A0408在 Char: 2, Line 206 上显示“”,这是第一个字母ExecuteGlobal objFile.ReadAll(字符 1 是制表符)。

我已经键入并重新键入了该行以及周围的换行符。不过,它一直说“无效字符”。到底是怎么回事??

4

3 回答 3

5

事实证明,问题不ExecuteGlobal在于 .vbs 文件,而是我试图导入的 .vbs 文件。我正在导入的文件不是 ANSI 编码。如果 VBScript 对您正在导入的文件有问题,它将在开头的字符和行处报告错误(这无疑会ExecuteGlobal导致混淆)。

打开您尝试导入的文件,将其转换为 ANSI,一切正常。

于 2012-12-21T19:56:36.500 回答
3

仅供将来遇到相同问题的人参考,以解决此问题:

  1. 在记事本中打开 .vbs
  2. 转到文件并“另存为”
  3. 在文件名框的正下方,您将看到一个用于编码的下拉菜单。选择 ANSI。
于 2015-02-03T05:32:26.347 回答
0

更改您的代码:

Set objFile = objFSO.OpenTextFile(strFile, 1)
ExecuteGlobal objFile.ReadAll

Set objFile = objFSO.OpenTextFile(strFile, 1, False, -2)
ExecuteGlobal objFile.ReadAll

函数中的最后一个参数OpenTextFileTristateUseDefault = -2(使用系统默认打开文件。)

于 2019-11-20T16:49:53.507 回答