了解 VBS 多行表示法

Understanding VBS multi-line notation

我想了解 VBS 将单行代码拆分为多行的方式。

在下面的函数中,_ 字符在两个地方使用,将执行分成两行,好的。

For Each objItem in colItems
    if i=0 then
        header = ""
        For Each param in objItem.Properties_
            header = header & param.Name & vbTab
        Next
        WScript.Echo header
        i=1
    end if
    serviceData = ""
    For Each param in objItem.Properties_
        serviceData = serviceData & param.Value & vbTab
    Next
    WScript.Echo serviceData
Next

我当时不明白的是,这在单行上应该是怎样的。当我使用以下任何内容修改任何一行时,我都会收到错误消息。

  1. For Each param in objItem.Propertiesheader = header & param.Name & vbTab
  2. For Each param in objItem.Properties.header = header & param.Name & vbTab
  3. For Each param in objItem.Properties header = header & param.Name & vbTab

错误影响:

C:\Program Files (x86)\ManageEngine\AppManager12\working\conf\application\scripts\wmiget.vbs(86,2) Microsoft VBScript runtime error: Object doesn't support this property or method: 'objItem.PropertiesserviceData'

如何在一行中正确表示以上内容?

这里的问题是您在不需要时使用行继续符 _ 来继续一行。

只有当您需要一行代码跨越多行时才使用它,使用您的示例;

For Each _
param _
in _
objItem.Properties
    serviceData = serviceData & param.Value & vbTab
Next

会工作(有点无意义)因为单行

For Each param in objItem.Properties

跨越多行。

所以,因为线;

For Each param in objItem.Properties

是单行代码,不需要继续,因为需要下一行代码。但是,当您提供它时,它会导致 VBScript 出错;

Microsoft VBScript compilation error: Expected end of statement

这是 VBScript 告诉您该行尚未完成并且仍需要代码语句结束的方式。

如果您确实希望在一行中跨越多个代码语句,请使用充当语句分隔符的冒号 (:),即;

For Each param in objItem.Properties : serviceData = serviceData & param.Value & vbTab : Next

有用的链接