【问题标题】:Get VBscript results on One line在一行上获取 VBscript 结果
【发布时间】:2021-10-07 19:21:07
【问题描述】:

我尝试使用 VBScript 将所有打印机安装在计算机上,当我运行此 VBScript 时,我得到了最后一台打印机(我有很多打印机),如何在一行中显示所有打印机?

结果图片

Function Printers
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48) 
For each objItem in colItems
Printers = objItem.Name
Next
End Function
WScript.Echo "Printers: " &  Printers

我需要如下图所示的结果

【问题讨论】:

  • For 循环中连接Printers 字符串,否则您只会得到最后一次迭代的结果。像Printers = Printers & "; " & objItem.Name 这样的东西应该可以工作。

标签: vbscript


【解决方案1】:

当使用For 循环时,在循环内分配的任何变量都会在下一次迭代期间被替换,因为这是一个字符串,您可以将每次迭代的结果连接到下一次。

'Make sure all variables are properly declared.
Option Explicit

Function Printers
    Dim items: items = ""
    Dim strComputer: strComputer  = "."
    Dim objWMIService : Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
    Dim colItems: Set colItems = objWMIService.ExecQuery("Select * from Win32_Printer",,48) 
    Dim objItem

    For Each objItem in colItems
        'Concatenate each string to the next.
        items = items & "; " & objItem.Name
    Next
    'Assign return value
    Printers = items
End Function

WScript.Echo "Printers: " &  Printers

【讨论】:

    猜你喜欢
    • 2011-08-28
    • 2021-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-30
    • 2013-06-26
    • 2015-04-13
    相关资源
    最近更新 更多