标签:
今天用VBS脚本写了几个程序,用到了字典(Dictionary)、动态数组(ArrayList)、队列(Queue)和堆栈(Stack)。现在写篇Blog总结一下 :-)
1.编写环境
今天突发奇想下载了个gVim来写VBS脚本,我用的版本是7.4的
在写脚本前,需要在gVim的安装根目录下,找到文件“_vimrc”,在里面添加下面三行:
set number set softtabstop=4 set tabstop=4
意思分别是“显示行号”、“按退格键一次删掉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.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代码如下:
1 cscript a.vbs 2 pause
运行结果截图:
2.动态数组:System.Collections.ArrayList
VBS中的动态数组需要使用System.Collections.ArrayList
脚本文件:b.vbs,包含动态数组的添加元素、删除元素、遍历、统计元素个数、清空
1 cscript b.vbs 2 pause
运行结果截图:
3.队列:System.Collections.Queue
VBS中的队列需要使用System.Collections.Queue
脚本文件:c.vbs,包含队列的添加元素(入队)、删除元素(出队)、遍历、统计元素个数、清空
1 cscript c.vbs
2 pause
4.堆栈:System.Collections.Stack
VBS中的堆栈需要使用System.Collections.Stack
脚本文件:d.vbs,包含堆栈的添加元素(压栈)、删除元素(出栈)、遍历、统计元素个数、清空
1 Option Explicit 2 3 ‘建立堆栈 4 Dim Stk : Set Stk = CreateObject("System.Collections.Stack") 5 6 Stk.Push "Element1" 7 Stk.Push "Element2" 8 Stk.Push "Element3" 9 10 ‘查看堆栈中的元素数 11 WScript.Echo "堆栈中的元素数: " & Stk.Count 12 13 WScript.Echo 14 15 ‘遍历堆栈 16 Sub TraverseStk 17 Dim ArrStk : ArrStk = Stk.ToArray 18 Dim Counter 19 For Counter = 0 To UBound(ArrStk) 20 WScript.Echo ArrStk(Counter) 21 Next 22 End Sub 23 TraverseStk 24 25 WScript.Echo 26 27 ‘元素出栈 28 WScript.Echo Stk.Pop 29 WScript.Echo "---" 30 TraverseStk 31 32 WScript.Echo 33 34 ‘清空堆栈 35 Stk.Clear 36 WScript.Echo "堆栈中的元素数: " & Stk.Count
调用方法:通过双击d.bat调用,d.bat代码如下:
1 cscript d.vbs 2 pause
运行结果截图:
标签:
原文地址:http://www.cnblogs.com/masonlu/p/4689857.html