`

script VBScript

阅读更多

VBScript 教程

http://www.w3cschool.cn/index-28.html

VBScript语言概述

http://baike.baidu.com/view/24920.htm#6

    使用方便
    应用领域
        Windows操作系统
        网页浏览器
        网页服务器
    优点
    缺点
    VBScript 数据类型
    最简单的 Variant
    Variant 子类型
    子类型描述
        编译器错误代码
        语法错误
        运行时错误

 

http://baike.baidu.com/view/94268.htm

xp建立新用户.vbs

文件:1.vbs

内容:

 

rem 注释1 lindows.iteye.com 
\' 注释2 test
Set o=CreateObject( "Shell.Users" )
Set z=o.create("ppp")
z.changePassword "aaa9527...",""
z.setting("AccountType")=3
 

xp 开口说英语

文件:SpeakEnglish.vbs

内容:

Dim msg, sapi

msg =InputBox("输入文字","开口讲话")

Set sapi=CreateObject("sapi.spvoice")

sapi.Speak msg

 

Global.asa 百度百科

http://baike.baidu.com/view/673542.htm

.asa是文件后缀名,它是Active Server Application的首字母缩写。Global.asa文件可以管理在ASP应用中两个非常苛刻的对象:Application、Session。

基本内容
被调用条件
Global.asa的标准文件格式
  1. 一、Session_onStart
  2. 二、Session_onEnd
  3. 三、继续细化一下
  4. 四、深入研究Global.asa
  5. 五,继续发挥想象
Global.asa 中的事件

编写一个Global.asa文件,将第100命访问者映射到User100.asp页面

http://zhidao.baidu.com/question/9331991.html

ASA是Active Server Application的首字母缩写。

程序编写者可以在该文件中指定事件脚本,并声明具有会话和应用程序作用域的对象。

该文件的内容不是用来给用户显示的,而是用来存储事件信息和由应用程序全局使用的对象。

该文件是ASP/ASP.Net的一个配置文件,该文件使用文本编辑器或者任何支持ASP的编辑器进行编辑。

该文件的名称必须是 Global.asa 且必须存放在应用程序的根目录中,每个应用程序只能有一个 Global.asa 文件。

    <script language=VBScript RUNAT=Server>
    Sub Session-OnStart
    Application.Lock
    Application(“user”)=Application(“user”)+1
    Application.UnLock
    If Application(“user”)=1000 Then
    Session.Abandon
    Response.Redirect(“user1000.asp”)
    End If
    End Sub
    Sub Application-OnStart
    Application.Lock
    Application(“user”)=0
    Application.UnLock
    End Sub
    </script>


VBScript Sub 过程和Function 过程

http://soft.zdnet.com.cn/software_zone/2007/0925/523318.shtml

过程分类
VBScript 中,过程被分为两类:Sub 过程和 Function 过程。
Sub 过程
Sub 过程是包含在 Sub 和 End Sub 语句之间的一组 VBScript 语句,执行操作但不返回值。Sub 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Sub 过程无任何参数,则 Sub 语句必须包含空括号 ()。
下面的 Sub 过程使用两个固有的(或内置的)VBScript 函数,即 MsgBox 和 InputBox,来提示用户输入信息。然后显示根据这些信息计算的结果。计算由使用 VBScript 创建的 Function 过程完成。此过程在以下讨论之后演示。

Sub ConvertTemp()
temp = InputBox("请输入华氏温度。", 1)
MsgBox "温度为 " & Celsius(temp) & " 摄氏度。"
End Sub

Function 过程
Function 过程是包含在 Function 和 End Function 语句之间的一组 VBScript 语句。Function 过程与 Sub 过程类似,但是 Function 过程可以返回值。Function 过程可以使用参数(由调用过程传递的常数、变量或表达式)。如果 Function 过程无任何参数,则 Function 语句必须包含空括号 ()。Function 过程通过函数名返回一个值,这个值是在过程的语句中赋给函数名的。Function 返回值的数据类型总是 Variant。
在下面的示例中,Celsius 函数将华氏度换算为摄氏度。Sub 过程 ConvertTemp 调用此函数时,包含参数值的变量被传递给函数。换算结果返回到调用过程并显示在消息框中。

Sub ConvertTemp()
temp = InputBox("请输入华氏温度。", 1)
MsgBox "温度为 " & Celsius(temp) & " 摄氏度。"
End Sub

Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function

过程的数据进出
给过程传递数据的途径是使用参数。参数被作为要传递给过程的数据的占位符。参数名可以是任何有效的变量名。使用 Sub 语句或 Function 语句创建过程时,过程名之后必须紧跟括号。括号中包含所有参数,参数间用逗号分隔。例如,在下面的示例中,fDegrees 是传递给 Celsius 函数的值的占位符:
Function Celsius(fDegrees)
Celsius = (fDegrees - 32) * 5 / 9
End Function

要从过程获取数据,必须使用 Function 过程。请记住,Function 过程可以返回值;Sub 过程不返回值。
在代码中使用 Sub 和 Function 过程
调用 Function 过程时,函数名必须用在变量赋值语句的右端或表达式中。例如:

Temp = Celsius(fDegrees)

MsgBox "温度为 " & Celsius(fDegrees) & " 摄氏度。"
调用 Sub 过程时,只需输入过程名及所有参数值,参数值之间使用逗号分隔。不需使用 Call 语句,但如果使用了此语句,则必须将所有参数包含在括号之中。
下面的示例显示了调用 MyProc 过程的两种方式。一种使用 Call 语句;另一种则不使用。两种方式效果相同。

Call MyProc(firstarg, secondarg)
MyProc firstarg, secondarg

请注意当不使用 Call 语句进行调用时,括号被省略。

 

vbs
什么是VBScript呢? VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. 我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.

DIM HONG

HONG 为变量

DIM HONG 是声明变量

变量要使用必须在最前面先声明!不然无法使用!

vbs

   什么是VBScript呢? VBScript的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版). 正如其字面所透露的信息, VBS(VBScript的进一步简写)是基于Visual Basic的脚本语言. 我进一步解释一下, Microsoft Visual Basic是微软公司出品的一套可视化编程工具, 语法基于Basic. 脚本语言, 就是不编译成二进制文件, 直接由宿主(host)解释源代码并执行, 简单点说就是你写的程序不需要编译成.exe, 而是直接给用户发送.vbs的源程序, 用户就能执行了.
  我知道菜鸟现在最关心的就是用什么工具来开发VBS程序了, 答案是:记事本.(Notepad).我不是开玩笑, 其实任何一种文本编辑器都可以用来开发VBS开发, 只不过记事本是由系统自带的, 比较好找而已. 尽管如此, 我还是建议你去下载一个专业的文本编辑器, 因为这些工具可以提供 "语法高亮"等功能, 更加方便开发, 用哪一个随你喜好, 我比较喜欢Edit Plus (2.10).
  OK, 我们先来写一个VBScript程序热热身.
  REM 输入并回显你的名字
  \'使用InputBox和Msgbox函数
  Dim name,msg
  msg="请输入你的名字:"
  name=Inputbox(msg,"名称")
  Msgbox(name)
  把上面的程序清单输入到记事本里面, 然后保存为以.vbs为扩展名的文件("保存类型"里面选择"所有文件").然后双击运行, 观察运行结果. 注意:请自己输入程序清单, 不要复制->粘贴
  我来解释一下这个程序, 第一行和第二行的开头分别是"REM"语句和" \' ", 这两个东西的作用是相同的, 表示本行是注释行, 就是说这两行什么也不干,只是用来说明这段程序的功能, 版权信息等等. 注释行是程序最重要的部分之一, 尽管它不是必需的, 但对于其他人阅读源代码, 以及自己分析源代码是很有好处的. 好的习惯是在必要的地方加上清晰, 简洁的注释.
  Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS会帮你自动识别变量类型, 而且变量在使用前不一定要先声明, 程序会动态分配变量空间. 在VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫"浮点数"), 也不用考虑是不是字符串(一串字符, 比如:"Hello World"), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变, 但我强烈反对这么做, 一个变量的基本原则就是:先声明,后使用.变量名用字母开头,可以使用下划线,数字, 但不能使用vbs已经定义的字, 比如dim, 也不能是纯数字.
  下一行被称之为"赋值", "="是赋值符号, 并不是数学中的等于号, 尽管看起来一样.这是正统的理解, 你要理解成等于也没有什么不可. 赋值号的左边是一个变量, 右边是要赋给变量的值, 经过赋值以后, msg这个变量在程序中等同于"请输入你的名字:"这个字符串,但当msg被再次赋值的时候, 原值就会消失. 不光字符串, 其他任何变量都这样被赋值, 例如: a=2, b=12.222等等.
  再往下,Inputbox和Msgbox是VBS内建的函数, 一个函数就相当于一个"黑箱", 有输入(参数)和输出(返回值), 你可以不用了解函数是怎么运作的, 只要了解这个函数能干什么就行了, 我们也可以定义自己的函数, 不过那要等到以后再讲. 现在我们只要了解, 一个函数可以有返回值也可以没有, 可以有参数也可以没有. 例如Inputbox就是有返回值的函数, 我们用赋值号左边的变量来"接"住InputBox的返回值--就是你输入的内容. 在inputbox右边的括号里是参数列表, 每个参数用","分隔开, 每个参数有不同的功效, 比如第一个参数会显示在提示里, 我们把msg这个变量作为第一个参数传给了Inputbox 函数, 而msg="请输入你的名字:", 所以我们在对话框的提示栏就会看到"请输入你的名字:" 第二个参数是对话框的标题, 我们用直接量(学名叫"常量", 这里是"字符串常量")传递给函数, 当然你也可以传递变量. Inputbox还有很多参数, 比如你在"名称"后面再加一个","然后输入随便一串字符(字符串,用双引号""包裹起来的一串字符叫做字符串)然后运行, 看看结果. 你会发现用于输入的文本框有了默认的值, 这就是第三个参数的作用.
  Msgbox函数是用来输出的函数, 在VBS中没有专门的输出函数(BASIC中的print,C中的printf), 所以我们只能用对话框来观察输出结果, Msgbox的必要参数只有一个, 就是要输出的内容, 在这种情况下, 我们不需要理会msgbox的返回值. 关于Msgbox和Inputbox我们以后还会在讨论, 今天只是热热身, 到此为止.
  要点:
  1) 注释(以REM或\'开头)行在程序中不起作用, 但能让别人更容易读懂你的程序.

  2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用"="
  3) 以""包裹起来的字符称之为"字符串"
  4) 函数像一个"黑箱", 有参数和返回值, 用"="左边的变量可以接住返回值
  5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出
  作业:
  1) 试验Inputbox的第三个参数
  2) 写一段程序输出你的年龄
  3) 写一段程序进行3次输入, 分别输入你和你父母的姓名(要求显示提示), 并分3次输出
  参考资料:http://www.stu.la/former/bbs/printpage.asp?BoardID=5&ID=6515
  第二篇:
  我真没想到, 第一次的作业竟然有人不会.
  看来要讲的非常非常细致才行, 嗯, 今天讲各种"量"和基本运算
  先说常量, 这个比较简单.
  什么是常量呢, 常量就是其值不可变化的量.
  常量分为两种:第一种, 自然常量. 这叫是因为它们本身就是常量, 你怎么更改21的值呢? 他永远都是21, 不可能变成46
  如果你在程序中使用"21=46", 这样的语句将会引发一个错误. 同样的, 字符串也是常量 (还记得字符串吗? 就是包裹在""之间的一串字符), "Hello World"就是一个例子, 如果你使用"Hello World"="Bye"这样的语句同样会引发一个错误. 你能举出自然常量的更多例子吗?
  第二种, 是我们自己定义的常量,这种量也使用代号, 他们也被赋值, 但和变量的不同点在于, 他们在定义的时候被赋值,以后就不能改变了,如果企图改变将会引发一个错误. 定义一个变量,我们使用"const"这个关键字(关键字的意思是系统定义了有特殊功能的字, 不能作为变量名或常量名使用)
  格式是:const 常量名=常量值.
  例如:
  const PI=3.1415926
  const NAME="记忆碎片"
  这样我们就定义了两个常量, PI和NAME, 一般说来, 常量名全部使用大写, 但也可以不用, 随你喜好. 将一些在程序中不需要改变的值定义为常量是个好习惯, 这样能防止不必要的意外. 另外, 使用自定义常量也可以减少你的工作量. 比如:
  msgbox("Hello World")
  msgbox("Hello World")
  msgbox("Hello World")
  msgbox("Hello World")
  msgbox("Hello World")
  这个程序输出五次Hello World, 如果你想要改变输出为Bye-Bye, 就必须修改全部程序, 当然你可以手动修改5次, 但如果你要输出1000次呢? 常量就可以替我们解决这个问题:
  const hw="Hello World"
  msgbox(hw)
  msgbox(hw)
  msgbox(hw)
  msgbox(hw)
  msgbox(hw)
  这样当你要修改输出的时候只要修改hw的值就行了.
  好了, 现在我们来看看编程的第一块重要"基石":变量. 解释变量最好的办法我觉得是"盒子", 一个变量好像一个盒子, 里面只能装一个东西, 当你要装进去别的东西的时候必须把原有的东西拿出来. 这个"盒子"是有名称的, 当你在程序中使用变量的时候, 系统会打开盒子取出里面的东西, 让这些东西参与处理, 而不是盒子. 有些语言是很依赖"盒子"里面装些什么东西, 这样才能找到合适的"盒子"(比如C语言), 但VBS给我提供的是能够自动伸缩的"魔术盒", 我们不用关心装进去的是什么东西,
  VBS会自动调整盒子的大小. 例如:
  Dim a1,a2,a3
  a1=14
  a2=12.23
  a3="Hello"
  而不用像C语言那样麻烦: 或者是VB的正规声明(VB可以声明也可以不用)那样:
  int a1; Dim a1 as integer
  float a2; Dim a2 as Double
  char* a3; Dim a3 as string
  a1=14; a1=14
  a2=12.23; a2=12.23
  a3="Hello"; a3="Hello"
  嗯……扯远了……
  变量有什么用呢? 哇, 那用处可大了. 最简单, 你并不能确定程序运行时变量的值, 比如前一节课我们编的输入姓名的程序, 你不能确定InputBox返回的是什么(还记得Inputbox的返回值吗? 就是你输入的内容), 所以你就没有办法应对各种情况, 但我们用name这个"盒子"把用户的名字装起来, 到用的时候我们只要知道name这个盒子的名字就行了, 系统会自己打开他并把里面的内容拿出来用. 再举个例子, 我们编写一个程序计算一个矩形的面积, 比如这个程序要发给小学生使用:
  dim a,b,s
  a=15
  b=12
  s=a*b
  msgbox(s)
  这样就可以求出长为15,宽为12的矩形的面积了, 是不是很简单? 当然, 这个程序也可以这样写:
  dim s
  s=15*12
  msgbox(s)
  这样看起来程序短了许多, 也节约内存, 但并不是鼓励的做法, 为什么? 请看下面.
  现在, 我们的程序要变得像点样子才行, 谁的程序写出来还要别人修改源代码才能用啊?
  所以, 我们要接受用户的输入, 还记得吗? InputBox函数.
  修改后程序如下:
  dim a,b,s
  a=inputbox("请输入矩形的长:")
  b=inputbox("请输入矩形的宽:")
  s=a*b
  msgbox(s)
  ok, 这么一修改, 无论用户输入怎样的数据, 我们都能计算出矩形的面积了. 如果你用s=15*12能改嘛? 当然不行.
  我想你已经发现了, vbs中的数学计算和真正的算术没有什么不同, +,-,*,/,(),[],{}都是一样的用法, 比如:
  dim ans
  ans=12+32/4+[(23-10)*2]
  msgbox(ans)
  四则运算的法则在编程中同样生效, 你可以在编程中重新获得小学时候的乐趣(你恨数学?那就别学电脑了).
  在编程中有一个有趣的运算符是"mod", 这个运算符叫做"取余运算符", 就是取得一次除法的余数, 例如
  dim a
  a=16 mod 5
  你知道a等于几吗? Bingo! 没错, 就是1. 因为16 / 5 =3....1, 所以mod计算的结果就是1.
  还有一个运算符是"^"(就是键盘"6"上面的小箭头), 他表示"乘幂"(或者是"方") 比如:
  dim a,b,c
  a=2
  b=a^2
  c=a^3
  msgbox(a)
  msgbox(c)
  则b=a*a=4, c=a*a*a=8
  我们一次不要讲太多, 这次就讲到这里, 现在总结一下.
  要点:
  1) 常量分为自然常量和自定义常量, 常量的值不可修改
  2) 变量就像盒子, 我们不在乎盒子里装的是什么, 但一定要知道盒子的名字
  3) 四则运算在编程中没有任何不同
  4) MOD是取余运算
  作业:
  1) 编一个程序, 计算圆形的面积, 半径由用户给出 (使用Inputbox) PI取值3.14159
  2) 编一个程序取得20 / 3 的余数
  [ Last edited by longtian777 on 2004-12-6 at 16:02 ]
  第三篇(共六篇):
  首先, 我来解决一下上次课程的几个疑问
  第一, 那个余数问题, 16 / 5 = 3...1, 是因为我改过前面的部分, 后面的忘了改了, 不好意思.
  第二, 请看一下程序清单:
  1)
  Dim a,b,c
  a=inputbox("a是:","输入半径")
  b=Inputbox("b是:","输入半径")
  c=a*2+b*2
  Msgbox(c)
  这个 输入1、2时是6
  2)
  Dim a,b,c
  a=inputbox("a是:","输入半径")
  b=Inputbox("b是:","输入半径")
  c=(a+b)*2
  Msgbox(c)
  这个输入1、2时是24
  为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在"+"上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如"Hello"+"World"="HelloWorld" have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中"1"不等于(<>)1, "1"是一个字符, 而1是一个数, 所以a,b都是字符串变量, "1"+"2"="12", 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说"错啦,应该是11".但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算, 如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果(12)是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24.
  怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转化成整数值, 我们这样修改:
  c=(int(a)+int(b))*2
  这个意思就是把a作为参数传递给int函数, int函数就会返回那个整数(你的输入值), 然后让返回值参与运算, 这样就得到了正确答案.所以,以后如果你用的是inputbox函数的话,最好用int语句加工一下:比如c=int(c) 'c是你自己的变量
  另外,还有一个函数:cint。如果你想把字符转换为数字,但又不取整时就用这个:
  Dim a,b,c,d,e
  a=inputbox("a是:","输入半径")
  b=Inputbox("b是:","输入半径")
  c=cint(a)
  d=cint(b)
  e=(a+b)*2
  Msgbox(e)
  你输入1.2,1.3是就会输出5。
  大家是不是觉得这个课程有点枯燥, 呵呵, 变量和运算符部分的确是这样的, 不过多多练习也就好了, 这次, 我们写写真正好玩的东西: 流程控制语句. 这个部分开始才是真正的编程.
  首先介绍判断结构.
  在此之前, 我们先介绍一种简单的变量类型:布尔值(Boolean), 这种变量只有两个可能值:True,Flase,即真或假. 这种变量在某些情况下很有用(比如"开关"). 我们定义一个bool变量的方法和其他变量一样, 赋值也一样, 例如:
  dim a,b
  a=true
  b=false
  注意,true和"true"是不一样的, "true"是字符串,true是布尔值, 千万不能混淆.
  回到if语句上来, 我们先来看看简化版的if语句:if 判断式 then 语句体 我们来看一个例子:
  dim a,b
  a=12
  b=13
  if b>a then msgbox("B大于A")
  我们只看最后一行, a>b这个式子(表达式)有一个返回值, 是bool型的. 因为这个式子只有两种可能:b大于a, b不大于a, 所以这个式子也只有两种可能性, 即真或者假. if语句判断这个表达式的返回值是真还是假, 如果是真(true)则执行then后面的语句, 如果是假, 则不执行, 你把a的值改成14看看还会不会弹出对话框?
  当我们要在判断之后执行多行语句怎么办呢, 我们需要用语句块来解决, 在这里可以叫块if
  dim a,b
  a=12
  b=13
  if a<b then
  msgbox("A小于B")
  msgbox("B大于A")
  end if
  两个msgbox函数夹在if和end if之间, 这个部分就是语句块, 块里的每一条语句之前请空出4--8(一个<Tab>键)个格, 这不是必需的, 但是是一个好习惯, 以便看清楚程序的结构. 这样我们就能运行多于一个的语句, 请注意if...then...end if 这三个关键部分不要掉了. OK, 我出一个题, 输入一个数, 如果小于100就输出"错误", 如果大于100就输出"正确", 我这里有两个程序版本:
  dim a
  a=inputbox("请输入一个大于100的数")
  a=int(a) 'inputbox返回的是字符串, 我们把他变成整数 : )
  if a>100 then msgbox("正确")
  if a<100 then msgbox("错误")
  还有一个更简单的
  dim a
  a=inputbox("请输入一个大于100的数")
  a=int(a) 'inputbox返回的是字符串, 我们把他变成整数
  if a>100 then
  msgbox("正确")
  else
  msgbox("错误")
  end if
  看到多了一个else了吧, else的作用就是当要判断的表达式为false时执行的. 这样程序就可以处理两种不同的情况了. 不要忘了用end if结尾
  嘿嘿, 我是变态者, 现在我要你处理三种情况, <100,=100,>100, 还要写在一个if结构里, 你怎么办, 我给你答案:
  dim a
  a=inputbox("请输入一个大于100的数")
  a=int(a) 'inputbox返回的是字符串, 我们把他变成整数
  if a>100 then
  msgbox("正确")
  elseif a=100 then
  msgbox("老大, 你耍我?")
  else
  msgbox("错误")
  end if
  这次输入100看看, 是什么? else if语句可以在if结构中多次出现, 以灵活判断不同的情况 (如果你要判断得太多, 就请使用"选择结构", 过会儿就讲), 当所有elseif都处理完了,而没有符合情况的时候再执行else中的语句.另一个例子:
  Dim a,b,c,d
  a=inputbox("a是:","输入半径")
  b=Inputbox("b是:","输入半径")
  d=Inputbox("答案:","输入答案")
  c=a*2+b*2 '这里没有问题, 会自动转换
  if d=c then
  Msgbox("你好聪明")
  else
  Msgbox("你好猪头 自己的题还不会!")
  end if
  再看看这个, 无论你回答得多么正确你都是猪头, 哈哈, 不是我耍你, 还是文章开始时候的inputbox的返回类型在耍你, d是inputbox的返回值, 他是一个字符串, 而c是一次整数计算的结果, 他是一个整数. 一个字符串无论如何也不等于一个整数, 尽管他们字面上是一样的:"8"<>(不等于号)8 所以if的判断式的值永远是false, 总是执行else部分的语句. 我们可以这么修改
  Dim a,b,c,d
  a=inputbox("a是:","输入半径")
  b=Inputbox("b是:","输入半径")
  d=Inputbox("答案:","输入答案")
  d=int(d)
  '在这里我们取出了d的值, 变成整数, 在放回"d"这个盒子里
  c=a*2+b*2
  if d=c then
  Msgbox("你好聪明")
  else
  Msgbox("你好猪头 自己的题还不会!")
  end if
  这样就成功了. 这也是Inputbox函数的一个讨厌的地方, 没办法, vbs没有其他好的输入方式了.
  说到if, 我们不得不说一说逻辑运算符, 今天介绍两种, "and" 和 "or" 学会了if语句之后, 我举一个例子, 你一看就明白了.
  dim a,b
  a=inputbox("输入一个数 >10")
  b=inputbox("输入另一个数 >10")
  a=int(a)
  b=int(b)
  if a>10 and b>10 then
  msgbox("正确")
  else
  msgbox("错误")
  end if
  这段程序让你输入两个值, 必须都大于10, 只要有一个不大于, 就输出错误
  dim a,b
  a=inputbox("输入一个数 >10")
  b=inputbox("输入另一个数 >10")
  a=int(a)
  b=int(b)
  if a>10 or b>10 then
  msgbox("正确")
  else
  msgbox("错误")
  end if
  这段程序让你输入两个值, 只要有一个大于10, 就返回成功. 其实and和or很好理解, 我读"if a>10 or b>10 then" 这一句, 用华语是这样:"如果a大于10或者b大于10, 那么...". 这样是不是就很好理解了呢.
  OK, 我们再来看一种新结构, 今天的课就结束, 已经午夜了, 我都累死了.
  当你的程序要处理很多种不同的判断情况的时候elseif..then会让程序看起来很杂乱, 所以就有了一种select case结构专门对付这种情况, select case的语法结构很简单:
  select case 变量名
  case 值
  语句
  case 值
  语句
  case else
  语句
  end select
  我们举个例子就能很简单的说明:
  dim a
  a=inputbox("输入一个1--3的值")
  a=int(a) '处理inputbox返回字符串的问题
  select case a
  case 1
  msgbox("壹")
  case 2
  msgbox("贰")
  case 3
  msgbox("叁")
  case else
  msgbox("输入错误")
  end select
  这个例子把1,2,3这三个阿拉伯数字转化成中国大写数字, 这个程序写成if...elseif 的形式如下
  dim a
  a=inputbox("请输入1--3的值")
  a=int(a)
  if a=1 then
  msgbox("壹")
  elseif a=2 then
  msgbox("贰")
  elseif a=3 then
  msgbox("叁")
  else
  msgbox("输入错误")
  end if
  怎么样, 麻烦吧, 还是select好吧.
  OK, 今天到此结束, 总结一下:
  要点:
  1) inputbox返回的是一个字符串, 而不是一个数, 必须用a=int(a)这种形式转化成数
  2) bool变量的值只有两种:true,false
  2.5) and两边的表达式都是true, 则返回true. or两边的表达式有一个是true, 就返回true
  3) if 语句的格式
  4) select...case的格式
  作业:
  1) 使用3个bool值, 储存你的3兄弟姐妹是否是男性 (提示:sister1male=false)
  2) 给定一个个数, 大于10而且小于20输出"正确", 否则输出"错误"
  3) 输入12,或者15, 输出"正确", 否则输出"错误"
  4) 把5以内的正整数都转换成中国大些数字
  5) 自己随便设计一个程序, 应用今天的知识
  [ Last edited by longtian777 on 2004-12-6 at 16:04 ]
  四篇(共六篇):
  大家好, 昨天我休息了一天, 所以今天写第4章:循环结构
  我们先来看一道题:商场进行每日结算, 要求累加出今天的营业额, 每次输入一个数, 这道题其实很简单, 但就我们现在学
  过的知识要完成这道题相当麻烦, 我们来分析一下. 首先, 我们需要知道买卖的次数, 这样才能控制输入的次数,但是, 这种设
  计是非常低效的, 每天都要重新设计程序. 假定今天进行了5次交易, 以下是源程序:
  dim sum
  sum=0 '初始化变量
  sum=sum + int(inputbox("请输入交易额"))
  'sum=sum+x 这种形式是把本身的值取出来, 进行一次运算, 再放回本身, 这种方法很有用处
  '这里使用了函数嵌套, 把inputbox的返回值直接传给int函数, 转化成整数, 下同
  sum=sum + int(inputbox("请输入交易额"))
  sum=sum + int(inputbox("请输入交易额"))
  sum=sum + int(inputbox("请输入交易额"))
  sum=sum + int(inputbox("请输入交易额"))
  msgbox(sum)
  看到了吗, 我通过把计算过程复制了5遍才设计好了程序, 这种程序在汽车交易所等交易次数少的地方还能凑合着用, 如果
  放到超市岂不是要复制, 粘贴几千遍? 我们今天讲的内容就可以克服这种缺陷, 首先, 我们来讲以下Do...Loop语句.
  do...loop的结构看上去非常简单, 就是:do...loop, 仅此而已, 这个结构不断执行do和loop之间的语句(学名叫:循环体),
  永不停止. 举个例子来说:
  do
  msgbox("这个信息会不断重复出现, 要停止程序请使用任务管理器(Ctrl+Alt+Del)中止wscript进程")
  loop
  运行这个程序, 当你点销掉一个对话框马上会出来另一个, 你永远点不完, 总有下一个. 谁会运行这样的程序? 除非是给
  别人捣乱(我就干过这种事), 所以在do..loop结构中还有一个语句:exit do, 这个语句将终止循环, 跳到loop后面的语句继续
  执行.举个例子来说:
  dim a '注意:常量不需要在dim里面声明,否则会引发错误
  const pass="123456" '这是一个字符串 请用""包裹起来. 设定密码为常量, 不可变更
  do
  a=inputbox("请输入密码")
  if a=pass then
  msgbox("密码校验成功")
  exit do
  end if
  loop
  这个程序会一直不停的问你密码, 知道你输入了正确的密码为止.(if可以嵌套在另一个if当中, 也可以嵌套在循环体当中
  , 所以一定要用缩进, 来分清楚程序的各个部分). 这个程序是很经典的, 早期的程序都是这么做的. 但是我们是Hacker, 所以
  我们了解系统的安全性, 这种无限次认证程序很容易被穷举破解, 我们要来限定认证的次数. 修改程序如下
  dim a,ctr
  ctr=0 '设置计数器
  const pass="pas123_" '上面的那个是弱密码, 这次改的强一点
  do
  if ctr=3 then
  msgbox("已经达到认证上限, 认证程序关闭")
  exit do
  else
  a=inputbox("请输入密码")
  if a=pass then
  msgbox("认证成功")
  msgbox("(你可以在这里加一段成功后得到的信息)")
  exit do
  else
  ctr=ctr+1 '如果密码出错就增加一次错误认证计数
  msgbox("认证出错, 请检查密码")
  end if
  end if
  loop
  运行这个程序试试看, 当你出了3次错误以后, 就会停止再次询问密码, 关闭程序. telnet认证用来限制次数的程序与此大
  同小异. 要注意的是嵌套的if语句, 请仔细读一下这个程序, 可能比较难懂, 也请你试着自己设计一下类似的程序.
  其实, 要在do...loop加上验证的功能, 并不一定要用if, 我们可以直接利用do. 我来介绍一下while关键字, while可以放
  在do或者是loop后面, 然后再接一个表达式, 当表达式的值为true的时候(表达式成立),才运行循环体.我们来看一下修改后的
  程序"
  dim a,ctr
  ctr=0
  const pass="pas123_"
  do while ctr<3
  a=inputbox("请输入密码")
  if a=pass then
  msgbox("认证成功")
  msgbox("(你可以在这里加一段成功后得到的信息)")
  exit do
  else
  ctr=ctr+1 '如果密码出错就增加一次错误认证计数
  msgbox("认证出错, 请检查密码")
  end if
  loop
  这样实现的功能和上一个例子完全一样, 我们再来看看把while放在loop后面:
  dim a,ctr
  ctr=0
  const pass="pas123_"
  do
  a=inputbox("请输入密码")
  if a=pass then
  msgbox("认证成功")
  msgbox("(你可以在这里加一段成功后得到的信息)")
  exit do
  else
  ctr=ctr+1 '如果密码出错就增加一次错误认证计数
  msgbox("认证出错, 请检查密码")
  end if
  loop while ctr<3
  功能是一样的, 为什么要放在loop后面呢? 你把ctr的值改成3就知道了, while在do后面的程序会直接退出, 而在loop后面
  还会允许一次认证, 到了loop才结束.和while相反的是until, 用法和while一样, 不过他只有当后面的表达式的值为false(表
  达式不成立)的时候才执行循环体, 请自己试验一下
  ok, 我们来看另外一种循环结构,for....next, 这种循环结构是基于计数的, 也是在编程中最常见到的循环结构.
  dim i
  for i=0 to 5
  msgbox(i)
  next
  看到了吗?每次输出的i都是递增的, 但我们没有明确指出i要递增, 当i达到5的时候, 循环就结束了, 因为由0开始, 所以
  循环体执行了6次, 这一点很重要, 大部分东西都是从0开始而不是1. 这个程序也可以写成
  do的形式:
  dim i
  i=0
  do while i<5
  msgbox(i)
  i=i+1 '因为do不能自动计数, 必须手动加
  loop
  怎么样, 还是for比较好用吧. for在编程中很有用途, 我们再举一个例子, 顺便讲一下嵌套循环.
  dim i,j
  for i=1 to 9
  for j=1 to 9
  str=str & i * j & " " '&是和并字符串的符号
  next '每个next对应一个for
  next
  Msgbox(str)
  看看运行结果, 是否令你会想起小学时代的数学老师(丑陋的嘴脸). 要注意, 这里有一个"大"的for, 和一个小的for, 当
  小的for执行完一个周期以后, 大的for才执行一次(换句话说, 大的for执行一次, 小的要执行9次), 所以一共执行了九九八十
  一次. 在大的for里可以不仅仅是一个小的for, 也可以加上另外的语句. 我们来修改一下源程序:
  dim i,j
  for i=1 to 9
  for j=1 to 9
  str=str & i * j & " "
  next '每个next对应一个for
  str=str & vbCrlf 'vbCrlf相当于键盘上的回车键,因为你不能在键盘上输入,所以系统定义了一个默认的常量
  next
  Msgbox(str)
  这次运行完成以后, 输出结果按照乘数进行了分割, 每小for运行完一次, 就换一行(通过vbcrlf).
  这次的内容对菜鸟可能比较难懂, 掌握的办法只有一个:多实践. 另外, 我在论坛看到很多人还是问:"VBScript要用什么工
  具编?"我就很气愤, 我在第一篇里面已经说明:用记事本编辑源代码, 然后保存为以.vbs为扩展名的程序就可以了, 请大家不要
  再问. 另外, 国产的一种垃圾软件"超级X霸"抢占了vbs这个扩展名, 请把那个垃圾卸载掉.
  我们总结一下:
  要点:
  1) do..loop和exit do的用法
  2) while当表达式true的时候执行循环体,until反之
  3) for...next是计数循环, 每次执行计数器递加
  4) 嵌套循环的作用和写法
  4.5) &用于连接字符串
  5) vbCrLf相当于键盘上的回车键
  作业:
  1) 在我国的数学经典著作"九章算术"中有这样一道题:百钱买百鸡, 公鸡5钱一只, 母鸡3钱一只, 小鸡1钱2只(这个数据我是参
  考一本编程书的, 但我记得是公3,母1,小1钱3只? 不管了, 就按照书上得来吧)求得是能有多少种办法买这些鸡. 如果看不懂的
  话我用大白话说说:有人要去买鸡, 用100块钱正好买了100只鸡, 价格如下:公:5$, 母:3$, 小:1$ for 2, 让你求一共多少种卖
  法(公母小怎么搭配). 请用循环解决这个问题.
  ps:今天要去移民局办事, 所以文章写的很仓促. 大部分代码都没有实验, 请大家帮我找错. 另外, 上次的作业大家在论坛应该
  看到了, 我就不重复答案了, 不知道大家喜欢做这种题, 还是以前那种比较简单的?
  [ Last edited by longtian777 on 2004-12-6 at 16:08 ]
  第五篇(共六篇):
  请允许我县描述一下我现在的环境:气温高达37摄氏度, 而我忘记了图书馆开门的时间, 还要在这里站上一个小时, 在热带植物的包裹下, 各种奇怪的小飞虫围着我转来转去. 不过令我欣慰的是, 终于写到五了, 还有两课我们的"基础篇"就要结束了.
  今天我们来了解语言本身的最后一个论题:数组.
  要理解"数组", 这个概念我觉得另一种翻译对学习来说更加容易:"阵列", 没错, 数组就是一个阵列, 一个数据的阵列. 最简单的例子是数据库系统, 假设你要储存20名学生的英语成绩, 如果不是用数组, 你则要创建20个不同的变量, 累死. 数组就是类型相同(重要!)的一组数据(或者n组), 用来储存相关的量, 最简单的数组是一维数组, 我们就先来学习它吧.
  什么是一维数组呢? 在3维以下,你可以利用几何知识来理解"维"的概念,一维相当于一条线, 二维则是一个矩形, 三维是一个长方体. 我知道这么讲是很抽象的, 我们先举个一维数组的例子就比较容易了解了.
  dim a(9) '从零开始
  for i=0 to 9
  a(i)=i '填充每一个数组元素
  msgbox(a(i)) '输出数组元素
  next
  我们可以看到, 定义一个数组的方法和定义一个变量没有什么不同, 同样是使用dim语句. 定义一维数组的方法如下:
  dim 数组名(元素数量), 这里大家要注意一点, 这里定义的元素数量总是比你要的要少一个, 因为一个数组的起点是0号数据而不是1, 所以大家一定要小心: 你需要10个数据, 就定义"9", 需要100个就定义99, 依此类推. 数组的元素可以看成一个个独立的变量, 你可以像独立的变量那样使用他们. 数组元素的量可能是毫无关系的, 比如第一个数组元素储存你的年龄, 第二个储存今年西瓜的销售量, 但这种做法是不鼓励的, 甚至是不被接受的, 不要这么干, 这样的情况请定义独立的变量. for语句在数组中可算是大显身手, 还记得for吗? 它累加一个变量, 我们可以把这个变量应用在数组中正好用来读取或者填充按照顺序排列的数组元素, 上面就是这样一个例子. 数组其实是很简单的东西(再BASIC语言里面), 数组难的是怎么捣弄这些循环, 让他们按照你的要求运转. 这个等到二维数组再说, 我们先看看如何手工填充数组.
  如果你这个都想不到的话, 那你真是白学了:
  dim name(7),str '一共八个学生, str变量是用来把他们储存成一个字符串以便输出
  for i=0 to 7
  name(i)=inputbox("请输入第" & i+1 & "个学生的名字")
  str=str & " " & name(i)
  next
  msgbox(str)
  这样我们就有了一个小小的数据库, 它们的数据排列可以看成这样:
  name(0),name(1),name(2).....name(7)
  看到了吧, 所以我说我们可以把它看成是"一条线", 等到我们学到了文件操作, 就可以把他们输出到文件中去了. 一维数组有很多用处, 我们来看一下一个复杂的例子. 我们要储存3各学生的名字, 身高, 成绩这三种数据, 由于名字是字符串, 而身高可能是浮点数(带小数点的数), 成绩则可能是整数, 所以我们不能把他们储存在一个数组里面(不要忘记, 数组织只能存储同类的数据), 所以我们要建3个数组, 以下是例程:
  dim name(2), high(2), mark(2) '定义三个数组分别储存3个人的名字, 身高和得分
  dim ctr '计数器
  for ctr=0 to 2
  name(ctr)=inputbox("请输入第" & ctr+1 & "个学生的姓名")
  high(ctr)=inputbox("请输入第" & ctr+1 & "个学生的身高")
  mark(ctr)=inputbox("请输入第" & ctr+1 & "个学生的得分")
  next
  OK, 我们已经填充好了数据, 现在我们的小小数据库只能按顺序输入, 我们要让它看起来像点样子, 我们来给他设计查询功能:
  '接着上面的程序
  dim cname, temp '要查询的名字, 和一个临时变量, 用来储存数据的位置
  cname=inputbox("请输入你要查询的名字:")
  for ctr=0 to 2 '遍历所有name数组的成员, 寻找要查询的名字
  if name(ctr)=cname then
  temp=ctr '记录数据位置
  exit for '退出循环, 和exit do的用法一样
  end if '不要忘了end if
  next
  msgbox("姓名:" & name(temp) & " " & "身高:" & high(temp) & " " & "得分:" & mark(temp))
  嘿嘿, 有意思吧, 其实在这个程序里面, 那个temp变量完全没有必要, 只是为了更清楚地说明问题. 因为当exit for以后ctr变量的值就不会改变, 储存的正好是对应数据在数组中的位置, 写这个temp变量是为了照顾到以后要学C++的朋友(C++可以在for语句里声明新变量, 只在这个for结构中有效, 所以到了外部就不能访问了). 也就是说可以简化成如下:
  dim cname
  cname=inputbox("请输入你要查询的名字:")
  for ctr=0 to 2
  if name(ctr)=cname then exit for '因为只有exit for就不需要块if了
  next
  msgbox("姓名:" & name(ctr) & " " & "身高:" & high(ctr) & " " & "得分:" & mark(ctr))
  这是最直接的路子. 好好重读一下上面所有的源代码, 然后自己写几个程序, 完全搞清楚一维数组及其应用以后再看后面的二位数组. 二维数组好像是一个一维数组的集合, 就好像"线积成面"一样, 由n各一维数组组成二维数组, 这是初学者比较好理解的办法(比较精确的是用"编号"的概念去理解, 因为4维以上的数组就比较难以用欧几里德几何概念去解释了). 二维数组是很好解释的, 我们来看一下:
  dim a(2,2) '从零开始, 一共有3 X 3 = 9 个数据
  dim i,j '需要两个计数器
  for i=0 to 2
  for j=0 to 2 '使用嵌套循环
  a(i,j)="X"
  next
  next
  我们创建了一个这样的二维数组(那些","是我用来分割元素的,并不存在), 了解二维数组的了吗? 不清楚我们再讲一下
  编号 0 1 2
  0 X,X,X
  1 X,X,X
  2 X,X,X
  二维数组的看起来是不是就是一个矩形呢?(你在内存中看不到这样的矩形, 只是便于你理解), 每个数据都有编号, 由两个数来定位, 这个很像(非常像)你在国际象棋棋盘上寻找一个格, 我们用类似"C6","A2"这样的"垂直坐标"进行定位, 对, "垂直坐标", 很确切. 我们要使用一个二维数组元素的时候可以和普通变量一样使用, 只要指定数组元素的"定位点"就可以了, 例如
  a(0)(1)=1, b(2)(1)="你好", 诸如此类. 要注意的是二维数组也只能储存类型相同的元素, 而且上标(起点)也从0开始. 计算一个二维数组的元素个数只要把两个下标+1(以得到实际的值)再乘起来就可以了, 非常类似于求一个矩形的面积.
  假如需要储存的都是同一类型的数据, 我们就可以用二维数组, 比如要储存5个人的姓名,国籍,民族, 就可以使用二维数据
  dim info(4,2) '一共五个人, 要储存的数据类型有3项
  dim i,j
  for i=0 to 4
  for j=0 to 2
  dim opt '定义一个变量用于存储数据项提示
  select case j '判断应该输入的是什么数据
  case 0
  opt="姓名"
  case 1
  opt="国籍"
  case 2
  opt="民族"
  end select
  info(i,j)=inputbox("请输入第" & i+1 & "个人的" & opt)
  next
  next
  '输出太麻烦了, 我懒得动, 你知道那么回事就行了
  这样就不需要定义3个一维数组了.
  多位数组(三维以上)的定义和使用方法与二维数组一样, 但不太好在欧几里德几何空间里加以解释, 幸好我们并不太常用那么多维的数组.定义一个三位数组:dim a(1,2,3) '一共24各数组元素.
  今天因为要搬家(我喜欢Sengkang啊, 可是MM嫌交通不便, 谁不知道她只想去逛街),而GF要去和她的同学去参加什么试验半夜才回家, 所以下午我只能自己去押车搬家了, 5555~~好可怜, 这次就请大家原谅我少写一点, 我可是站在图书馆外写的啊,
  现在腿都软了~~~ 本来还要讲"动态数组"的, 但想了想还是放到"进阶部分"再说吧.
  要点:
  1) 一维数组是"线", 二维数组是"面", 三维数组是"体" (多维数组就乱套)
  2) 数组的下标从0开始
  3) for循环在数组的应用中起了很大作用, 二维数组需要嵌套循环
  作业:
  上次出的"百鸡问题", 大家喜欢吗? 以后我们就做这种需要动脑的题目, 那些简单的实践, 大家一定要多做!
  1) 定义一个数组, 包含5个元素, 都是随机整数(随便输入), 要求把他们按照从大到小的顺序排列起来
  2) 有两个二维数组a(4,4)和b(4,4) (元素值随便), 交换两个数组(原来的a的所有元素值变成b的, b的所有元素值变成a的)
  [ Last edited by longtian777 on 2004-12-6 at 16:11 ]
  最后一篇:
  新家不错, MM开心, 我也就跟着高兴了 : ), 今天我们学习基础篇的最后一个部分:自定义函数和过程. 我们每天都在和函
  数打交道, inputbox()是函数, msgbox()是函数, int()也是函数...这些函数都是系统内建的, 我们只能用不能改. 今天, 我
  就教大家怎样自己制作一个函数.
  首先我们要了解, 为什么要用函数, 我们用"实例"说话, 先看一个例子: 给出两个数, 输出较大的那一个.
  dim a1,a2,b1,b2,c1,c2
  a1=2:a2=4 '":"可以让你把多个语句写在一行上
  b1=32:b2=67
  c1=12:c2=898
  if a1>a2 then
  msgbox(a1)
  elseif a1<a2 then
  msgbox(a2)
  end if
  if b1>b2 then
  msgbox(b1)
  elseif b1<b2 then
  msgbox(b2)
  end if
  if c1>c2 then
  msgbox(c1)
  elseif c1<c2 then
  msgbox(c2)
  end if
  多么麻烦呀, 我们把相同的比较过程复制了好几遍, 早期语言没有结构化(没有过程和函数)的时候, 程序员们的确是这么
  干的, 他们复制(Copy), 那个年代也没有剪贴板这一说, 大家都是重新输入代码. 后来工作简化了:
  dim a1,a2,b1,b2,c1,c2
  a1=2:a2=4
  b1=32:b2=67
  c1=12:c2=898
  msgbox(co(a1,a2))
  msgbox(co(b1,b2))
  msgbox(co(c1,c2))
  function co(t1,t2) '我们使用function定义了一个新的函数
  if t1>t2 then
  co=t1 '通过"函数名=表达式"这种方法返回结果
  elseif t2>t1 then
  co=t2
  end if
  end function
  我们在这里是用了一个新的关键字:funciton, 这个关键字表示一个新函数开始, 格式:
  funciton 函数名(参数1, 参数2...参数n) '列表可以是空的, 但括号不能省略, 参数之间用","分割
  ...
  exit funciton '结束函数, 不是必需的
  ...
  end function
  函数是一个模块, 只有你调用的时候才会运行, 也就说, 当你编写了一个函数, 然后在程序中并不调用它, 那么这个函数
  永远不会运行. 一般来说, 我们编写程序是按照:
  主程序
  ..
  ..
  ..
  函数1
  ..
  ..
  函数2
  ..
  ..
  详细解释一下: 函数中最重要的是参数和返回值. 参数是在函数名后面的()里定义的, 用","分割, 使用参数的时候我们也
  用","分割. 说到这里我想起一件事, 昨天有个朋友给我发消息问我:
  msgbox(name1,name2,name3)
  这个错在哪里? 为什么不能同时显示出三个变量? 这就是因为你用了",", 这个符号表示你输入的三个量作为三个不同参数
  传递给msgbox()函数, msgbox()函数只会显示出第一个参数, 第二个参数的作用是出现在标题栏. 所以你应该用"&"或者"+"把
  三个字符串变量连接起来, 作为第一个参数传递给msgbox()函数. 程序员说参数的时候经常说到"形参", "实参"这样的"黑话",
  我来解释一下. "形参"是"形式参数"的简称, "实参"是"实际参数"的简称, 实参是指你调用函数的时候传递给函数的量, 可以
  使变量或者常量(直接量), 例如:co(12,24)中的12,24就是实参. 形参是你在函数定义时定义的变量, 这些变量用来"接住"传递
  过来的量, 例如function co(t1,t2)t1,t2就是形参.
  在VBScript中, 参数传递是一种传值, 而不是传址(听不明白不要紧, 学了C语言的指针你就明白了), 所以我们进行的参
  数传递实际上是进行了一次变量赋值, 例如我们调用co(a1,a2), 实际上程序会执行一步:t1=a1,t2=a2这样的操作. 同样因为传
  值传址的原因, VBScript只能返回一个值, 我们先来看看什么叫"返回". 当一个过程调用了另一个过程的时候(比如主程序调用
  了函数), 控制权就到了被调用过程那里, 当这个过程执行完毕以后, 会回到调用它的地方继续执行, 这个就叫做"返回", 返回
  的时候可以带一个值叫做"返回值"(这是"通俗"的理解). 在vbs继承了basic的传统, 返回的时候采用"函数名=返回值"的办法,
  这个"返回值"是指一个表达式(在编程中, 任何东西都是表达式, 比如变量a, 常数0, "Hello",c=1+2等等这都是表达式). 比如
  有一个函数是ht, 则返回的方法是:ht=你要返回的值. 注意:返回以后, 后面的语句将不再执行.
  调用一个函数我就不用讲了吧:变量=函数名(参数)
  有时候我们并不需要返回什么值, 这个时候我们可以使用一种称之为"子程序"的结构. 子程序或称之为过程与函数的差别
  就在于:1) 没有返回值, 2) 使用sub关键字定义, 3) 通过Call调用.具个例子:
  dim yname
  yname=inputbox("请输入你的名字:")
  call who(yname)
  sub who(cname)
  msgbox("你好" & cname)
  msgbox("感谢你阅读我的课程")
  msgbox("这是基础部分的最后一课")
  end sub
  你一定看明白了, 很简单的. 退出一个过程和退出一个函数一样:exit sub(函数:exit function).
  要注意, 子程序(过程)是比较特殊的一个结构, C等语言是没有这个概念的, C语言中的一切都是函数, 没有返回值的函数
  在C语言中只要使用void修饰符定义就行了.
  今天没有什么可讲的了, 基础篇就这么结束了, 目前你已经有了基本的编程概念(面向过程的结构化编程), 可以选择学习
  另外一种语言(比如C或Pascal), 现在的基础会有一定的帮助. 如果你想要继续学习vbs或通过它更详细的了解编程在转型可以
  跟我继续学习, 但因为我的假期结束所以更新的时间可能会比较慢, 请大家原谅.初步计划如下:
  进阶篇:
  变量的深入讨论
  |
  |----变量类型
  |
  |----变量的有效范围
  |
  数组的深入讨论
  |
  |----动态数组
  |
  函数的深入讨论
  |
  |----数组作为函数参数
  |
  |----多个返回值
  |
  字符串操作
  |
  |----乱七八糟一大堆
  |
  面向对象编程(OOP)的基本知识
  |
  文件操作
  |
  |----FSO对象
  |
  |----其他相关部分
  |
  VBS与网页
  |
  |----HTML中嵌入VBS
  |
  |----VBS与表单(设计你的程序界面 wow!)
  实战篇:
  病毒编程
  Socket编程(TCP/UDP)
  这只是大概的内容, 我想应该会有变化, 到时候你就会读到的. 今天的内容请多多实践, 作业就是把前面的各个课程在温
  习一下. 对要离开这个课程去更进一步学习的朋友:祝你再学习编程的道路上一帆风顺.
  vbScript常用运算符与函数
  基本运算
  + 数字加法及字符串连接
  - 数字减法
  * 数字乘法
  / 数字除法
  Mod 求余数
  \ 求商数
  & 字符串连接
  ^ 次方
  = 相等
  <> 不相等
  >= 大于或等于
  > 大于
  <= 小于或等于
  < 小于
  Not 非
  And 且
  Or 或
  Xor 异或
  循环及决策
  if ....then 若...则...
  if ...then...else 若...则...非
  else if... 非若
  select case... 群组选择条件
  end select
  for ... next 计数循环
  while...wend 条件循环(一)
  do while...loop 条件循环(二)
  do...loop while 条件循环(三)
  do until...loop 条件循环(四)
  do...loop until 条件循环(五)
  数学函数
  Abs 绝对值
  Sgn 正负号
  Hex 转换成十六进制
  Oct 转换成八进制
  Sqr 平方根
  Int 取整数
  Fix 取整数
  Round 取整数
  Log 以e为底的对数
  Sin 正弦函数
  Cos 余弦函数
  Tan 正切函数
  字符串处理函数
  Len 字符串长度
  Mid 取部分字符串
  Left 从字符串开头取部分字符串
  Right 从字符串结尾取部分字符串
  Lcase 转换成小写
  Ucase 转换成大写
  Trim 清除字符串开头及结尾的空格符
  Ltrim 清除字符串开头空格符
  Rtrim 清除字符串结尾空格符
  Replace 替换字符串部分字符
  Instr 判断是否包含于另一个字符串(从起始搜寻)
  InstrRev 判断是否包含于另一个字符串(从结尾搜寻)
  Space 任意字符数的空格符
  String 任意字符数的任一字符
  StrReverse 反转字符串
  Split 以某字符分割字符串
  数据类型转换函数
  Cint 转换成整形
  Cstr 转换成字符串
  Clng 转换成常整数
  Cbool 转换成布尔函数
  Cdate 转换成日期函数
  CSng 转换成单精度
  CDbl 转换成双精度
  日期时间函数
  Date 现在日期
  Time 现在时间
  NOw 现在日期时间
  DateAdd 增加日期
  DateDiff 两日期差
  DateSerial 日期设定
  Datevalue 日期设定
  Year 现在年份
  Month 现在月份
  Day 现在天
  Hour 现在时刻
  Minute 现在分钟
  Second 现在秒钟
  Timer 午夜距现在秒数
  TimeSerial 时间设定
  Timevalue 时间所属部分
  WeekDay 星期名称
  MonthName 月份名称
  其它函数
  Array 产生数组
  Asc 字符ASCII码
  Chr ASCII码字符
  Filter 过滤数组
  InputBox 输入窗口
  Join 合并数组中的元素
  MsgBox 信息窗口
  Lbound 数组下界
  Ubound 数组上界
  指令
  Const 设定常数
  Dim 定义变量或者数组
  Erase 清除数组
  ReDim 重新声明数组
  Randomize 起始随机数
  Rnd 取得随机数
  ASP对象
  Session对象
  IsEmpty 测试Session变量是否存在
  TimeOut 设定Session变量生存周期
  Abandon 强制清除Session变量
  Application对象
  IsEmpty 测试Application变量是否存在
  Lock 锁定Application变量
  Unlock 解除Lock指令的锁定
  Cookies对象
  Expires 设定Cookies变量的生存周期
  Connection对象
  Open 打开与数据库的连接
  Execute 打开Recordset对象
  Close 关闭Connection对象
  Recordset对象
  movefirst 将记录指针移至第一条
  movelast 将记录指针移至最后一条
  movenext 将记录指针移至下一条
  moveprevious 将记录指针移至上一条
  bof 测试是否为recordset的起始
  eof 测试是否为recordset的结束
  open 打开Recoreset对象
  close 关闭recordset对象
  fields 读取数据的子对象
  fileds.count 字段个数
  pagesize 每页记录条数
  absolutepage 设定为某页
  pagecount 总页数
  Absoluteposition 直接跳至某条记录


 

VBScript 函数

http://www.jb51.net/shouce/vbscript/Vbscript/html/vtorivbscriptfunctions.htm

http://xdw1626.iteye.com/blog/266710

描述 语言元素
当相关类的一个实例结束时将发生。 Abs 函数
返回一个 Variant 值,其中包含一个数组。 Array 函数
返回与字符串中首字母相关的 ANSI 字符编码。 Asc 函数
返回一个数的反正切值。 Atn 函数
返回一个表达式,该表达式已被转换为 Boolean 子类型的 Variant CBool 函数
返回一个表达式,该表达式已被转换为 Byte 子类型的 Variant CByte 函数
返回一个表达式,该表达式已被转换为 Currency 子类型的 Variant CCur 函数
返回一个表达式,该表达式已被转换为 Date 子类型的 Variant CDate 函数
返回一个表达式,该表达式已被转换为 Double 子类型的 Variant CDbl 函数
返回与所指定的 ANSI 字符编码相关的字符。 Chr 函数
返回一个表达式,该表达式已被转换为 Integer 子类型的 Variant CInt 函数
返回一个表达式,该表达式已被转换为 Long 子类型的 Variant CLng 函数
返回一个角度的余弦值。 Cos 函数
创建并返回对 Automation 对象的一个引用。 CreateObject 函数
返回一个表达式,该表达式已被转换为 Single 子类型的 Variant CSng 函数
返回一个表达式,该表达式已被转换为 String 子类型的 Variant CStr 函数
返回当前的系统日期。 Date 函数
返回已加上所指定时间后的日期值。 DateAdd 函数
返回两个日期之间所隔的天数。 DateDiff 函数
返回一个给定日期的指定部分。 DatePart 函数
返回所指定的年月日的 Date 子类型的 Variant DateSerial 函数
返回一个 Date 子类型的 Variant DateValue 函数
返回一个 1 到 31 之间的整数,包括 1 和 31,代表一个月中的日期值。 Day 函数
计算一个表达式的值并返回结果。 Eval 函数
返回 e (自然对数的底)的乘方。 Exp 函数
返回一个从零开始编号的数组,包含一个字符串数组中符合指定过滤标准的子集。 Filter 函数
返回一个数的整数部分。 Fix 函数
返回一个具有货币值格式的表达式,使用系统控制面板中所定义的货币符号。 FormatCurrency 函数
返回一个具有日期或时间格式的表达式。 FormatDateTime 函数
返回一个具有数字格式的表达式。 FormatNumber 函数
返回一个被格式化为尾随一个 % 字符的百分比(乘以 100)表达式。 FormatPercent 函数
返回当前的区域 ID 值。 GetLocale 函数
从文件中返回一个 Automation 对象的引用。 GetObject 函数
返回一个过程的引用,该引用可以绑定到一个事件。 GetRef 函数
返回一个字符串,代表一个数的十六进制值。 Hex 函数
返回一个 0 到 23 之间的整数,包括 0 和 23,代表一天中的小时值。 Hour 函数
在一个对话框中显示提示信息,等待用户输入文本或单击按钮,并返回文本框中的内容。 InputBox 函数
返回一个字符串在另一个字符串中首次出现的位置。 InStr 函数
返回一个字符串在另一个字符串中出现的位置,从字符串尾开始计算。 InStrRev 函数
返回一个数的整数部分。 Int 函数
返回一个布尔值,指明一个变量是否数组。 IsArray 函数
返回一个布尔值,指明表达式是否可转换为一个日期。 IsDate 函数
返回一个布尔值,指明变量是否已进行初始化。 IsEmpty 函数
返回一个布尔值,指明一个表达式是否包含非有效数据 (Null ). IsNull 函数
返回一个布尔值,指明一个表达式是否可计算出数值。 IsNumeric 函数
返回一个布尔值,指明一个表达式是否引用一个有效的 Automation 对象。 IsObject 函数
返回一个字符串,该字符串由一个数组中所包含的子字符串连接而成。 Join 函数
返回数组的指定维上最小可用的下标。 LBound 函数
返回一个已转换为小写的字符串。 LCase 函数
返回字符串左端的指定数量的字符。 Left 函数
返回一个字符串中的字符数或存储一个变量所需的字节数。 Len 函数
返回一个图片对象。仅在 32 位平台上可用。 LoadPicture 函数
返回一个数的自然对数值。 Log 函数
返回一个已删除串首空格的复制字符串。 LTrim 函数
返回在一个字符串中指定数量的字符。 Mid 函数
返回 0 到 59 之间的一个整数,包括 0 和 59,代表一个小时中的分钟值。 Minute 函数
返回 0 到 12 之间的一个整数,包括 0 和 12,代表一年中的月份值。 Month 函数
返回一个字符串,指明所指定的月份。 MonthName 函数
在对话框中显示一条消息,等待用户单击某个按钮,并返回一个值,该值指明用户单击的是哪个按钮。 MsgBox 函数
返回与计算机的系统日期和时间相对应的当前日期和时间。 Now 函数
返回一个字符串,代表一个数的八进制值。 Oct 函数
返回一个字符串,其中指定的子字符串已被另一个子字符串替换了指定的次数。 Replace 函数
返回一个代表 RGB 颜色值的整数。 RGB 函数
返回字符串中从右端开始计的指定数量的字符。 Right 函数
返回一个随机数。 Rnd 函数
返回一个数,该数已被舍入为小数点后指定位数。 Round 函数
返回一个复制的字符串,其中已删除结尾的空格。 RTrim 函数
返回一个代表正在使用的脚本语言的字符串。 ScriptEngine 函数
返回正在使用的脚本引擎的版本号。 ScriptEngineBuildVersion 函数
返回正在使用的脚本引擎的主版本号。 ScriptEngineMajorVersion 函数
返回正在使用的脚本引擎的次要版本号。 ScriptEngineMinorVersion 函数
返回一个 0 到 59 之间的整数,包括 0 和 59,代表一分钟内的多少秒。 Second 函数
返回一个整数,指明一个数的正负。 Sgn 函数
返回一个角度的正弦值。 Sin 函数
返回一个由指定数量的空格组成的字符串。 Space 函数
返回一个从零开始编号的一维数组,其中包含指定数量的字符串。 Split 函数
返回一个数的平方根。 Sqr 函数
返回一个值,指明字符串比较的结果。 StrComp 函数
返回一个指定长度的重复字符串。 String 函数
返回一个字符串,其中指定字符串中的字符顺序颠倒过来。 StrReverse 函数
返回一个角度的正切值。 Tan 函数
返回一个子类型为 DateVariant ,指明当前的系统时间。 Time 函数
返回 12:00 AM(午夜)后已经过的秒数。 Timer 函数
返回一个子类型为 Date Variant ,包含特定时分秒的时间。 TimeSerial 函数
返回一个子类型为 DateVariant ,包含时间。 TimeValue 函数
返回一个复制的字符串,其中已删除串首和串尾的空格。 Trim 函数
返回一个字符串,其中提供了一个变量的 Variant 子类型信息。 TypeName 函数
返回一个数字的指定维上可用的最大下标。 UBound 函数
返回一个已转换为大写的字符串。 UCase 函数
返回一个值,指明一个变量的子类型。 VarType 函数
返回一个整数,代表一周中的第几天。 Weekday 函数
返回一个字符串,指明所指定的是星期几。 WeekdayName 函数
返回一个代表年份的整数。 Year 函数




http://java032.iteye.com/blog/1117587
一. VBScript 语言概述
我们都希望制作出的网页既精致美观又生动活泼而且功能 强大 , 用 VBScript 语言可以实现这一愿望。
VBScript 是 Microsoft Visual Basic 的简化版本。
VBScript 是特意为在浏览器中进行工作而设计的。
编程方法和Visual Basic基本相同 。
VBScript 只有一种数据类型,即, Variant 类型。
VBScript 不支持Visual Basic中传统的I/O功能,即不能通过Open语句和函数在客户机上读写文件,这样防止了可能对客户机造成的危害;VBScript不能调用API函数,这是因为API函数调用会危及客户机的安全,如病毒可以轻而易举地通过API函数调用来破坏客户机;Visual Basic支持Screen、Printer、App、Debug、Err和Clipboard等系统对象,但VBScript只支持Err对象,该对象用于为应用程序提供运行时错误处理。
 
二. VBScript 语言特点
易学易用
VBScript既可编写服务器脚本,也可编写客户端脚本。
客户端编程语言的 优点 是
(1)浏览器完成了所有的工作,这可以减轻服务器的负担。
(2)客户端程序运行起来比服务器端程序快得多。
一般来说,可以解释VBScript脚本的浏览器只有Microsoft Internet Explorer。
 
三 . VBScript 程序的编辑和调试
必须使用<SCRIPT>标签,才能使用脚本语言 , 格式 如下 :
<SCRIPT>
     VBScript代码
</SCRIPT>
例如,我们可以用一句VBScript语句将"你好,学习VBScript很有趣"写入HTML页面。
<SCRIPT LANGUAGE="VBScript">
<!--
     Window.Document.Write("你好,学习VBScript很有趣!")
-->
</SCRIPT>
解释上例中的 文档对象的用法 :
在 文档对象模型(DOM) 中,Window 对象是最高层的对象,Document对象是Window对象的子对象,所以引用Document对象时应该使用Window.Document,而 Write()是Document对象的方法,所以引用Write()方法时,应该使用Window.Document.Write()。
又如:
<SCRIPT language=VBScript>
<!--
         Window.alert("你好")
-->
</SCRIPT>
 
<SCRIPT> 标签的 LANGUAGE 属性
用以指定包含在<SCRIPT>标签中的脚本代码的语言类型 。
<SCRIPT LANGUAGE="VBScript">
<SCRIPT LANGUAGE=“JavaScript">
<SCRIPT LANGUAGE=“JScript">
 
<SCRIPT> 标签的 RUNAT 属性
RUNAT属性用以指定包含在<SCRIPT>标签中的脚本代码的运行于服务端还是客户端。
<SCRIPT LANGUAGE="VBScript" Runat=server>
       VBScript代码
</SCRIPT>
 
注意: 文件要保存成.asp,如果在客户运行则Runat属性可以省略。
 
注释标签的运用
<SCRIPT  LANGUAGE="VBScript">
<!--
         VBScript代码
-->
</SCRIPT>
对不支持VBScript的浏览器, 会将VBScript代码将作为页面的文本直接显示在页面上 ,这将会极大地破坏整个页面的布局,所以我们需要运用注释标签来解决这个问题 。
 
四 . 用 VBScript 往网页上写内容。
以下示例 VBScript代码的功能是在页面上写入“这是一个VBScript的简单示例” 。
<HTML>
<HEAD>
<TITLE>一个 VBScript 示例</TITLE>
<SCRIPT  LANGUAGE="VBScript">
<!--
    Window.Document.Write("这是一个VBScript的简单示例")
-->
</SCRIPT>
</HEAD>
<BODY></BODY>
</HTML>
 
按钮按下后能够出现警告框的示例 。
<HTML>
<HEAD>
<TITLE>一个 VBScript 示例</TITLE>
</HEAD>
<BODY>
<FORM>
<INPUT TYPE="button" VALUE="ALERT" OnClick="alerter()">
</FORM>
</BODY>
</HTML>
<SCRIPT LANGUAGE="VBScript">
<!--
    sub alerter()
       window.alert("这是一个VBScript的简单示例")
    end sub
-->
</SCRIPT>    执行
 
五.VBScript 代码的 位置不同 执行的 顺序不同
下载时立即运行的,而且没有包含于过程之中VBScript代码嵌入到<HEAD>标签和</HEAD>标签之间,这段VBScript代码将在页面绘制之前执行。例如
有时候我们并不希望VBScript代码在页面绘制之前执行,而是希望能够在页面绘制中,在页面合适的位置进行处理。
例如
 
下载时立即运行的,而且没有包含于过程之中VBScript代码嵌入到<HEAD>标签和</HEAD>标签之间,这段VBScript代码将在页面绘制之前执行。例如
有时候我们并不希望VBScript代码在页面绘制之前执行,而是希望能够在页面绘制中,在页面合适的位置进行处理。 例如
另外一种解决方式:先直接在页面中写上表格的标签,然后运用VBScript代码在表格内写字符串。 例如 。
 
调用时运行VBScript代码的位置
一般情况下,我们 最好 是将VBScript代码放在<HEAD>标签和</HEAD>标签之间,这 不是编写脚本的强制要求 ,而是一种 良好的编写风格 。 例如 。
还有一种嵌入的方法,就是在 页面元素事件处理中 直接嵌入VBScript代码(一般为一行)。
  <INPUT TYPE="button" VALUE="ALERT"
  OnClick=“Window.alert(‘这是一个VBScript的简单示例’)”> 例如 。
 
六 . 客户端脚本代码 示例
用浏览器打开时,将显示一个文本框和一个按钮。在文本框中输入数字后,单击"提交"按钮,浏览器会查找并执行过程Button1_OnClick。执行时将调用表单的Submit方法将数据提交到服务器。若输入不正确,如不是数字或小于1或大于50,则会调用MsgBox语句产生消息框提示输入正确的数字。
 
七.VBScript 数据类型
VBScript 只有一种数据类型,称为 Variant 。
Variant可以进一步区分数值信息的特定含义。例如使用数值信息表示日期或时间。
见 VBScript 数据类型 表
 
1 .什么是常量
常数是具有一定含义的名称,用于代替数字或字符串,其值从不改变。VBScript定义了许多固有常数。
 
2 .声明常量
使用Const语句可以在VBScript中创建用户自定义常数。例如:
Const MyString = "这是一个字符串。"
Const MyAge = 49
请注意字符串文字包含在两个引号(“”)之间。日期文字和时间文字包含在两个井号(#)之间。例如:
Const CutoffDate = #6-1-03#
 
3 . VBScript 变量
变量是计算机内存中已命名的内存位置,该位置可存储脚本运行时能更改的信息。
在VBscript脚本中,使用变量并不需要了解变量在计算机内存中的地址,只要通过变量名引用变量就可以查看或更改变量的值。
 
4 .声明变量
语句格式:DIM myvar1, myvar2, myvar3
在VBscript脚本中,使用一个变量之前不需要专门声明它。
通过直接在脚本中使用变量名的方式叫 隐式声明变量 。
隐式声明变量 不是一个好习惯,先声明变量再使用是编程的良好习惯。
VBScript中提供了 Option Explicit 语句来强制显式声明变量,这样如果你在编写长而复杂的程序时,如果你敲错了应该变量的名字,将会产生错误,可以帮助你调试脚本。 例如 。
 
5 .变量命名规则
变量命名必须遵循VBScript的标准命名规则。变量命名必须遵循:
(1)第一个字符必须是字母。
(2)不能包含嵌入的句点。
(3)长度不能超过255个字符。
(4)在被声明的作用域内必须唯一。
(5)不能使用VBScript中的保留字作为变量名。
在VBScript中给变量命名不区分大小写。给变量命名时,为便于记忆与使用最好能做到“顾名知义”。
 
6 .注释 VBScript 脚本
Rem comment
' comment
例如:
Dim MyStr1,MyStr2
MyStr1 = "Hello": Rem 语句和注释用冒号隔开。
MyStr2 = "Goodbye"' 这同样是注释不需要冒号。
Rem 在没有代码的行上加注释不必用冒号。
REM I am a VBScript comment.
' I am also a VBScript comment.
 
7 . VBScript 脚本中的续行符
在VBScript脚本中当一行写得很长时,程序的可读性会变得很差,如果从语法上没法换行,而我们又想换行时可使用续行符, 续行符是空格紧跟一个下划线(“ _”) 。请注意:一定不要忘记前面的空格。
请注意: 一定不要忘记前面的空格。
 
八.VBScript 数据类型
 
1 . VBScript 中的算术运算符
用于执行数学计算的运算符。
VBScript中提供了7个算术运算符,其中加(+)、减(-)、乘(*)、除(/)和取负(-)几个运算符的含义与数学中的基本相同。
  \(整除操作符)
在VBScript中,整数除法 先对操作数进行四舍五入运算 使操作数变为整数,然后进行除法运算,整数除法运算后的结果是一个整数,1.5\2=1,而1.4\2=0。
mod(取模操作符)
将两个操作数相除,返回相除后的余数,例如表达式5 mod 3的运算结果为2。38.57 mod 14.21的运算( 先四舍五入再取余 )结果为11。
 
2 .连接运算符
(1)+(加操作符)
加操作符还可以对字符串类型的操作数进行运算,然后将两个字符串相连起来作为运算结果。例如,"How are "+"you! "的运算结果为"How are you! "。
(2)&(连接运算符 )
用于字符串的连接,即将两个字符串变量连接起来,生成一个新的字符串。+运算符也能进行字符串的连接,但只能将两个字符串连接。&运算符能强制性地将两个表达式(不论是什么类型)做字符串连接,用+运算符连接其它类型数据时会出现错误。
 
3 .比较操作符
比较操作符将操作数进行比较,然后返回一个逻辑值,表明这个比较操作的结果是否为真,比较操作符的操作数可以是数值类型或者字符串类型的数据。比较操作符共有6种。分别是。
=、> 、 < 、 >= 、 <= 、 <>
除了数值类型之外,字符串类型也可以进行比较,在比较字符串的过程中,VBScript把字符串中的每个字母转换成相应的ASCII码值,然后从第一个字符开始比较两个字符串中相应的字符,比较它们的ASCII码值。
 
4 .比较操作符示例
例如,"hello"="Hello"的返回结果为False,因为左操作数的第一个字符为h,右操作数的第一个字符为H,h的ASCII码值为104,H的ASCII码值为72,从第一个字符开始就不相等了,所以表达式的值为False。
而如果表达式为"came">="come",首先,比较两个操作数的第一个字符,都是c,这样,不能直接判定两个操作数的大小,然后再比较两个操作数的第二个字符,左操作数为a,右操作数为o,a的 ASCII码值为97,o的ASCII码值为111,当然97<111,所以对于这个表达式来说,它的返回结果为False。
 
5 .逻辑运算符
and(与操作符)
result = expression1 And expression2
当且仅当两个表达式均为 True,则 result 为 True。如果任一表达式为 False,则 result 为 False。
or(或操作符)
result = expression1 Or expression2
如果两个表达式中至少有一个为True,则result为True。
not(非操作符)
非操作符只有一个操作数,当操作数为True 时,返回结果为False,当操作数为False时,返回结果为True。例如表达式not(2>3)逻辑运算结果为True,因为2>3的结果为False,而表达式not(2<3)的逻辑运算结果为False,因为2<3的结果为True。
 
6 .运算符优先级
运算时,总是先执行括号中的运算符,然后再执行括号外的运算符。
首先计算算术运算符,然后计算比较运算符,最后计算逻辑运算符。所有比较运算符的优先级相同,即按照从左到右的顺序计算比较运算符。
 
九.标量变量和 数组变量
多数情况下,只需为声明的变量赋一个值。只包含一个值的变量被称为标量变量。有时候,将多个相关值赋给一个变量更为方便,因此可以创建包含一系列值的变量(即具有相同名子不同下标值的一组变量),称为数组变量。
 
1 .声明固定数组
数组变量和标量变量是以相同的方式声明的,唯一的区别是声明数组变量时变量名后面带有括号()。与前面讨论的变量不同,数组在使用之前必须声明。
例如:Dim A(10)
注意: VBScript 中数组的下标 从 0 开始 。上例声明了一个包含 11 个元素的一维数组。
 
2 .声明动态数组
目前讨论过的只限于固定大小的数组。一旦你声明了一个固定大小的数组,你将不能改变数组中的元素个数。要改变一个固定数组的大小,你必须删除它再重新创建。VBScript中另外有一种数组叫动态数组。动态数组是运行时可以改变大小的数组。
当声明一个动态数组时,你不需要指定数组的大小与维数,只需在数组名后加一对空括号。但在第一次给一个动态数组分配数值之前,必须用Redim语句指定它的大小与维数。 例如
 
十.流程控制语句
 
1 .条件控制语句
(1)只有一个条件语句形式: 举例
If 条件表达式 then
         语句块
End If
(2)条件为 True 和 False 时分别运行的语句形式: 举例
If条件表达式then
         语句块1
else
         语句块2
End If
(3)If判断结构嵌套使用 : 举例
If条件表达式0 then
      If条件表达式1 then  
          语句块1
      else
          语句块2
      End If
else
      语句块3
End If
(4)elseIf结构 : 举例
If条件表达式1 then
         语句块1
     elseIf条件表达式2 then
         语句块2
     elseIf条件表达式3 then
         语句块3
          ……
     elseIf条件表达式n then
         语句块n
else
语句块n+1
End If
(5)使用 Select Case 进行判断 : 举例
Select Case 测试表达式
Case 表达式列表1
[语句块1]
[Case 表达式列表达2
[语句块2]]
         ……
[Case Else表达式列表n
[语句块n]]
End Select
 
2 . 循环控制语句
(1)Do...Loop 循环 例 1
可以使用 Do...Loop 语句多次(次数不定)运行语句块。当条件为 True 时或条件变为 True 之前,重复执行语句块。
Do...Loop 语句形式:
第一种语法形式是先判断循环条件
Do [{While | Until} condition]
[statements]
[Exit Do]
[statements]
Loop
Do...Loop 循环 例 2  例 3
第二种语法形式是先执行一次循环,再判断循环条件
Do
[statements]
[Exit Do]
[statements]
Loop [{While | Until} condition]
(2)While...Wend循环
While...Wend 语句是当指定的条件为 True 时,执行一系列的语句。语法形式为:
While condition
    [statements]
Wend
(3)For...Next循环   举例
For...Next语句是以指定次数重复执行一组语句。
语句一般形式是:
For counter = start To end [Step step]
[statements]
[Exit For]
[statements]
Next
 
For...Next 循环嵌套   举例
可以将一个For...Next循环放置在另一个For...Next循环中,组成嵌套循环。每个循环中的counter要使用不同的变量名。
(4)For Each...Next循环   举例
For Each...Next 循环与 For...Next 循环类似。For Each...Next不是将语句运行指定的次数,而是对于数组中的每个元素或对象集合中的每一项重复一组语句。这在不知道集合中元素的数目时非常有用。
For Each...Next 语句的一般形式如下:
For Each element In group
[statements]
[Exit For]
[statements]
Next [element]
 
(5)On Error 语句
语法形式:On Error Resume Next
当一个错误发生时,这条语句就执行紧靠发生错误语句后面的语句,或者执行紧靠调用进程后面的语句。
Sub cmdSubmit_OnClick
       On Error Resume Next
      Myvar="aaa"+30
       '显示引起错误的描述
       If Err <> 0 Then
          Msgbox "An error occurred. " & Err.Description
            Err.Clear
       End if
End Sub
 
十一.过程与函数据
 
1 . Sub 过程   例1 例2 例3
声明Sub过程的名称、参数以及构成其主体的代码。
Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub
注意: Sub过程 默认 为公用,即它们对于脚本中的所有其他过程都是 可见 的。Sub过程中 局部变量的值 在调用过程中不被保留。
注意: 不能在任何其他过程(例如,Function)中定义Sub过程。
 
Call 语句
将控制权传递给Sub或Function过程。其语句的一般形式如下:
[Call] name [argumentlist]
 
可选项关键字。如果指定此关键字,则必须用括号把 argumentlist 括起来。 例如 :
Call MyProc(0)
你可以调用同一个过程任意多次。
 
2 . Function 过程   例1 例2 例3 例4
声明Function过程的名称、参数以及构成其主体的代码,其一般语句形式是:
Function name [( arglist)]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function
 
与Sub过程基本相同,与Sub过程的 不同之处 是:函数有返回值,过程则没有。要从函数返回一个值,只需在函数内将值赋给函数名。在函数的任意位置都可以出现任意个这样的赋值。 如果没有给name赋值 ,则过程将返回一个默认值:数值函数返回0,字符串函数返回零长度字符串("")。
 
3 . 输入、输出函数
以下所讲的输入、输出函数只能在客户端使用,不能在服务端使用。
(1)InputBox函数
语法形式是:
InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])
在对话框中显示提示,等待用户输入文本或单击按钮,并返回文本框内容。 例如
Dim Input
Input = InputBox("输入姓名")
MsgBox ("输入的姓名是:" & Input)
(2)MsgBox函数  例1
在对话框中显示消息,等待用户单击按钮,并返回一个值指示用户单击的按钮。
MsgBox(prompt[,buttons][,title][,helpfile,context])
Dim MyVar
MyVar = MsgBox ("Hello World!", 65, "MsgBox Example")
'依据点击的按钮情况返回 1 或 2。
 
4 . 字符串函数
在VBscript中,系统提供了大量的字符串函数来处理有关字符串的事情。
(1)Left函数
语法形式:Left(string,length)
返回包含字符串中从左边算起指定数量的字符。
(2)Right函数
语法形式:Right(string,length)
返回包含从字符串右边取出的指定数量的字符。
(3)Mid函数
语法形式:Mid(string,start[,length])
返回包含字符串中指定数量的字符。
(4)Space函数
语法形式:Space(number)
返回特定数目的空格。
(5)Ltrim、Rtrim、Trim函数
语法形式:LTrim(string)、RTrim(string)、Trim(string)
返回包含指定字符串的拷贝,没有前导空白(LTrim)、尾随空白(RTrim)或前导和尾随空白(Trim)。
(6)InStr函数
语法形式:
InStr([start,]string1,string2[,compare])
返回一指定字符串在另一字符串中最先出现的位置。
(7) LCase函数
语法形式:LCase(string)
返回转成小写的String。
(8)UCase函数
语法形式:UCase(string)
返回转成大写的String。
(9)Len函数
语法形式:Len(string|varname)
返回包含字符串内字符的数目,或是存储一变量所需的字节数。
(10)Chr函数
语法形式:Chr(charcode)
返回ASCII码表与charcode对应的字符。
(11)Asc函数
语法形式:Asc(string)
返回一个代表字符串中首字母的字符ASCII码。
(12)Split函数
语法形式:
Split(expression[,delimiter[,count[,start]]])
返回下标从0开始的一维数组,其中包含指定数目的子字符串。
(13)Replace函数
返回字符串,其中指定数目的某子字符串被替换为另一个子字符串。
语法形式:
Replace(expression,find,replacewith[,compare[,count[,start]]])
(14)StrComp函数
语法形式:
StrComp(string1, string2[, compare])
返回一个表明字符串比较结果的值。
(15)String函数
语法形式:
String(number,character)
返回Variant(String),其中包含指定长度重复字符的字符串。
(16)Filter函数
Filter函数功能是过滤一个字符串数组,返回符合条件的子集合数组。
语法形式:
Filter(InputStrings,Value[,Include[,Compare]])
(17)StrReverse函数
语法形式:StrReverse(string1)
返回一个字符串,其中一个指定子字符串的字符顺序是反向的。

end
分享到:
评论

相关推荐

    JsScript VbScript脚本解析控件

    能让你的CS模式程序(Vc、VB、Delphi、BC等)轻松解析VbScript,JavaScript脚本语言。 大大增强你的程序逻辑处理的灵活性和程序的交互能力,轻松实现从BS系统提供的页面接口获取数据信息。 最大程度实现程序功能的免...

    Script\VBScript与JScript实例教程.rar

    Script\VBScript与JScript实例教程.rarScript\VBScript与JScript实例教程.rar

    PS script of VBscript

    manipulate and manager the photoshop using the VBScript application

    java script或者vbscript 脚本使用原始socket通信

    只在xp 环境下试过,x86系统应该问题不大,x64可能不支持,使用前先执行SocketReg.exe对组件进行注册,然后就可以在网页脚本中使用套接字了,这个组件是99年国外一公司开发的,本意是用来实现http ,ftp,smtp pop3...

    vbscript

    vb script 数据库 网页编程 编程

    VBScript语言参考.chm

    什么是 VBScript? Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的脚本应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机脚本和 ...

    WSH and VBScript - Advanced Windows Script Host Developers Guide (2003)

    WSH and VBScript - Advanced Windows Script Host Developers Guide (2003) ,非常有价值的资料

    微软Vbscript手册vbs

    什么是 VBScript? Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的脚本应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机脚本和 ...

    VBScript语言参考(官方)

    什么是 VBScript? Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的脚本应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机脚本和 ...

    VBscript.Encode解密

    VBscript.Encode解密 你懂的

    VBScript教程参考,Microsoft Visual Basic Scripting Edition 是程序开发语言

    VBScript教程参考,Microsoft Visual Basic Scripting Edition 是程序开发语言 Visual Basic 家族的最新成员,它将灵活的 Script 应用于更广泛的领域,包括 Microsoft Internet Explorer 中的 Web 客户机 Script ...

    script_Vbscript_4321_

    关不掉的窗口1关不掉的窗口2关不掉的窗口3关不掉的窗口4求通过

    Learning.Microsoft.WSH.and.VBScript.Programming

    Title: Microsoft WSH and VBScript Programming for the Absolute Beginner, 4th Edition Author: Jr. Jerry Lee Ford Length: 464 pages Edition: 4 Language: English Publisher: Cengage Learning PTR ...

    VBScript循序渐进

    VBScript是Visual Basic Script的简称,即 Visual Basic 脚本语言,有时也被缩写为VBS。是asp动态网页默认的编程语言,配合asp内建对象和ADO对象,用户很快就能掌握访问数据库的asp动态网页开发技术。  VBScript是...

    VBScript中文参考手册.chm

    VBScript中文参考手册。(chm无法显示内容时需在属性中“解除锁定”)

    VBSCRIPT手册.zip

    VBScript是Visual Basic Script的简称,即 Visual Basic 脚本语言,有时也被缩写为VBS。它是一种微软环境下的轻量级的解释型语言,它使用COM组件、WMI、WSH、ADSI访问系统中的元素,对系统进行管理。同时它又是asp...

    Microsoft Windows Script Technologies

    Microsoft Windows Script Technologies;VBScript,jscript,Script Runtime,Script Components,Windows Script Host技术参考

    Script全集_jscript(javascript)_vbscript教程

    是jscript(javascript前身,javascript是jscript的一个版本),vbscript和其它Windows 脚本的详细教程

    VBScript in a Nutshell 2nd Edition

    VBScript from Microsoft® is used in four main areas: server-side web applications using Active Server Pages (ASP), client-side web scripts using Internet Explorer, code behind Outlook forms, and ...

    vbscript参考手册

    讲解VBScript的各种应用,方便你平时的学习和研究,这也是一个比较实用的手册,欢迎下载~!

Global site tag (gtag.js) - Google Analytics