首页 技术 正文
技术 2022年11月12日
0 收藏 341 点赞 2,713 浏览 3175 个字

今天用VBS脚本写了几个程序,用到了字典(Dictionary)、动态数组(ArrayList)、队列(Queue)和堆栈(Stack)。现在写篇Blog总结一下 :-)

1.编写环境

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

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

set number
set softtabstop=
set tabstop=

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

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

2.字典: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.CountWScript.Echo '检查指定键是否存在
If Dict.Exists("Key1") Then
WScript.Echo "Key1 存在!"
Else
WScript.Echo "Key1 不存在!"
End IfIf Dict.Exists("Keyn") Then
WScript.Echo "Keyn 存在!"
Else
WScript.Echo "Keyn 不存在!"
End IfWScript.Echo '遍历字典
Sub TraverseDict
Dim DictKeys, DictItems, Counter
DictKeys = Dict.Keys
DictItems = Dict.Items
For Counter = To Dict.Count -
WScript.Echo _
"键: " & DictKeys(Counter) & _
"值: " & DictItems(Counter)
Next
End SubTraverseDictWScript.Echo '在一个键值对中,修改键或修改值
Dict.Key("Key2") = "Keyx"
Dict.Item("Key1") = "Itemx"
TraverseDictWScript.Echo '删除指定键
Dict.Remove("Key3")
TraverseDictWScript.Echo '删除全部键
Dict.RemoveAll
WScript.Echo "字典中现有键值对数量: " & Dict.Count

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

 cscript a.vbs
pause

运行结果截图:

[VBS]脚本中的字典、动态数组、队列和堆栈

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 = To Arrl.Count -
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

运行结果截图:

[VBS]脚本中的字典、动态数组、队列和堆栈

3.队列:System.Collections.Queue

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

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

 1 Option Explicit
2
3 '建立队列
4 Dim Que : Set Que = CreateObject("System.Collections.Queue")
5
6 Que.EnQueue("Element1")
7 Que.EnQueue("Element2")
8 Que.EnQueue("Element3")
9
10 '查看队列中的元素数
11 WScript.Echo "队列中的元素数: " & Que.Count
12
13 WScript.Echo
14
15 '遍历队列
16 Sub TraverseQue
17 Dim ArrQue : ArrQue = Que.ToArray
18 Dim Counter
19 For Counter = 0 To UBound(ArrQue)
20 WScript.Echo ArrQue(Counter)
21 Next
22 End Sub
23 TraverseQue
24
25 WScript.Echo
26
27 '退出队列
28 WScript.Echo Que.DeQueue
29 WScript.Echo "---"
30 TraverseQue
31 WScript.Echo
32
33 '清空队列
34 Que.Clear
35 WScript.Echo "队列中的元素数: " & Que.Count

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

1 cscript c.vbs
2 pause

运行结果截图:

[VBS]脚本中的字典、动态数组、队列和堆栈

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 = 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]脚本中的字典、动态数组、队列和堆栈

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,295