[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

批处理之家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 编辑 ]
2

评分人数

最好整个目录,不好找

TOP

回答一下,希望有更精彩的教程出来

Option Explicit
Dim strMessage, strTitle, dtmToday, strToday, intResult
strMessage = "Hello World!"
'Qustion1
'strTitle = "askyer"

'Qustion2
strTitle = InputBox("请输入用户名:")
intResult = MsgBox (strMessage, vbYesNo,strTitle)

'Qustion4
MsgBox intResult

'Qustion3
dtmToday = Date
strToday = CStr(dtmToday)
MsgBox strToday
1

评分人数

    • rat: 答案不完整,加油PB + 10

TOP

谢谢rat版主的指导,我刚开始接触VBS,以后多多指教!
按照您的第3题的改法,我第4题也可以像下面这样改了:
  1. Option Explicit
  2. Dim strMessage,  strHead,  intReturn
  3. strMessage = "Hello World!"
  4. strHead = InputBox("请输入你的用户名:",  "keen")
  5. intReturn = MsgBox (strMessage,  68,  strHead)
  6. MsgBox CStr(intReturn),  0,  strHead
复制代码

[ 本帖最后由 keen 于 2009-5-23 18:35 编辑 ]
(*^_^*)

TOP

回复 23楼 的帖子

第3题:
  1. Option Explicit
  2. Dim dtmMessage
  3. dtmMessage = #2009-5-22#
  4. MsgBox CStr(dtmMessage)
复制代码
第4题返回值的变量名最好改作 strReturn 或 strResult 等。

TOP

1.
  1. Option Explicit
  2. Dim strMessage,  strHead
  3. strMessage = "Hello World!"
  4. strHead = "keen"
  5. MsgBox strMessage,  68,  strHead
复制代码
2.
  1. Option Explicit
  2. Dim strMessage,  strHead
  3. strMessage = "Hello World!"
  4. strHead = InputBox("请输入你的用户名:",  "keen")
  5. MsgBox strMessage,  68,  strHead
复制代码
3.
  1. Option Explicit
  2. Dim dtmMessage
  3. dtmMessage = #2009-5-21#
  4. MsgBox CStr(dtmMessage)
复制代码
4.
  1. Option Explicit
  2. Dim strMessage,  strHead,  intMessage,  strXianshi
  3. strMessage = "Hello World!"
  4. strHead = InputBox("请输入你的用户名:",  "keen")
  5. intMessage = MsgBox (strMessage,  68,  strHead)
  6. strXianshi = CStr(intMessage)
  7. MsgBox strXianshi,  0,  strHead
复制代码

[ 本帖最后由 keen 于 2009-5-23 18:37 编辑 ]
1

评分人数

(*^_^*)

TOP

回复 21楼 的帖子

可以发短消息给楼主,要求他修改。
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

版主你误导我
最顶上的
strMessage = “Hello World!”
你用了全角,害我的执行不了以为要编译,差点放弃了

TOP

了解,谢谢兄的指导!

TOP

回复 18楼 的帖子

就这段而言,应当写作:
Dim intReturn, strReturn
intReturn = MsgBox(strMessage, vbInformation + vbYesNo, strTitle)
strReturn = CStr(intReturn)
'最好把68用vbInformation + vbYesNo来表示,更可读

TOP

是否这样改?
  1. strValue = cstr(VarType(MsgBox (strMessage,68,strTitle)))
复制代码

TOP

回复 16楼 的帖子

不是的,再通过cstr来转换返回值

TOP

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

兄的意思是再通过cstr来转换变量类型?

TOP

回复 13、14楼 的帖子:
请查看《Microsoft Windows脚本技术》手册上的“VBScript基础”的“VBScript数据类型”和“VBScript编码约定”


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

[ 本帖最后由 rat 于 2008-11-9 23:18 编辑 ]

TOP

题四
  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的变量类型很复杂

TOP

返回列表