热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

灵活实用VBS入门教程应用篇

上一篇文章我们了解了vbs编程的一些基础知识,要更深入地学习还要学习选择结构和循环结构。选择结构选择结构,即是对条件进行判断,然后根据判断的结果,选择执行不同的分支的结构。

上一篇文章我们了解了vbs编程的一些基础知识,要更深入地学习还要学习选择结构和循环结构。

  选择结构

  选择结构,即是对条件进行判断,然后根据判断的结果,选择执行不同的分支的结构。常见的有if条件语句和select case语句。

  ●if条件语句
  if条件语句又有多种具体的形式,如if…then、if…then…else、if…then…elseif。下面分别用例程来说明。用笔记本编写一个如下内容的vbs脚本:

  dim a,b
  a=inputbox("输入第一个数字","输入")
  b=inputbox("输入第二个数字","输入")
  if a>b then
  msgbox("第一个数大于第二个数")
  end if

  运行后,要求用户输入两个数字,第一个数字的值赋给a,第二个数字的值赋给b,然后程序自动判断a和b,如果a的值大于b的值,就弹出信息提示框,显示“第一个数大于第二个数”。注意:then后面的语句不与then在同一行时,判断语句结束后要加一行end if来结束,否则程序会结束。如果是同一行的就不用再加上end if了,如上面的语句可改为:
  dim a,b
  a=inputbox("输入第一个数字","输入")
  b=inputbox("输入第二个数字","输入")
  if a>b then msgbox("第一个数大于第二个数")
  另外一个程序中可以用多个if语句,我们可以把上面的程序完善一下如下:
  dim a,b
  a=inputbox("输入第一个数字","输入")
  b=inputbox("输入第二个数字","输入")
  if a>b then
  msgbox("第一个数大于第二个数")
  end if
  if a=b then
  msgbox(“第一个数等于第二个数”)
  end if
  if a  msgbox(“第一个数小于第二个数”)
  end if
  我们也可以再换用if的其它语句if…then…else和if…then….elseif来实现相同的作用,如下:
  dim a,b
  a=inputbox("输入第一个数字","输入")
  b=inputbox("输入第二个数字","输入")
  if a>b then
  msgbox("第一个数大于第二个数")
  else
  if a=b then
  msgbox(“第一个数等于第二个数”)
  else 
  msgbox(“第一个数小于第二个数”)
  end if
  end if
  ――――――――――――――――――――――――――――――――――――――
  dim a,b
  a=inputbox("输入第一个数字","输入")
  b=inputbox("输入第二个数字","输入")
  if a>b then
  msgbox("第一个数大于第二个数")
  elseif a=b then
  msgbox(“第一个数等于第二个数”)
  else
  msgbox(“第一个数小于第二个数”)
  end if
  
  ●select case语句
  select case语句是多分支结构的另一种表示形式,它具有表示直观的特点,结构简单,不容易导致混乱,它的语法形式如下:
  select case 变量或表达式
  case 表达式1
   语句1
  case 表达式2
   语句2
  end select

  现在我们用select case语句来写一个数字转换成英文的程序,体验一下select case的优点,let's go!!!

  dim a
  a=inputbox("输入一个数字","输入")
  select case a
   case 1 
   msgbox("你输入的数英文是one")
   case 2
   msgbox("你输入的数英文是two")
   case 3
   msgbox("你输入的数英文是tree")
   case 4
   msgbox("你输入的数英文是four")
  end select

  从上面,是不是觉得select case语句很直观呢,如果用if语句的话,肯定会很混乱,甚至会把人都给看晕了。还要注意的是无论是条件语句有多少个分支,只要一个分支执行了,其余的分支就不再执行。
  
  循环结构

  ●for循环语句
  for语句是用来控制循环次数已知的循环结构的,语句如下:
   for 循环变量=初值 to 终值 [步长]
    语句
  [exit for] '退出循环语句
  next
  现在我们编写一个计算从1加到100的整数和的程序,深入去了解for的用法,程序内容如下:

  dim s
  s=0
  for i=1 to 100
  s=s+i
  next
  msgbox(s)

  这段程序也是经典的程序之一,它首先声明了一个变量s,然后给s赋个初始值0,for i=1 to 100语句让i随着每一次循环加1,循环体内的语句s=s+i也随着i的增加进行累加,一直加到i=100时结束循环。next语句让循环体进入下一次循环。
  
  ●do…loop循环语句
  for循环语句用于控制循环次数已知的循环,而do…loop则是用于控制次数未知的循环,根据设定的条件控制循环。它有两种形式,一种是先判断后执行,另一形式是先执行后判断。
  先判断后执行语法形式:
  do [while/until 条件]
    语句
  [exit do] ‘退出循环
  loop
  
  先执行后判断语法形式:
  do
   语句
  [exit do]
  loop [while/until 条件]
  下面我们用do…loop语句来改写上面的计算1到100的整数和的程序,如下:

  先执行后判断式
  dim s
  s=0
  i=0
  do
  i=i+1
  s=s+i
  loop until i>=100
  msgbox(s)

  先判断后执行式:
  dim s
  s=0
  i=0
  do while s<100
  i=i+1
  s=s+i
  loop
  msgbox(s)

  这两段程序很简单,很容易理解,在此就不再赘述了。
  至此,vbs重要的语法结构以及语句已经粗略学习完毕,要更加深入细致系统地去研究,最好找相关的书籍看一下。下面将正式进行vbs编程网吧实战阶段。

实战篇

  进行“实战”前我们先来理解什么是shell对象和wsh。shell对象就是微软对一些常用外壳操作函数的封装。象打开或浏览一个文件夹、查找文件、关闭计算机等等,而且还能浏览整个文件系统,获取文件或文件夹的各种信息。由于这些封装是建立在ole自动化服务的基础之上,所以我们可以在vb、web和vbs中方便的使用它们。wsh是windows script host的缩写形式,wsh是windows平台的脚本指令,它的功能十分强大,并且它利用js和vbs脚本语言,来实现其卓越的功能的,除了修改注册表之外,它还可以访问excel文件,也能与网络沟通,当然它最大的优势莫过于它能与操作系统沟通,而修改注册表只是它与操作系统沟通的冰山一角。正是它有如此诸多的优点与实用性,正倍受很多windows用户的青睐。

  上面说了wsh利用vbs可以修改系统注册表,但必须先创建一个能与操作系统沟通的对象,再利用该对象的各种方法对注册表进行操作,创建这个对象的方法和格式如下:

  dim operatereg
  set operatereg=wscript.createobject("wscript.shell")
  上面第一行声明了一个变量,而第二行则是利用声明的变量创建一个能与操作系统沟通的shell对象operatereg。

  下面就来利用shell对象来关闭一些会给网吧机子带来安全隐患的服务吧。

  关闭默认共享
  set ds=createobject("wscript.shell")
  ds.run "net stop server /y"

  关闭wmi服务
  set swmi=createobject("wscript.shell")
  swmi.run "net stop wmi /y"

  禁用guest用户
  set sg=createobject("wscript.shell")
  sg.run "net user guest /active:no"

  关闭telnet服务
  set st=createobject("wscript.shell")
  st.run "net stop telnet"
  
  利用vbs 实现开机bat延时和无黑屏
  如果我们开机要执行名为bar.bat的批处理文件在远程服务器\\server\new\ 中那么就在客户机的c盘根目录下建个批处理,将他命名为run.bat,内容如下:
  ping 127.0.0.1 -n 10  (10表示你要延时的秒数 自己根据需要进行设置)
  call \\server\new\bar.bat
  
  保存后再在同目录下建个文本写上 
  set nb=createobject("wscript.shell")
  nb.run "run.bat /start",0
  保存成vbs文件然后将此文件加入到启动项,重启bat延时和无黑屏就这样实现了。

  以上都是vbs的一些简单的编程而已,如果能把vbs学到精通的话,你会发现它的功能非常的强大,很多复杂的功能都可以通过它来实现。现在很多网管都很乐于采用vbs编程来对网吧的机器进行管理。本系列三篇文章仅仅是对vbs进行了简单的了解和实例应用,大家要想更深入地去学习,还要靠平时的努力和积累,最后,祝大家早日可以把vbs学得炉火纯青。



推荐阅读
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • vb.net面试题,请大家帮忙,谢谢。如果需要讲详细一点,那就加我QQ531412815第4题,潜在的错误,这里的错误不是常规错误,属于那种只有在运行是才知道的错误:Catchex ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • Oracle分析函数first_value()和last_value()的用法及原理
    本文介绍了Oracle分析函数first_value()和last_value()的用法和原理,以及在查询销售记录日期和部门中的应用。通过示例和解释,详细说明了first_value()和last_value()的功能和不同之处。同时,对于last_value()的结果出现不一样的情况进行了解释,并提供了理解last_value()默认统计范围的方法。该文对于使用Oracle分析函数的开发人员和数据库管理员具有参考价值。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 也就是|小窗_卷积的特征提取与参数计算
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了卷积的特征提取与参数计算相关的知识,希望对你有一定的参考价值。Dense和Conv2D根本区别在于,Den ... [详细]
  • 本文讨论了如何使用IF函数从基于有限输入列表的有限输出列表中获取输出,并提出了是否有更快/更有效的执行代码的方法。作者希望了解是否有办法缩短代码,并从自我开发的角度来看是否有更好的方法。提供的代码可以按原样工作,但作者想知道是否有更好的方法来执行这样的任务。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 使用圣杯布局模式实现网站首页的内容布局
    本文介绍了使用圣杯布局模式实现网站首页的内容布局的方法,包括HTML部分代码和实例。同时还提供了公司新闻、最新产品、关于我们、联系我们等页面的布局示例。商品展示区包括了车里子和农家生态土鸡蛋等产品的价格信息。 ... [详细]
  • 十大经典排序算法动图演示+Python实现
    本文介绍了十大经典排序算法的原理、演示和Python实现。排序算法分为内部排序和外部排序,常见的内部排序算法有插入排序、希尔排序、选择排序、冒泡排序、归并排序、快速排序、堆排序、基数排序等。文章还解释了时间复杂度和稳定性的概念,并提供了相关的名词解释。 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 判断编码是否可立即解码的程序及电话号码一致性判断程序
    本文介绍了两个编程题目,一个是判断编码是否可立即解码的程序,另一个是判断电话号码一致性的程序。对于第一个题目,给出一组二进制编码,判断是否存在一个编码是另一个编码的前缀,如果不存在则称为可立即解码的编码。对于第二个题目,给出一些电话号码,判断是否存在一个号码是另一个号码的前缀,如果不存在则说明这些号码是一致的。两个题目的解法类似,都使用了树的数据结构来实现。 ... [详细]
  • quartus管脚分配后需要保存吗_嵌入式必须会的一些硬件面试题,要试一试吗?你过来呀!...
    1、下面是一些基本的数字电路知识问题,请简要回答之。(1)什么是Setup和Hold时间?答:SetupHoldTime用于测试芯片对输入 ... [详细]
author-avatar
直由飞翔_447
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有