【问题标题】:Convert UpTime JS code to VBS将 UpTime JS 代码转换为 VBS
【发布时间】:2017-11-19 22:03:25
【问题描述】:

我正在生成一个“正常运行”的 Win7 小工具并尝试重现类似小工具中的 .vbs 代码。

我是一名 .js 编码员。

相关JS:

vbStr=GetUpTime();

相关VBS:

Function GetUpTime
    Set loc=CreateObject("WbemScripting.SWbemLocator")
    Set svc=loc.ConnectServer(MachineName, "root\cimv2")
    Set oss=svc.ExecQuery("SELECT * FROM Win32_OperatingSystem")
    For Each os in oss
        tim=os.LastBootUpTime
    Next
    GetUpTime=tim
End Function

基本上这个 .vbs 可以解决问题,因为目前只有 1 个os 正在运行。我想通过学习来扩展这一点:

1)MachineName的相关性是什么?

如果我返回 MachineName 而不是 tim,我会得到一个 undefined 值。

2) 如何在没有For Each 循环的情况下提取单个os,相当于.js:

os=oss[n];

3) 如何返回 tim 相对于每个 os 的数组。

.vbs 代码循环通过可用的os 并获得它们各自的正常运行时间,但开发人员只计划了 1 个os,因此没有代码返回 tim 数组s。在研究了 .vbs 数组后,我发现了如何创建“set-length”数组,但这无关紧要!

【问题讨论】:

  • 您可以循环遍历WMI查询结果的所有项目,并通过在JS中创建枚举器将它们添加到数组中。

标签: javascript arrays vbscript windows-7 windows-desktop-gadgets


【解决方案1】:
  1. 机器名称未定义,因此被视为零长度字符串。这意味着它被忽略了。通常,您要查询的是网络上的计算机。它是可选的,因此未声明不会引发错误。

  2. 使用 COM 缩写(Items 是默认属性)

      os=oss(1) 
    

或全部

      os=oss.items(1)
  1. 字典更容易(来自帮助)。

     Set d = CreateObject("Scripting.Dictionary")
     d.Add "a", "Athens"   ' Add some keys and items.
     d.Add "b", "Belgrade"
     d.Add "c", "Cairo"
    

注意:JScript 像 VBScript 一样使用 COM。代码类似。

【讨论】:

    猜你喜欢
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-27
    • 2021-04-20
    相关资源
    最近更新 更多