[VBS]脚本中的字典、动态数组、队列和堆栈
今天用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
- 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]脚本中的字典、动态数组、队列和堆栈的更多相关文章
- C语言中怎么求动态数组大小
先来个简单的样例 int a[] = {1,2,3}; int arr_len = 0; arr_len = sizeof(a)/sizeof(int); 解释:sizeof() keyword是求出 ...
- C++中new申请动态数组
C++中数组分为静态数组和动态数组,静态数组必须确定数组的大小,不然编译错误:而动态数组大小可以不必固定,用多少申请多少.静态数组类于与我们去餐馆吃饭,餐馆会把菜做好.而动态数组类似于我们自己买菜做饭 ...
- shell脚本中向hive动态分区插入数据
在hive上建表与普通分区表创建方法一样: CREATE TABLE `dwa_m_user_association_circle`( `device_number` string, `oppo_nu ...
- 如何在VBS脚本中显示“选择文件对话框”或“选择目录对话框”
.选择文件[XP操作系统,不能用于Win2000或98],使用“UserAccounts.CommonDialog”对象向用户显示一个标准的“文件打开”对话框 Set objDialog = Crea ...
- c++中new分配动态数组
变长一维数组 这里说的变长数组是指在编译时不能确定数组长度,程序在运行时需要动态分配内存空间的数组.实现变长数组最简单的是变长一维数组,你可以这样做: //文件名: array01.cpp ...
- shell脚本--字符串处理和动态数组
Linux下的文本处理命令,以清晰的列分割数据为高效处理源: awk 的gsub函数可替换指定字符串 echo "<tr><td>col1</td>< ...
- vbs脚本实现自动打字祝福&搞笑
脚本祝福礼物 概述 听说抖音上流行一种用代码做程序表白的东西,,,, 当然我也不是要表白,,,, 但是好像蛮有意思的,,,, 于是,又学了一下vbs脚本,做了几个很不错的祝福脚本,不懂代码的可以直接戳 ...
- iOS开发小技巧--字典和数组的中文输出
一.在解析json数据的时候,得到的集合对象或者数组对象在用%@打印的时候回出现类似乱码的情况.如图: 在iOS中打印字典或者数组对象,系统会默认调用字典对象和数组对象的descriptionWith ...
- 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址
在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要 ...
随机推荐
- Mysql备份迁移——MySqlBackup(.net)——(无法解决视图嵌视图报错)
这里是利用MySqlBackup,可以再nuget中下载. 无法解决视图嵌视图报错的问题,只导表跟数据比较合适,如果有视图嵌视图,请参照Mysql备份迁移——Mysqldump(.NET调用Mysql ...
- java几种常见加密算法小试
http://www.cnblogs.com/JCSU/articles/2803598.html http://www.open-open.com/lib/view/open139727425732 ...
- IDEA新建javaWeb以及Servlet简单实现
刚开始用IDEA开发,还不太熟悉,因此写一个教程,加深印象 1.新建一个Web项目 两种方法:java 和 Java Enterprise(推荐) 第一种)通过Java工程创建,这个方法需要手动导入T ...
- [EventBus源码解析] 订阅者处理消息的四种ThreadMode
前言 在前面,我们探讨了如何在自己的代码中引入EventBus,进行基本的事件分发/监听:对注册观察者与事件发送的过程进行了浅析.从之前的学习中,我们了解到,EventBus一共有4种onEvent方 ...
- 稍览了一下CommonJS
CommonJS是服务器端模块的规范,现在炒得很火的Node.js采用了这个规范. 根据CommonJS规范,一个单独的文件就是一个模块.加载模块使用require方法,该方法读取一个文件并执行,最后 ...
- Selenium + PhantomJS + python 简单实现爬虫的功能
Selenium 一.简介 selenium是一个用于Web应用自动化程序测试的工具,测试直接运行在浏览器中,就像真正的用户在操作一样 selenium2支持通过驱动真实浏览器(FirfoxDrive ...
- net.sf.json 时间格式的转化
后台代码 //后台代码 response.setCharacterEncoding("UTF-8"); JsonConfig jsonConfig = new JsonConfig ...
- JS实现转动效果
方案一 <div class="div_uploading"> <div class="div_uploading_scroll">&l ...
- Visual paradigm Db Archtecture Database config
- 【Linux】netdata监控组件
github:https://github.com/firehol/netdata 安装:https://github.com/firehol/netdata/wiki/Installation 内存 ...