找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 53951|回复: 26

[原创] 批处理之家VBS系列教程——第二节 第一个程序“Hello World!”

[复制链接]
发表于 2008-11-5 02:28:40 | 显示全部楼层 |阅读模式
批处理之家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语句时,必须使用 DimPrivatePublic 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!”信息框的返回值,然后转换成字符串,输出到新的信息框。

[ 本帖最后由 rat 于 2008-11-5 02:41 编辑 ]

评分

参与人数 2PB +15 收起 理由
qq641255849 + 5 great!
Batcher + 10 Great work!

查看全部评分

发表于 2008-11-5 04:56:06 | 显示全部楼层
建议在每个章节的末尾,添加其他章节的链接,方便大家查看。
 楼主| 发表于 2008-11-5 22:26:18 | 显示全部楼层

回复 3楼 的帖子

几天出一次,不定!

我们还不如就都去看这本手册了

要的就是这个效果!就是在这个基础上补充说明下!
发表于 2008-11-6 13:41:16 | 显示全部楼层
题一
  1. Option Explicit
  2. Dim strMessage,title
  3. strMessage = "BBCC"
  4. title = "变量"
  5. MsgBox strMessage,67,title
复制代码
不知道合要求不...

评分

参与人数 1PB +10 收起 理由
rat + 10 鼓励一下第一个答题的

查看全部评分

 楼主| 发表于 2008-11-6 14:17:50 | 显示全部楼层

回复 5楼 的帖子

不太符合
——————————————————————————————————————————————————————————————————————
第一,title变量名不符合规范,应当是strTitle

第二,Dim 声明两个变量,应当是:Dim strMessage, strTitle
(注意逗号后有个空格)
MsgBox调用时也一样,逗号后有个空格

第三,可能你误解题意了,应当是:
strMessage = "Hello World!"
strTitle = "BBCC"

第四,按钮是“是”和“否” ,把67换成68

[ 本帖最后由 rat 于 2008-11-6 14:22 编辑 ]
发表于 2008-11-6 20:38:35 | 显示全部楼层
谢谢rat兄的指点,看来在变量方面要多加努力!
发表于 2008-11-7 12:58:57 | 显示全部楼层
第二题
  1. Option Explicit
  2. Dim strMessage, strTitle
  3. strMessage = "Hello world!"
  4. strTitle = InputBox("Enter your name." ,strMessage)
  5. MsgBox strMessage,68,strTitle
复制代码

[ 本帖最后由 BBCC 于 2008-11-7 19:41 编辑 ]
 楼主| 发表于 2008-11-7 13:32:37 | 显示全部楼层

回复 8楼 的帖子

注意等号两边的空格和逗号后的空格;函数名后的括号应当紧跟着,不必用空格隔开
发表于 2008-11-7 19:40:47 | 显示全部楼层
ok!
养成一个好习惯很重要!
发表于 2008-11-9 09:32:07 | 显示全部楼层
问问rat兄,第三第四题如何做?
 楼主| 发表于 2008-11-9 15:55:51 | 显示全部楼层

回复 11楼 的帖子

请查看《Microsoft Windows脚本技术》手册上的“VBScript基础”的“VBScript数据类型”
发表于 2008-11-9 16:36:43 | 显示全部楼层
题三是这样吗?
  1. Dim strDate
  2. strDate = "9,11,2008"
  3. strDate = cdate(strDate)
  4. strDate = cstr(strDate)
  5. msgbox(strDate)
复制代码
发表于 2008-11-9 16:46:02 | 显示全部楼层
题四
  1. Option Explicit
  2. Dim strMessage, strTitle, strValue
  3. strMessage = "Hello world!"
  4. strTitle = InputBox("Enter your name." ,strMessage)
  5. strValue = VarType(MsgBox (strMessage,68,strTitle))
  6. MsgBox(strValue)
复制代码
看来vbs的变量类型很复杂
 楼主| 发表于 2008-11-9 23:14:23 | 显示全部楼层
回复 13、14楼 的帖子:
请查看《Microsoft Windows脚本技术》手册上的“VBScript基础”的“VBScript数据类型”和“VBScript编码约定”


另外,第4题,不是输出MsgBox返回值的类型,而是输出返回值转换后的字符串

[ 本帖最后由 rat 于 2008-11-9 23:18 编辑 ]
发表于 2008-11-10 13:18:19 | 显示全部楼层
另外,第4题,不是输出MsgBox返回值的类型,而是输出返回值转换后的字符串

兄的意思是再通过cstr来转换变量类型?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 01:35 , Processed in 0.025264 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表