VBS脚本运行库手册(14)-Dictionary的键值对

发布时间:2020-03-24编辑:脚本学堂
VBS脚本运行库手册,Dictionary的键值对。

Dictionary 的一个比数组更加优秀和标准的优点是你可以快速的找到特定的 key 是否存在。例如,假如你有一定的文件 list 安装在一个计算机上,并且你向搜索这个 list,来保证特定的 dll文件已经安装了。你用集合或者数组,除非你系统的搜索整个数组否则你没有方法来确定特定的一个文件是否存在了。但是用 Dictionary 你可以 Exists 方法来检查给定的 key 是否存在。用Exists 方法只是需要一个参数,(需要查询的 key 的名字),然后返回一个 Boolean 的值,如果是真的值,表明这个 key 存在,如果是否,则不存在。

下面的脚本中创建一个 Dictionary 对象,添加三对元素,然后脚本检查叫做 key 的关键词是否存在,并且回显其结果。
Set objDictionary = CreateObject("Scripting.Dictionary")
   objDictionary.Add "Printer 1", "Printing"
   objDictionary.Add "Printer 2", "Offline"
   objDictionary.Add "Printer 3", "Printing"
   If objDictionary.Exists("Printer 4") Then
      Wscript.Echo "Printer 4 is in the Dictionary."
   Else
      Wscript.Echo "Printer 4 is not in the Dictionary."
   End If

当脚本运行的时候,会有 printer 4 is not in the Dictionary 的消息出现在屏幕上.

添加到 Dictionary 中的 item 不是一成不变的,事实上,你可以在任何的时间去更改它。这个功能可以让你纪录脚本的运行情况。例如,你的 Dictionary 是个关于服务器名称的列表区,每次你的脚本对应的服务器运行结束之后,你可以更改它对应的 item 值来标识它的状态。在脚本中止之前,你可以将状态列出来看脚本运行成功与否的。下面的脚本创建了一个具有三个 keys 的 Dictionary,这三个 key 分贝为 atl-dc-01,atl-dc-02,atl-dc-03,每个的 item 都是设置成 no status,这个表明针对这个服务器的状态信息还没有获得。然后回显他们的 item的信息。

在这个 Dictionary 被创建之后,用 item 方法以 key 作为参数更改这些 item 的值。例如,如下的脚本代码语句更改 key atl-dc-01 的 item 为 available::
objDictionary.Item("atl-dc-01") = "Available"
在这三个 items 的值被更改了之后,新的 item 被回显出在屏幕上:

code:
Set objDictionary = CreateObject("Scripting.Dictionary")
objDictionary.Add "atl-dc-01", "No status"
objDictionary.Add "atl-dc-02", "No status"
objDictionary.Add "atl-dc-03", "No status"

colKeys = objDictionary.Keys
For Each strKey in colKeys
   Wscript.Echo strKey, objDictionary.Item(strKey)
Next

  objDictionary.Item("atl-dc-01") = "Available"
  objDictionary.Item("atl-dc-02") = "Available"
  objDictionary.Item("atl-dc-03") = "Unavailable"

  colKeys = objDictionary.Keys
  For Each strKey in colKeys
    Wscript.Echo strKey, objDictionary.Item(strKey)
  Next

当在 Cscript 下运行这个的时候,命令行中的信息如下:
atl-dc-01 No status
atl-dc-02 No status
atl-dc-03 No status
atl-dc-01 Available
atl-dc-02 Available
atl-dc-03 Unavailable

Key-item 对也可以从 Dictionary 中移走,Script Runtime Library 提供了移走 key-item 对的两种方法:
   RemoveAll, 移走所有的 key-item 对
   Remove, 从 Dictionary 移走特定的 key-item 的值。