批处理之家VBS系列教程
第二节 第一个程序“Hello World!”(by rat 2008-11-05)
一、源代码
Option Explicit
Dim strMessage
strMessage = “Hello World!”
MsgBox strMessage
二、分析说明
1、打开第一节提到的VBSEdit,把代码拷贝进去,保存为hi.vbs文件。运行它,就会看到可爱的信息框!我们的第一个程序问世了!
2、下面详细分析一下:
首先说明的是,代码是从上往下顺序解释执行的;代码不分大小写,尽管如此,大家还是应当坚持该大写时大写,该小写时小写,这样会大大增加代码的可读性。
1) 第1行:请打开第一节中提供给大家的“Microsoft Windows脚本技术.chm”,搜索“Option Explicit”(不包括引号),我们结合这部手册来学
习。可以看到它的意义是:强制要求显式声明脚本中的所有变量。作用在于:
a) 可用 Option Explicit避免拼错已存在的变量名称。使用 Option Explicit语句时,必须使用 Dim、Private、Public或 ReDim语句显式声明所
有变量。如果试图使用未经声明的变量名,则会出现错误。
b) 对于作用范围不清楚的变量,使用此语句可避免发生混淆。这涉及到变量的作用范围,而我们的进度还没到,暂且放一边先。现在知道
有这么回事就行了。
另外,需要补充说明的是,这句要么出现在第一行(即使是以后要学到的On Error Resume Next也不例外),要么就不出现。如果不出
现,变量strMessage的声明(即第2行的代码)则不是必需的,直接定义strMessage = “Hello World!”就行了,也就是说代码只剩最后两行了,
鉴于Option Explicit的作用,我们建议加上这句。
2) 第2行:看看手册——激活“目录”选项卡,依次展开目录“Windows脚本技术”、“VBScript”、“用户指南”和“VBScript基础”,查看
“VBScript变量”。 当然,大家还可以搜索关键字“Dim”。
我们得知,这句就是声明一个叫做strMessage的变量。
不难发现,这句并没有指定数据类型。我们查看手册上“VBScript基础”的“VBScript数据类型”,发现:VBScript里只有Variant这一种数
据类型,而Variant有不少子类型。为什么这么说?我们认为,一个变量在被赋值为某子类型后,还可被重新赋值为其它子类型。如在s=”abc”之
后还可以这样:s=123。但是,我们并不推荐这样做,一个变量最好只用一个子类型,只有一个含义,避免紊乱。
关于变量的命名规则,请查阅手册上“VBScript基础”的“VBScript编码约定”,我们推荐这样的约定(如果有兴趣,大家可以百度一下“匈牙
利命名法”、“骆驼式命名法”及“帕斯卡命名法”)。strMessage中的str是子类型string的缩写。
3) 第3行:给strMessage赋值,字符串类型。请参考手册,搜索“=”。请注意,“=”左右两侧各有一个空格,这并不是必需的,但可以增加代码
可读性,所以建议大家也这样用。
4) 第4行:搜索手册的“Msgbox”。关于函数的调用,请找到手册上“VBScript基础”的“VBScript过程”,在最下方的“在代码中使用 Sub 和
Function 过程”里有详尽的阐述。Msgbox就是VBScript内置的一个Function。其原型为:
MsgBox(prompt[, buttons][, title][, helpfile, context])
方括号“[]”中的参数不是必需的,两个参数之间用一个逗号和空格隔开——虽然空格不是必需的,但可增加代码可读性。
三、总结
我们引导大家简单地学习了VBScript的“变量”、“数据类型”、“编码约定”和函数的调用等知识。关于这些内容,大家可以常翻阅手册“Microsoft Windows脚本技术.chm”,温故而知新。
四、后记
其实本文中的源代码例子一句话就可以取代,即MsgBox “Hello World!”,但是为了规范大家的编程习惯,有意设计了那段代码。
文中如有纰漏,请不吝赐教!
五、习题
为了帮助大家巩固所学,特出了几道小题。
回帖答案符合要求者加分鼓励。对于每一道题,第一个答对的人加20PB,第二个10PB,第三个5PB,后面的都是3PB。
答题时,请先标明题号,再写出完整代码,代码用[code][/code]括住。
郑重强调:代码应当符合编码规范。
1、请将“Hello World!”信息框加上标题,标题为变量,值是你的用户名;加上信息消息图标;按钮为“是”和“否”。
2、与第1题差不多,只不过用户名要求用InputBox接收,再返回给标题变量。
3、请定义一个值为答题日期的日期子类型变量,然后转换成字符串,输出到信息框。
4、在第2题的基础上,再定义一个整数子类型变量,用于接收“Hello World!”信息框的返回值,然后转换成字符串,输出到新的信息框。