今天用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.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 = To Dict.Count -
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 = 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

运行结果截图:

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
运行结果截图:

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]脚本中的字典、动态数组、队列和堆栈的更多相关文章

  1. C语言中怎么求动态数组大小

    先来个简单的样例 int a[] = {1,2,3}; int arr_len = 0; arr_len = sizeof(a)/sizeof(int); 解释:sizeof() keyword是求出 ...

  2. C++中new申请动态数组

    C++中数组分为静态数组和动态数组,静态数组必须确定数组的大小,不然编译错误:而动态数组大小可以不必固定,用多少申请多少.静态数组类于与我们去餐馆吃饭,餐馆会把菜做好.而动态数组类似于我们自己买菜做饭 ...

  3. shell脚本中向hive动态分区插入数据

    在hive上建表与普通分区表创建方法一样: CREATE TABLE `dwa_m_user_association_circle`( `device_number` string, `oppo_nu ...

  4. 如何在VBS脚本中显示“选择文件对话框”或“选择目录对话框”

    .选择文件[XP操作系统,不能用于Win2000或98],使用“UserAccounts.CommonDialog”对象向用户显示一个标准的“文件打开”对话框 Set objDialog = Crea ...

  5. c++中new分配动态数组

    变长一维数组     这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组.实现变长数组最简单的是变长一维数组,你可以这样做:  //文件名: array01.cpp ...

  6. shell脚本--字符串处理和动态数组

    Linux下的文本处理命令,以清晰的列分割数据为高效处理源: awk 的gsub函数可替换指定字符串 echo "<tr><td>col1</td>< ...

  7. vbs脚本实现自动打字祝福&搞笑

    脚本祝福礼物 概述 听说抖音上流行一种用代码做程序表白的东西,,,, 当然我也不是要表白,,,, 但是好像蛮有意思的,,,, 于是,又学了一下vbs脚本,做了几个很不错的祝福脚本,不懂代码的可以直接戳 ...

  8. iOS开发小技巧--字典和数组的中文输出

    一.在解析json数据的时候,得到的集合对象或者数组对象在用%@打印的时候回出现类似乱码的情况.如图: 在iOS中打印字典或者数组对象,系统会默认调用字典对象和数组对象的descriptionWith ...

  9. 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址

    在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要 ...

随机推荐

  1. ie8及ie8以下支持html5 video标签

    html5media是一个很给力的JavaScript类库,它不依赖于任何JavaScript框架.使用了html5media之后,当浏览器不支持HTML5时,它将会自动切换成Flash模式的Flow ...

  2. eclipse 工程默认编码修改 JSP编码修改

    1. Window->Preferences->General->Workspace->Text file encoding 将其改为UFT-8  新建的文件即为UTF-8编码 ...

  3. 13. Reorder List

    Reorder List Given a singly linked list L: L0→L1→…→Ln-1→Ln, reorder it to: L0→Ln→L1→Ln-1→L2→Ln-2→… Y ...

  4. Web服务器禁止range请求

    range: 请求一般是多线程下载的客户端程序使用 在httpd.conf中增加下面的配置,可以禁止range请求: RewriteEngine onRewriteCond %{HTTP:Range} ...

  5. img会在特定的情况下主动的第二次调用MVC的action

    当img的src为空,或者不是合法路径的时候,会连续调用MVC的action两次,第二次所传的值为src的值,这常常会导致程序报错. 这不是MVC的issue,而是浏览器的行为,当response f ...

  6. 纸上谈兵:排序算法简介及C实现

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 排序算法(Sorting Algorithm)是计算机算法的一个组成部分. 排序的 ...

  7. ApexSql Log 2014.04.1133破解版&补丁

    已上传最新的2016版本,请移步: http://www.cnblogs.com/gsyifan/p/ApexSql_Log_2016_Crack.html 状态不好,鬼使补差的跑到服务器上updat ...

  8. maximo功能修改(初步理解)

    已接触IBM公司的MAXIMO近三个月,在这时间里自己对maximo也有所了解,今天将自己总结写在这里,方便自己的温习和大家的参考,不足之处还望指出,我一定在第一时间内修改. 今天在公司所做的就是完善 ...

  9. myeclipse 导入JAVA项目

    说白了.就是别人给你一份写好的文件你不会用是吧?新手都是这样的.很正常..这样.咱们一步一步的来.邮件项目工程栏,选择import,选择General,选择Existing Projects into ...

  10. ntc 热敏电阻

    来自维基百科  http://zh.wikipedia.org/zh/%E7%83%AD%E6%95%8F%E7%94%B5%E9%98%BB 热敏电阻的电阻值是根据温度由公式计算而来的,知道这一点就 ...