VBS 脚本中的字典、动态数组、队列和堆栈实现代码

所属分类: 脚本专栏 / vbs 阅读数: 1590
收藏 0 赞 0 分享

1.编写环境

今天突发奇想下载了个gVim来写VBS脚本,我用的版本是7.4的

在写脚本前,需要在gVim的安装根目录下,找到文件“_vimrc”,在里面添加下面三行:

set number
set softtabstop=4
set tabstop=4

意思分别是“显示行号”、“按退格键一次删掉4个空格”和“设定Tab长度为4个字符”

这个设置类似于Linux系统下文件“.vimrc”的配置

1.字典:Scripting.Dictionary

VBS中的字典需要使用Scripting.Dictionary

脚本文件:a.vbs,包含字典的添加、删除、判断键是否存在、修改键、修改值、遍历、统计键值对个数

Option Explicit

'建立字典
Dim Dict : Set Dict = CreateObject("Scripting.Dictionary")

'添加键值对
Dict.Add "Key1", "Item1"
Dict.Add "Key2", "Item2"
Dict.Add "Key3", "Item3"

'字典中键值对数量
WScript.Echo "字典中现有键值对数量: " & Dict.Count

WScript.Echo 

'检查指定键是否存在
If Dict.Exists("Key1") Then
  WScript.Echo "Key1 存在!"
Else
  WScript.Echo "Key1 不存在!"
End If

If Dict.Exists("Keyn") Then
  WScript.Echo "Keyn 存在!"
Else
  WScript.Echo "Keyn 不存在!"
End If

WScript.Echo 

'遍历字典
Sub TraverseDict
  Dim DictKeys, DictItems, Counter
  DictKeys = Dict.Keys
  DictItems = Dict.Items
  For Counter = 0 To Dict.Count - 1
    WScript.Echo _
      "键: " & DictKeys(Counter) & _
      "值: " & DictItems(Counter)
  Next
End Sub

TraverseDict

WScript.Echo 

'在一个键值对中,修改键或修改值
Dict.Key("Key2") = "Keyx"
Dict.Item("Key1") = "Itemx"
TraverseDict

WScript.Echo 

'删除指定键
Dict.Remove("Key3")
TraverseDict

WScript.Echo 

'删除全部键
Dict.RemoveAll
WScript.Echo "字典中现有键值对数量: " & Dict.Count

调用方法:通过双击a.bat调用,a.bat代码如下:

cscript a.vbs
pause

运行结果截图:

2.动态数组:System.Collections.ArrayList

VBS中的动态数组需要使用System.Collections.ArrayList

脚本文件:b.vbs,包含动态数组的添加元素、删除元素、遍历、统计元素个数、清空

Option Explicit

'建立动态数组
Dim Arrl : Set Arrl = CreateObject("System.Collections.ArrayList")

'添加元素
Arrl.Add "Element3"
Arrl.Add "Element2"
Arrl.Add "Element1"

'查看动态数组中的元素数
WScript.Echo "动态数组中现有元素数量: " & Arrl.Count
WScript.Echo "动态数组容量: " & Arrl.Capacity

WScript.Echo

'遍历动态数组
Sub TraverseArrl
  Dim Counter
  For Counter = 0 To Arrl.Count - 1
    WScript.Echo Arrl(Counter)
  Next
End Sub
TraverseArrl

WScript.Echo

'动态数组排序
Arrl.Sort
TraverseArrl

WScript.Echo

'删除指定元素
Arrl.Remove("Element1")
TraverseArrl

WScript.Echo

'清空全部元素
Arrl.Clear
WScript.Echo "动态数组中现有元素数量: " & Arrl.Count
WScript.Echo "动态数组容量: " & Arrl.Capacity

调用方法:通过双击b.bat调用,b.bat代码如下:

cscript b.vbs
pause

运行结果截图:

 

3.队列:System.Collections.Queue

VBS中的队列需要使用System.Collections.Queue

脚本文件:c.vbs,包含队列的添加元素(入队)、删除元素(出队)、遍历、统计元素个数、清空

Option Explicit

'建立队列
Dim Que : Set Que = CreateObject("System.Collections.Queue")

Que.EnQueue("Element1")
Que.EnQueue("Element2")
Que.EnQueue("Element3")

'查看队列中的元素数
WScript.Echo "队列中的元素数: " & Que.Count

WScript.Echo

'遍历队列
Sub TraverseQue
  Dim ArrQue : ArrQue = Que.ToArray
  Dim Counter
  For Counter = 0 To UBound(ArrQue)
    WScript.Echo ArrQue(Counter)
  Next
End Sub
TraverseQue

WScript.Echo

'退出队列
WScript.Echo Que.DeQueue
WScript.Echo "---"
TraverseQue
WScript.Echo

'清空队列
Que.Clear
WScript.Echo "队列中的元素数: " & Que.Count

调用方法:通过双击c.bat调用,c.bat代码如下:

cscript c.vbs
pause

运行结果截图:

4.堆栈:System.Collections.Stack

VBS中的堆栈需要使用System.Collections.Stack

脚本文件:d.vbs,包含堆栈的添加元素(压栈)、删除元素(出栈)、遍历、统计元素个数、清空 

Option Explicit

'建立堆栈
Dim Stk : Set Stk = CreateObject("System.Collections.Stack")

Stk.Push "Element1"
Stk.Push "Element2"
Stk.Push "Element3"

'查看堆栈中的元素数
WScript.Echo "堆栈中的元素数: " & Stk.Count

WScript.Echo

'遍历堆栈
Sub TraverseStk
  Dim ArrStk : ArrStk = Stk.ToArray
  Dim Counter
  For Counter = 0 To UBound(ArrStk)
    WScript.Echo ArrStk(Counter)
  Next
End Sub
TraverseStk

WScript.Echo

'元素出栈
WScript.Echo Stk.Pop
WScript.Echo "---"
TraverseStk

WScript.Echo

'清空堆栈
Stk.Clear
WScript.Echo "堆栈中的元素数: " & Stk.Count

 调用方法:通过双击d.bat调用,d.bat代码如下:

cscript d.vbs
pause

运行结果截图:

可以看出,遍历队列和堆栈时,遍历顺序时由出队和出栈的顺序决定的,而不是入队和压栈的顺序

更多精彩内容其他人还在看

VBS监视网络连接与断开的代码

监视网络连接与断开,特殊情况下可能有点用,两个VBS脚本均来自微软官网
收藏 0 赞 0 分享

可以修改脚本自身运行次数的vbs(Self modifying script)

通过脚本修改脚本的内容,这里以统计脚本运行次数为例,想学习vbs的朋友可以参考下
收藏 0 赞 0 分享

VBScript之通过对比注册表查找隐藏的服务

系统服务有可能被 rootkit 隐藏,但有些时候我们仍可以从注册表中找到相关的信息。建议以管理员权限运行,否则有些服务列举不出来或出现错误的提示
收藏 0 赞 0 分享

VBScript 监控并结束指定进程的代码

有时候我们需要监控一些进程,防止一些进程的开启,发现指定进程运行就关闭它,那么就可以参考下面的代码
收藏 0 赞 0 分享

VBScript 输出中的对齐实现方法

有时候我们需要在vbs中输入的字符实现对齐效果,那么就可以参考下面的代码了
收藏 0 赞 0 分享

vbs 获取当前目录的实现代码

获取当前正执行的VBS的路径,通过Scripting.FileSystemObject组件实现
收藏 0 赞 0 分享

vbs 获取当前目录文件数量的代码(不包括子文件夹中的)

有时候我们需要获取当前目录下有多少个文件,那么就可以参考下面的代码
收藏 0 赞 0 分享

VBS获取当前目录下所有文件夹名字的代码

有时候我们需要获取当前目录下所有文件夹的名字,那么就可以参考下面的代码了
收藏 0 赞 0 分享

VBS读取注册表的两种方法

有时候我们需要用vbs来操作注册表,一般情况下有两种方法,一种是通过wshshell对象的regread,另外一种是使用WMI操作注册表,下面简单的介绍下
收藏 0 赞 0 分享

查看系统C盘剩余空间的VBS脚本

查看系统C盘剩下的空间方法有很多,在本文要为大家介绍的是通过VBS脚本是如何实现的,感兴趣的朋友不要错过
收藏 0 赞 0 分享
查看更多