精华内容
下载资源
问答
  • VBScript脚本语言

    2014-06-08 23:19:42
    VBScript脚本语言VBScript脚本语言
  • VBscript脚本语言

    2018-04-06 18:57:00
     在ASP中,通过使用VBscript脚本语言编写程序代码,可以实现主要的功能模块。将VBscript程序嵌入到HTML中,制作出动态交互的Web页面,VBScript是程序开发语言Visual Basic的一个子集,为ASP默认的编程语言  一、...

    VBScript语言概述

      在ASP中,通过使用VBscript脚本语言编写程序代码,可以实现主要的功能模块。将VBscript程序嵌入到HTML中,制作出动态交互的Web页面,VBScript是程序开发语言Visual Basic的一个子集,为ASP默认的编程语言

      一、VBScript脚本语言的特点

    •   语言简单,易学易懂
    •   增强客户端功能、降低WEB服务器负荷。VBScript使得程序在将表单数据发送到服务器之前,就可以验证表单的数据,以进行相应处理,还可以动态的创建新的WEB内容,甚至可以编写完全在客户端运行的程序,并可以用于扩展客户端的功能
    •   可用于ASP程序设计。ASP提供了一个服务器端的脚本环境,应用VBScript语言可编写动态、交互、高效的应用程序。
    •   多种嵌入形式。开发者可以应用免费的VBScript脚本来编写程序。VBScript与IE浏览器是集成在一起的,VBScript和ActiveX空间也可以在应用程序中结合使用以实现特定的功能

      二、VBScript代码编写格式

      VBScript是VB语言的子集,他是专门为IE开发的编程语言,使用VBScript的目的是控制页面内容的动态交互性。使用VBScript可以编写服务器端脚本,也可以编写客户端脚本

      1.服务器端脚本编写格式

      服务器端脚本在服务器上执行,由服务器根据脚本的执行结果生成相应的HTML界面,发送到客户端。只有服务器端脚本才能实现真正的“动态网页“的功能。服务器端脚本的执行不受浏览器的限制,脚本在网页通过网络传送给浏览器之前被执行,WEB浏览器收到的只是标准的HTML文件

      在ASP程序中,编写服务器端脚本有两种方法。

      a.方法一:将脚本代码放在<%...%>标识符之中

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>服务器端脚本1</title>
    </head>
        <%
            dim num
            num=1
            if num <> 0 then response.Write("欢迎来到ASP编程世界")
        %>        
    <body>
    </body>
    </html>
    View Code

      b.方法二:将脚本代码放置在<script>...</script>标记之间

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>服务器端脚本2</title>
    </head>
        <script language="vbscript" runat="server">
            dim num
            num=1
            if num <> 0 then response.Write("欢迎来到ASP编程世界")
        </script>        
    <body>
    </body>
    </html>
    View Code

      2.客户端脚本编写格式

      客户端本由浏览器解释执行。由于客户端脚本随着HTML页面下载到客户端浏览器,在用户本地执行,因此其执行速度明显快于服务器端脚本。客户端脚本常用于做简单的客户端验证或实现网页特效等。

      客户端脚本的代码是写在<script></script>标记之间的。可以将编写完成的代码块放置在HTML文档中的任何位置。但是通常情况下,是在代码块放在<Head>标记之间的,以便查看和使用

      <script language="脚本语言" [event="事件名称"] [for="对象名称"]>

        <!--

          //脚本代码

        -->

      </script>

        language:用于指定脚本代码使用的语言

      event:用于指定脚本代码相关联的事件

      for:用于指定脚本代码相关联的对象

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>客户端脚本</title>
    <script language="VBSCRIPT" event="onClick" for="btn1">
        MsgBox "您单击了此按钮"
    </script>
    </head>
    <body>
    <input name="btn1" value="单击按钮" type="button" id="btn1"/>
    </body>
    </html>
    View Code

    注意:VBScript的MsgBox函数不能在服务器端脚本中使用,因为信息框是用户界面元素,不能在服务器端执行

    三、常量与变量

      常量与变量是VBScript的常见元素,本节介绍VBScript中常量、变量的声明和赋值以及如何确定变量的作用域和存活期

      1.VBscript常量

      常量是具有一定含义的名称,用于代替数值和字符串,在程序执行期间其值不会发生变化。常量可分为普通常量和符号常量。普通常量可以称为文字常量,它不必定义就可以在程序中使用,而符号常量则要以Const语句加以声明才能使用

      a.文字常量

      按照数据类型的不同,分为字符串常量、数值常量和日期时间常量

      字符串常量:主要是由一对双引号括起来的字符序列组成

      数值常量:分为整形常量、长整型常量和浮点型常量。其中整形常量和长整型常量可以用十进制、十六进制和八进制三种形式表示

      日期和时间常量::用一对#号括起来#2007-12-09 11:12:32#

      b.符号常量

      符号常量使用一个标识符表示的常量,用于代替数字和字符串,在程序执行期间其值不会发生变化。在VBScript中,可以通过关键字Const语句定义。分为预定义符号常量和用户自定义常量

      预定义常量:是在VBScript中建立的,并在使用之前不用定义的常量。在代码的任意位置都可以使用此常量所表示的说明值。例如:vbCr表示回车;Empty表示没有初始化之前的值

      用户自定义常量:通过Const语句来创建的。使用Const语句可以创建具有一定意义的字符串型或数值型常量,并赋予一个初始值。例如:Const PI=3.1415  Const OlympicsBJ=#2008-8-8#

      2.变量的声明和赋值

      变量是一种使用方便的占位符,主要用于引用计算机的内存来存储脚本运行时更改的数据类型。在VBScript中的变量不区分大小写。

      VBScript中声明 变量有两种方式,一种是显式声明,另一种是隐式声明

      显示声明:通过变量声明语句来声明变量,它可以在定义变量的时候为变量在内存中预留内存空间。声明语句包括Dim语句、public语句和private语句。一个声明语句可以声明多个变量,并应用逗号将多个变量分开

      ① 通过Dim语句声明变量

      Dim 变量名 [,变量名]

        <%
            dim i
            dim Conn,ConnStr,Rs,sqlStr
            dim array(10)
        %>
    View Code

      ② 通过public语句声明变量

      public 变量名 [,变量名]

      例如:public Standard

      ③ 通过Private语句声明变量

      private语句是用来声明私有变量的,声明的变量只能在声明它的脚本中使用

      private 变量名 [,变量名]

      隐式声明:因为在VBScript中只有一种数据类型,即遍体类型,所以在VBscript中使用一个变量前是无需声明的,可以直接在脚本代码中使用。当在程序运行过程中检测到该变量时,系统会自动在内存中开辟存储区域并登记该变量名。

      为了避免隐式声明时因写错变量名等一起的问题,在VBScript中提供了Option Explcit语句。强制声明会增加代码量,但可以提高程序的可读性,减少出错的机会,Option Explcit语句必须位于ASP处理命令之后、任何HTML文本或脚本命令之前。

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
        <%
            Option Explicit
        %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title></title>
    </head>
    <body>
        <%
            dim str
            str="sss"
        %>
    </body>
    </html>
    View Code

       3.变量的作用域和存活期

      ①变量的作用域:由声明的位置决定。分为脚本级变量和过程级变量

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>区分变量的作用域</title>
    </head>
    <body>
        <%
            dim str                '声明脚本级变量
            str="体育项目"        '赋值
            call GetResult()    '调用子过程
            Response.Write str    '输出变量的值
            
            '下面定义子过程
            sub GetResult()
            dim str                '声明过程级变量
            str="网球、乒乓球、足球..."
            end sub        
        %>
    </body>
    </html>
    View Code

    四、运算符的应用

      运算符是完成操作的一系列符号。VBScript中运算符包括算数运算符、连接运算符、关系运算符、逻辑运算符等几种类型。当表达式包含多个运算符时,将按预定顺序计算每一部分,该顺序称为优先级

       1.算数运算符

      +:加法

      -:减法

      *:乘法

      ^:指数次方

      /:相除返回浮点型结果

      \:相除返回整形结果

       2.连接运算符

       连接运算符是将两个字符串连接起来形成一个字符串,有+和&两种,其中+连接两个字符串,&可以用来连接两种不同类型的数据

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title></title>
    </head>
    <body>
        <%
            dim s1,s2,s3,r1,r2
            s1="today "
            s2="is "
            s3=#12/25/09#
            r1=s1 + s2        '字符串与字符串的连接
            r2=r1 & s3        '字符串与日期的连接
            response.Write r2
        %>
    </body>
    </html>
    View Code

      3.关系运算符

      关系运算符用于对两个表达式的值进行比较

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>关系运算符</title>
    </head>
    <body>
        <%
            Dim x
            x=100
            if x <> 200 then    '判断x是否与200相等
                response.Write "不相等"
            else
                response.Write "相等"
            end if
        %>
    </body>
    </html>
    View Code

       4.逻辑运算符

      逻辑运算符通常也称为布尔运算符,专门用于逻辑之间的运算。用于完成逻辑运算符的运算符有以下几种

      ①取反 Not

      ②与运算 And

      ③或运算 Or

      ④异或运算 Xor:如果两个表达式的结果同时为真或同时为假则结果为假,不然为真

      ⑤等价运算符 Eqv:是异或运算符取反的结果

     五、函数的应用

       VBScript提供了许多重要的内部函数,如字符串函数、转换函数、日期和时间函数、判断函数、数学函数以及其它函数的应用

      1.字符串处理

    函数说明
    Asc(str)返回第一个字符的ASCII字符代码
    InStr(start,str1,str2)返回从字符串str1的start位置查找str2第一次出现的位置,str1和str2同时返回0
    Lcase(str)将字符串中的所有字符转换为小写
    Left(str,len)返回字符串str最左侧长度为len的字符串
    Len(str)返回字符串的长度
    Ltrim(str)去除str左侧的空格
    Mid(str,start,len)返回从str的第start个字符开始的len个字符
    Right(str,len)返回字符串右侧的len个字符
    Rtrim(str)去掉字符串右边的空格
    StrComp(str1,str2,[method])使用method方式比较两个字符,其中0表示二进制方式比较,1表示文字方式比较。比较的结果返回为1、-1、0
    InStrRev(str1,str2)返回字符串str1中从尾部开始搜索某字符串str2第一次出现的位置
    Trim(str)去除字符串两端的空格
    Ucase(str)将字符串str转换为大写

     

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>取字符串的子串</title>
    <style type="text/css">
    <!--
    .STYLE1 {
        color: #3333CC;
        font-style: italic;
        font-weight: bold;
    }
    -->
    </style>
    </head>
    <body>
        <span class="STYLE1">代码要求:取出”2015-12-14 15:05:03“中的年月日部分:    </span><br>
        <%
            dim r,len,str
            r=#2015-12-14 15:05:03#
            len=InStr(1,r," ")
            str=Left(r,len)
            response.Write str
        %>
    </body>
    </html>
    View Code

      2.数据转换

      转换函数用于将一种类型的数据转换为其它类型的数据

    函数说明
    CBool(expression)将expression转换为布尔类型
    CByte(expression)将expression转换为单字节类型
    CDate(expression)将expression转换为日期类型
    CDbl(expression)将expression转换成双精度类型
    Chr(expression)将expression所表示的ASCII转换为对应字符串
    CInt(expression)将expression转换成整数类型
    CLng(expression)将expression转换成长整数类型
    CSng(expression)将expression转换成单精度类型
    CStr(expression)将expression 转换成字符串类型
    Hex(expression)将expression 转换成十六进制类型
    Int(expression)将expression 向下取整
    Fix(expression)将expression 向上取整
    Oct(expression)将expression 转换成八进制类型

     如例:将字符串转换为整形

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>将字符串转为整形</title>
    </head>
    <body>
        <%
            dim str,num
            str="100"
            num=Cint(str)+2
            response.Write num
        %>
    </body>
    </html>
    View Code

       3.日期时间数据的处理

      日期时间函数用于对日期、时间数据进行处理

    函数说明
    Date()返回系统当前日期
    DateSerial(year,moth,day)返回日期子类型
    DateVlaue(String)将字符串转换为日期型
    Day(Date)返回给定日期中的天
    Hour(Time)返回给定时间中的小时
    Minute(Time)返回给定时间中的分钟
    Second(Time)返回给定时间中的秒
    Now()返回当前系统的日期和时间
    Time()返回当前系统的时间
    TimeVlaue(String)将字符串转换为时间型
    Year(Date)返回当前日期的年
    Month(Date)返回当前日期的月份
    WeekDay(Date)返回一周中的某一天
    DateDiff("str",d1,d2)

    计算两个日期之间的间隔,str为yyyy表示计算年间隔,为m表示计算月间隔,

    为d表示日间隔,为ww表示星期间隔,为h表示计算小时间隔,为s表示计算秒间隔

    DateAdd("str",num,d1)

    返回日期d1加上数字num后的日期,其中num的单位根据str的值而不同

     

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>得到计算的时</title>
    </head>
    <body>
        <script language="vbscript" runat="server">
            response.write("今天是星期" & WeekDay(Date)-1 & "<br>")
            response.write("两年前的今天是" & DateAdd("yyyy",-2,Date()) & "<br>")
            response.write("距离2018-05-01还有:" & DateDiff("d",Date(),#2018-05-01#) & "")
        </script>
        
    </body>
    </html>
    View Code

       4.数据类型的判断

    函数说明
    IsArray(Var)判断var是否为一个数组
    IsDate(Var)判断var是否可以转换为日期类型
    IsEmpty(Var)判断var是否已经被初始化
    IsNull(Var)判断var是否为空
    IsNumber(Var)判断var是否为数字
    IsObject(Var)判断var是否为对象
    VarType(Var)判断var的类型,返回0表示空,2表示整数,7表示日期,8表示字符串,11表示布尔值,8204表示数组

      数据类型判断函数应用比较广泛,在使用数据之前判断此数据的类型,有助于提高程序运行的有效性

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>判断函数应用</title>
    </head>
    <body>
        <%
            dim num
            num=1
            if not isempty(num) then
                response.Write "不为空"
            else
                response.Write "空值"
            end if
        %>
    </body>
    </html>
    View Code

     

      5.数学函数的应用

    函数说明
    Rnd用于返回一个随机数
    Randomize初始化随机数生成器
    Int返回数字的整数部分
    Fix返回数字的整数部分
    Abs返回数字的绝对值
    Exp返回e的幂次方
    Log返回数值的自然对数
    Sqr返回数值的平方根
    Round返回按指定位数进行四舍五入对的值

      代码:生成随机数

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>生成随机数</title>
    </head>
    <body>
        <%
            dim i,r,str
            for i=1 to 3
                Randomize
                r=Int((6*rnd)+1)
                str=str&r
            next
            response.Write "生成随机数为:" & str
        %>
    </body>
    </html>
    View Code

     

    六、数组的创建与应用

      数组是有序数据的集合。数组中的每一个元素都属于同一数据类型,用一个统一的数组名和下标可以唯一确定数组中的元素,下标是放在紧跟在数组名之后的括号中。数组的最大维数为60

      1.创建数组

      在VBScript中有固定数组和动态数组两种

      ①固定数组:数组大小在程序运行时不可改变的数组。数组在使用前必须先声明

        dim array(i)

      在VBScript中,数组的下标是从0开始计数的,数组的长度为i+1

      例如:

        dim ary(3)    '该数组的长度是4而不是3

        dim db_array(5,10)  '声明一个6*11的二维数组

      声明数组后就可以通过下标对数组进行指定赋值

      例如:

        dim ary(3)

        ary(0)="demo"

      ②动态数组:声明数组时也可以不指明它的下标,这样的数组叫做变长数组

      例如:

        dim ary()

      虽然动态数组声明时无须指明下标,但在使用它之前必须使用ReDim语句确定数组的维数

        dim array()

        Redim array(i)

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim i
            dim MyArray()        '声明动态数组
            Redim MyArray(3)    '定义长度为4
            
            for i=0 to 3
                MyArray(i)=2*i
            next
            response.Write "数组MyArray中元素为:<br>"
            for i=0 to 3
                response.Write MyArray(i) & "<br>"
            next
        %>
    </body>
    </html>
    View Code

     

      使用Redim语句可以多次改变元素下标,即重新动态调整动态数组大小的次数是没有限制的,但是使用Redim语句重新声明数组后,原有数组的数值将会全部清空,如果希望保留原有下标数值,则可以I使用Preserve关键字

      例如:

        dim ary()

        Redim ary(5)

        ......

        Redim Preserve ary(Ubount(ary)+1)

        以上代码将数组长度加1,但数组中原有的元素值不变。Ubound()函数返回原有数组的最大索引

      2.应用数组函数

      数组函数用于对数组的操作,主要有LBound函数、UBound函数、Split函数和Erase函数

      ①LBound函数:返回指定数组维的最小可用下标

        LBound(函数名称,[,维数])

      维数是指要返回指定维下界的整数,如果为1则表示第一维,为2表示第二维...如果省略维数,则默认维数为1

      例如:代码结果为0

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim ary(5,10)
            response.Write(LBound(ary,2))
        %>
    </body>
    </html>
    View Code

     

      ②UBound函数:返回指定数组维的最大可用下标

      UBound(函数名称,[,维数])

      ③Split函数:返回基于0的一维数组,其中包含指定数组的子字符串。

      Split(expression [,分隔符 [,count [,比较类型]]])

        expression:表示需要处理的字符串,包含子字符串和分隔符。如果表达式长度为零,则返回空数组

        count:可选项,表示被返回的子字符串数目,如果为-1,则返回所有子字符串。

        比较类型:为可选项,用于指示在计算子字符串时使用的比较类型的数值,0表示二进制比较,1表示文本比较,2表示基于数据库中包含信息的比较

      例如:读取字符串中以符号/分割的各子字符串

    <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>使用动态数组</title>
    </head>
    <body>
        <%
            dim str,str_sub,i
            str="ASP程序开发/VB程序开发/.NET程序开发"
            str_sub=Split(str,"/")
            for i=0 to Ubound(str_sub)
                response.Write(i+1 & ". " & str_sub(i) & "<br>")
            next
        %> 
    </body>
    </html>
    View Code

     

       ④Erase函数:重新初始化固定大小数组的元素,并释放数组的存储空间。

        Erase array

    七、程序控制语句

      1.选择语句

      ①if...then...end if

      ②if...then...else...end if

      ③select case 变量或表达式

        case:结果1

          命令序列

        ...

        end select

      2.循环语句

      ① do...loop语句分为两种

      循环条件出现在语句的开始部分

      do while 条件表达式

        循环体

      Loop

      或

      do util 条件表达式

        循环体

      Loop

      循环条件出现在语句的结尾部分

      do

        循环体

      loop while 条件表达式

      或

      do

        循环体

      loop util 条件表达式

      其中while和util关键字的作用相反,while是条件为true时执行循环体,而util是条件为true时退出循环体

      在do...loop语句中,当条件表达式在前时,表示在循环条件为真时才能执行循环体,而表达式在后时,至少会执行一次循环体

      在do...loop语句中,强制退出循环使用exit do,for语句中使用exit for

      例如:应用do...loop计算多个数字的和

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>do loop</title>
     7 </head>
     8 <body>
     9     <%
    10         dim num,sun
    11         num=0
    12         sum=0
    13         do until num>50
    14             num=num+1
    15             sum=sum+num
    16         loop
    17         response.Write("求和得到的结果是: " & sum)
    18     %> 
    19 </body>
    20 </html>
    View Code

      ②while...wend循环控制语句 :当指定的条件为true时执行一系列的语句,该语句与do...loop循环语句类似

      while condition

        [statement]

      wend

      condition:数值或字符串表达式,其计算结果为true或false。

       ③for...next循环控制语句:for...next语句是一种强制性的循环语句

      for count=start to end [step number]

        statement

          [exit for]

      Next

      ④ for each ...next循环控制语句:主要用于数组或集合中的每个元素而重复执行的语句,特别是在不知道集合长度的时候是不错的选择

      for each 元素 in 集合或数组

        循环体

        [exit for]

      next

      ⑤exit退出循环语句:主要用于退出,do...loop、for...next、function、sub代码块,其对应的退出语句分别为exit do、exit for、exit function、exit sub

    八、过程的创建与调用  

      过程是一组能执行指定任务的脚本命令,在VBScript中,过程分为两种,分为Sub过程和Function过程,两者的区别在于sub没有返回值,而function过程有返回值

      1.调用sub过程

      sub过程指包含在sub和end sub之间的VBScript语句,该过程执行操作但是没有返回值,sub过程可以使用参数(参数可以为调用过程传递的常量、变量或表达式)

      声明一个过程的语法格式如下:

      Sub 子程序名([参数1,参数2])

        ......

      end sub

      在asp页面中,调用sub有以下方式

      ①使用call语句调用sub过程

        call 子程序名(参数1,参数2)    ‘使用call语句可以将控制权传递给sub过程

      ②直接调用sub过程

      子程序名 参数1,参数2...

      例如:自定义sub过程判断闰年

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>判断闰年</title>
     7 </head>
     8 <body>
     9     <%
    10         sub y(num)
    11             if (num mod 4=0) and (num mod 100 <> 0) then
    12                 response.Write(num & "年:是闰年<br>")
    13             else
    14                 response.Write(num & "年:不是闰年<br>")
    15             end if
    16         end sub
    17         call y(2000)
    18         y 2020
    19     %> 
    20 </body>
    21 </html>
    View Code

     

      2.调用function过程

      Function过程是包含在Function和end Function之间的一组VBScript语句,Function通过过程名返回一个值,这个值是在过程的语句中赋值给过程名的。Function返回值的类型总是Varian

      Function过程的语法格式如下:

      [public | private] Function name ([arglist])

        [statements]

        [name=expression]

        [exit Function]

        [Statemtns]

        [name=expression]

      end function

      function过程各参数说明:

    参数说明
    public表示Function过程可以被脚本中的所有其他过程访问
    private表示Function过程只能被声明它的脚本中的过程访问
    name过程名称
    arglist参数列表
    statements主体中执行的语句组
    expression常量、变量或表达式

      Function过程的调用方法和sub过程的调用方法相同。当Function过程没有返回值的时候可以使用call来调用过程;当Function过程有返回值时,使用过程名来调用过程

      例如:定义Function过程限制标题显示的长度

     1 <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
     2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
     3 <html xmlns="http://www.w3.org/1999/xhtml">
     4 <head>
     5 <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
     6 <title>function</title>
     7 </head>
     8 <body>
     9     <%
    10         function title__(tit)
    11             if(len(tit)>20) then
    12                 title__=left(tit,20)&"..."
    13             else
    14                 title__=tit
    15             end if
    16         end function
    17         dim str 
    18         str = "春之颂 大型电影交响音乐会将于2018年4月18日19:30 在国家大剧院盛装上演"
    19         response.Write "原标题名称为:"&str&"<br>"
    20         response.Write "修正后的标题为:"&title__(str) 
    21     %> 
    22 </body>
    23 </html>
    View Code

     

    转载于:https://www.cnblogs.com/dzj0712/p/8728497.html

    展开全文
  • 主要介绍了IIS报在服务器上找不到脚本语言'VBScript.encode'错误解决方法,其实这是一种服务器安全设置,一般虚拟主机都会禁用,需要的朋友可以参考下
  • VBScript脚本语言.pdf

    2014-01-03 15:46:50
    vbs、脚本、有兴趣的可以看一下,了解一下
  • 本课程主要分享VBScript脚本语言编程与自动化运维操作学习教程! 2、课程目标         本课程致力于帮助学员学习并掌握VBScript脚本语言编程及自动化运维技巧! 3、适合人员    ...
  • vbscript脚本语言

    2009-10-22 10:24:49
    上传的资料特别适合新手学习,不过也适合学习vbscritp和qtp的用户,该资料详细讲解了vbscript的用法和基本使用。
  • 脚本语言是一段自己不能独立运行,必须要嵌入到HTML语言中才能运行的代码。
  • 可以在“字母顺序关键字列表”中找到 VBscript 语言的所有主题。如果只需要查看某个主题(例如对象),则有对该主题进行详细说明的章节可供查阅。 如何操作呢?单击左边任意一个标题,即可显示该标题所包含的项目...
  • VBScript脚本语言基础

    2013-09-07 16:18:18
    不错的基础教材,有兴趣的看看,收益良多。
  • vbscript脚本语言.ppt

    2011-05-29 14:13:50
    VBScript脚本语言是一种介于HTML语言和Visual Basic(简称VB)高级语言之间的一种语言。VBScript直接来源于VB,是高级语言VB的一个子集。
  • 在服务器上找不到脚本语言VBScript.encode’ /config.asp,行 5 按道理程序在本地调试过的,没有问题,于是找到了网站根目录下的config文件,看向第5行,居然是一些乱码!噢,原来是加密过的,程序作者为了版权,...
  • c#中执行脚本语言(vbscript)

    千次阅读 2019-05-07 18:28:13
    设置或获取脚本引擎解释的语言,例如:VBScript、JScript。 Name String 脚本引擎的名称。只读。 Procedures Procedures ...

    1.参考来自链接 https://www.xuebuyuan.com/513011.html 与 https://bbs.csdn.net/topics/380229790

    这个库文件Interop.MSScriptControl.dll我硬是在我的电脑中没找到,网络上也搜索了,有下载链接,但还是没下载,

    有知道出处的可以给我留个言,了解下.

    2.后参照了这两个链接 https://blog.csdn.net/DXCyber409/article/details/79976104https://blog.csdn.net/blacksource/article/details/17265607 在项目中添加引用了MSScript.ocx.

    具体添加引用方式,【项目】->【添加引用】->【COM】->选择Microsoft Script Control 1.0组件

    3.确定后就添加引用完成了,下面就可以进行编写执行脚本代码例子了,我这里仅编写了vbscript的例子,javascript的例子请自行     参考下面代码进行编写.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Windows.Forms;
    using MSScriptControl;//这里添加引用MSScript.ocx成功后,就可以using了
    
    namespace Execute_script
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            //调用库函数(ExecuteStatement)
            private void button1_Click(object sender, EventArgs e)
            {
                ScriptControl msc = new ScriptControl();
                msc.Language = "VBScript";
                msc.ExecuteStatement("msgbox \"hello world\"");
            }
    
            //执行表达式(Eval)
            private void button2_Click(object sender, EventArgs e)
            {
                ScriptControl msc = new ScriptControl();
                msc.Language = "VBScript";
                object l_obj = msc.Eval("1 + 2");
                MessageBox.Show(l_obj.ToString()); 
            }
    
            //调用自定义方法sub(method_1,无参数)
            private void button3_Click(object sender, EventArgs e)
            {
                ScriptControl msc = new ScriptControl();
                msc.Language = "VBScript";
                StringBuilder l_str = new StringBuilder();
    
                l_str.Append("sub method_1()");
                l_str.AppendLine("\r\n");
                l_str.Append("MsgBox \"call method_1\",vbInformation, \"method_1\" ");
                l_str.AppendLine("\r\n");
                l_str.Append("end sub");
                msc.AddCode(l_str.ToString());
    
                object[] l_args = new object[0];
                msc.Run("method_1", l_args);
            }
    
            //调用自定义方法sub(method_1,有参数)
            private void button4_Click(object sender, EventArgs e)
            {
                ScriptControl msc = new ScriptControl();
                msc.Language = "VBScript";
                StringBuilder l_str = new StringBuilder();
    
                l_str.Append("sub method_1(var1, var2)");
                l_str.AppendLine("\r\n");
                l_str.Append("MsgBox \"call method_1, parameter var1 = \" & var1 & \", parameter var2 = \" & var2,vbInformation, \"method_1\"");
                l_str.AppendLine("\r\n");
                l_str.Append("end sub");
                msc.AddCode(l_str.ToString());
    
                object[] l_args = new object[2];
                l_args[0] = "01";
                l_args[1] = "02";
                msc.Run("method_1", l_args);
            }
    
            //调用自定义函数function(func_1,有参数)
            private void button5_Click(object sender, EventArgs e)
            {
                ScriptControl msc = new ScriptControl();
                msc.Language = "VBScript";
                StringBuilder l_str = new StringBuilder();
    
                l_str.Append("function func_1(var1, var2)");
                l_str.AppendLine("\r\n");
                l_str.Append("MsgBox \"call func_1, parameter var1 = \" & var1 & \", parameter var2 = \" & var2,vbInformation, \"func_1\"");
                l_str.AppendLine("\r\n");
                l_str.Append("func_1 = var1 + var2");
                l_str.AppendLine("\r\n");
                l_str.Append("end function");
                msc.AddCode(l_str.ToString());
    
                object[] l_args = new object[2];
                l_args[0] = 1;
                l_args[1] = 2;
                object l_obj = msc.Run("func_1", l_args);
                MessageBox.Show(l_obj.ToString());
            }
    
            //调用自定义函数function(func_1,无参数)
            private void button6_Click(object sender, EventArgs e)
            {
                ScriptControl msc = new ScriptControl();
                msc.Language = "VBScript";
                StringBuilder l_str = new StringBuilder();
    
                l_str.Append("function func_1()");
                l_str.AppendLine("\r\n");
                l_str.Append("MsgBox \"call func_1\",vbInformation, \"func_1\"");
                l_str.AppendLine("\r\n");
                l_str.Append("Randomize");
                l_str.AppendLine("\r\n");
                l_str.Append("func_1 = Rnd");
                l_str.AppendLine("\r\n");
                l_str.Append("end function");
                msc.AddCode(l_str.ToString());
    
                object[] l_args = new object[0];
                object l_obj = msc.Run("func_1", l_args);
                MessageBox.Show(l_obj.ToString());
            }
        }
    }
    

    4.ScriptControl接口介绍可参考链接  https://www.cnblogs.com/coolsundy/p/7116123.html

    ScriptControl接口

    属性名称

    类型

    备注

    AllowUI

    BOOL

    检测是否允许运行用户的接口元素。如果为False,则诸如消息框之类的界面元素不可见。

    CodeObject

    Object

    脚本暴露给宿主调用的对象。只读。

    Modules

    Modules

    宿主提供给脚本的组件库模块。只读。(COM组件通常都是以对象收集的形式向用户提供可以留给用户二次开发的对象集合,每一个收集即一个Modules)

    Language

    String

    设置或获取脚本引擎解释的语言,例如:VBScript、JScript。

    Name

    String

    脚本引擎的名称。只读。

    Procedures

    Procedures

    返回模块中定义的过程的集合

    SitehWnd

    HWND

    在脚本中显示UI的父窗口句柄

    State

    Enum

    设置或返回控件的状态,如果为0,控件只执行语句但不转发事件,为1则为加入的本控件接受的对象转发事件。

    Timeout

    Long

    控件的执行脚本的超时值,-1表示不超时

    UseSafeSubset

    BOOL

    设置或返回宿主程序是否关心安全。宿主程序的安全级别可以从此属性设置

    Error

    Error

    错误对象,发生错误时,此属性返回一个错误对象

    方法名称

    参数

    功能

    AddCode

    Code As String

    往脚本引擎中加入要执行的脚本

    AddObject

    Name As String, Object As Object, [AddMembers As Boolean = False]

    往脚本引擎加入一个对象,以便在脚本中可以使用该对象提供的方法等。

    Eval

    Expression As String

    表达式求值

    ExecuteStatement

    Statement As String

    解释并执行脚本语句

    Reset

     

    丢弃所有的对象和代码,将State属性置0。

    Run

    ProcedureName As String, ParamArray Parameters() As Variant

    运行一个指定的过程

    事件名称

    功能

    Error

    有错误发生时激发该事件

    TimeOut

    执行过程超时时发生

    5.ScriptEngine类,我这里也收藏一份,也许以后可以参考使用,来自链接https://www.xuebuyuan.com/513011.html

    using System;
    using System.Collections.Generic;
    using System.Text;
    using MSScriptControl;
    
    namespace MyQuery.CSharpScript
    {
        /// <summary>
        /// 脚本运行错误代理
        /// </summary>
        public delegate void RunErrorHandler();
    
        /// <summary>
        /// 脚本运行超时代理
        /// </summary>
        public delegate void RunTimeoutHandler();
    
        /// <summary>
        /// 脚本处理引擎
        /// by 开源盛世-源代码下载网 基于网络文章整理开发,是学习自定义脚本的产物
        /// </summary>
        public sealed class ScriptEngine
        {
            private ScriptControlClass msc;
            /// <summary>
            /// 定义脚本运行错误事件
            /// </summary>
            public event RunErrorHandler RunError;
            /// <summary>
            /// 定义脚本运行超时事件
            /// </summary>
            public event RunTimeoutHandler RunTimeout;
    
            /// <summary>
            ///构造函数
            /// </summary>
            public ScriptEngine()
                : this(ScriptLanguage.JavaScript)
            {
            }
    
            /// <summary>
            /// 构造函数
            /// </summary>
            /// <param name="language">脚本类型</param>
            public ScriptEngine(ScriptLanguage language)
            {
                this.msc = new ScriptControlClass();
                this.msc.UseSafeSubset = true;
                this.msc.Language = language.ToString();
                ((DScriptControlSource_Event)this.msc).Error += new DScriptControlSource_ErrorEventHandler(ScriptEngine_Error);
                ((DScriptControlSource_Event)this.msc).Timeout += new DScriptControlSource_TimeoutEventHandler(ScriptEngine_Timeout);
            }
    
            /// <summary>
            /// 运行Eval方法
            /// </summary>
            /// <param name="expression">表达式</param>
            /// <param name="codeBody">函数体</param>
            /// <returns>返回值object</returns>
            public object Eval(string expression, string codeBody)
            {
                msc.AddCode(codeBody);
                return msc.Eval(expression);
            }
    
            /// <summary>
            /// 运行Eval方法
            /// </summary>
            /// <param name="language">脚本语言</param>
            /// <param name="expression">表达式</param>
            /// <param name="codeBody">函数体</param>
            /// <returns>返回值object</returns>
            public object Eval(ScriptLanguage language, string expression, string codeBody)
            {
                if (this.Language != language)
                    this.Language = language;
                return Eval(expression, codeBody);
            }
    
            /// <summary>
            /// 运行Run方法
            /// </summary>
            /// <param name="mainFunctionName">入口函数名称</param>
            /// <param name="parameters">参数</param>
            /// <param name="codeBody">函数体</param>
            /// <returns>返回值object</returns>
            public object Run(string mainFunctionName, object[] parameters, string codeBody)
            {
                this.msc.AddCode(codeBody);
                return msc.Run(mainFunctionName, parameters);
            }
    
            /// <summary>
            /// 运行Run方法
            /// </summary>
            /// <param name="language">脚本语言</param>
            /// <param name="mainFunctionName">入口函数名称</param>
            /// <param name="parameters">参数</param>
            /// <param name="codeBody">函数体</param>
            /// <returns>返回值object</returns>
            public object Run(ScriptLanguage language, string mainFunctionName, object[] parameters, string codeBody)
            {
                if (this.Language != language)
                    this.Language = language;
                return Run(mainFunctionName, parameters, codeBody);
            }
    
            /// <summary>
            /// 放弃所有已经添加到 ScriptControl 中的 Script 代码和对象
            /// </summary>
            public void Reset()
            {
                this.msc.Reset();
            }
    
            /// <summary>
            /// 获取或设置脚本语言
            /// </summary>
            public ScriptLanguage Language
            {
                get { return (ScriptLanguage)Enum.Parse(typeof(ScriptLanguage), this.msc.Language, false); }
                set { this.msc.Language = value.ToString(); }
            }
    
            /// <summary>
            /// 获取或设置脚本执行时间,单位为毫秒
            /// </summary>
            public int Timeout
            {
                get { return this.msc.Timeout; }
                set { this.msc.Timeout = value; }
            }
    
            /// <summary>
            /// 设置是否显示用户界面元素
            /// </summary>
            public bool AllowUI
            {
                get { return this.msc.AllowUI; }
                set { this.msc.AllowUI = value; }
            }
    
            /// <summary>
            /// 宿主应用程序是否有保密性要求
            /// </summary>
            public bool UseSafeSubset
            {
                get { return this.msc.UseSafeSubset; }
                set { this.msc.UseSafeSubset = true; }
            }
    
            /// <summary>
            /// RunError事件激发
            /// </summary>
            private void OnError()
            {
                if (RunError != null)
                    RunError();
            }
    
            /// <summary>
            /// OnTimeout事件激发
            /// </summary>
            private void OnTimeout()
            {
                if (RunTimeout != null)
                    RunTimeout();
            }
    
            private void ScriptEngine_Error()
            {
                OnError();
            }
    
            private void ScriptEngine_Timeout()
            {
                OnTimeout();
            }
        }
        /// <summary>
        /// 脚本语言枚举
        /// </summary>
        public enum ScriptLanguage
        {
            /// <summary>
            /// JScript脚本语言
            /// </summary>
            JScript,
    
            /// <summary>
            /// VBscript脚本语言
            /// </summary>
            VBScript,
    
            /// <summary>
            /// JavaScript脚本语言
            /// </summary>
            JavaScript
        }
    
    }

    6.这篇文章介绍了在64位系统中使用时的解决方案,好像目前仅支持32位系统哦,有兴趣的可以自行研究.

    Interop.MSScriptControl in a 64 bit C# application

    https://social.msdn.microsoft.com/Forums/vstudio/en-US/f5314ce1-2791-457f-84ea-884bbeb4d57f/interopmsscriptcontrol-in-a-64-bit-c-application

     

    7.文章 https://www.xuebuyuan.com/513011.html 中的下半部分涉及到了c#的动态编译运行的实现,有兴趣的可以参考借鉴或者

       查看我的【c#动态编译与代码执行】文章 https://mp.csdn.net/postedit/89924449 

     

    8.调用VbScript脚本文件,请参考文章 https://blog.csdn.net/weixin_34419326/article/details/85475760,主要代码这里赋值,具体见下面代码,未做测试.

       vbs_Record.vbs:

    Function vbs_Record (strChId,strDate,strStartTime,strStopTime,strTimeLen,strTimeLenS,strCallType,strCallResult,strCallerId,strDtmf,strRecordFile,strSessionId) 
    
    msgbox strChId & " , " & strDate & " , " & strStartTime & " , " & strStopTime & " , " & strTimeLen & " , " & strTimeLenS & " , " & strCallType & " , " & strCallResult & " , " & strCallerId & " , " & strDtmf & " , " & strRecordFile & " , " & strSessionId 
    
    Set cn = CreateObject("ADODB.Connection")
    strCn = "provider=SQLOLEDB.1;" & _
    "Persist Security Info=False;" & _
    "User ID=sa;"& _
    "password=*******;" & _
    "Initial Catalog=DataBase;" & _
    "data source=(local)"
    
    cn.Open strCn
    
    if strCallerId<>"" then
    strPhoneNumber=strCallerId
    else
    strPhoneNumber=strDtmf
    end if 
    
    str = "insert into cti_Record(SessionId,StartDate,StartTime,StopTime,TimeLen,PhoneNumber,CallType,RecordFile) values('"+strSessionId+"','"+strDate+"','"+strStartTime+"','"+strStopTime+"','"+strTimeLenS+"','"+strPhoneNumber+"','"+strCallType+"','"+strRecordFile+"')"
    
    cn.Execute str
    
    msgbox "OK"
    
    
    End function

    c#调用. 

    string strScript="";
    System.IO.StreamReader myReader; 
    strScriptFile="d:\\vbs_Record.vbs";
    myReader=System.IO.File.OpenText(strScriptFile);
    
    strScript=myReader.ReadLine();
    while(myReader.EndOfStream==false)
    {
    strScript=strScript +@" 
    " + myReader.ReadLine();
    }
    clsScriptEngine scriptEngine = new clsScriptEngine();
    scriptEngine.Language = (ScriptLanguage)Enum.Parse(typeof(ScriptLanguage), "VBScript");
    
    string[] strParameter=this._strParameter.Split(',');
    
    Object[] objParameter=new Object[12];
    objParameter.SetValue(strParameter[0],0);
    objParameter.SetValue(strParameter[1],1);
    objParameter.SetValue(strParameter[2],2);
    objParameter.SetValue(strParameter[3],3);
    objParameter.SetValue(strParameter[4],4);
    objParameter.SetValue(strParameter[5],5);
    objParameter.SetValue(strParameter[6],6);
    objParameter.SetValue(strParameter[7],7);
    objParameter.SetValue(strParameter[8],8);
    objParameter.SetValue(strParameter[9],9);
    objParameter.SetValue(strParameter[10],10);
    objParameter.SetValue(strParameter[11],11);
    
    scriptEngine.Reset();
    scriptEngine.Run("vbs_Record", objParameter, strScript);
    scriptEngine = null;

       

    展开全文
  • 这个语言非常简单...花了我几个小时就基本上掌握了。由于它比批处理强大很多,所以我很喜欢。用于日常管理我的Windows操作系统。下面是我的学习记录下来的重点和总结。 A. 基础知识 1. Cbool函数 把变量改成布尔...

    这个语言非常简单...花了我几个小时就基本上掌握了。由于它比批处理强大很多,所以我很喜欢。用于日常管理我的Windows操作系统。下面是我的学习记录下来的重点和总结。

    A. 基础知识

        1. Cbool函数 把变量改成布尔型
        2. Cbyte函数 把变量转成0-255
        3. Ccur函数,Cdbl,Csng,转成浮点数前者只有小数点后4位
        4. Cdate函数转成日期
        5. Cint Clng 整数
        6. Cstr 转成字符串
        7. Redim preserve改变和保护数组
        8. ^是乘方 Mod是取模
        9. +和&连接字符串
        10. Is比较对象类型
        11. lcase转换成小写,ucase转大写
        12. const转成常量
        13. vbs中=就是==而=还是=
        14. vbs中不等于是<>
        15. vbCrlf是换行符

        

    B. 语句类型

    1. 条件语句

    If 条件 Then
        ' ...
        ' ...
    Elseif 条件 Then
        ' ...
        ' ...
    Else
        ' ...
        ' ...
    End If

    例子:
    Dim a, cnt
    Const passwd = "123456"
    cnt = 0
    Do
        a = InputBox("请输入密码", "输入")
        If a = passwd And cnt <= 2 Then
            MsgBox "恭喜你, 密码正确"
            Exit Do
        ElseIf cnt < 2 Then
            MsgBox "密码错误,请再次输入"
            cnt = cnt + 1
        Else
            MsgBox "无法再次输入,再见"
            Exit Do
        End If
    Loop


    2. 选择语句

    Select Case 变量
        Case x
            ' ...
        Case y
            ' ...
        Case z
            ' ...
        Case Else
            ' ...
    End Select


    3. 循环语句

    1. Do ... Loop   离开用Exit Do
    2. Do while 条件 ... Loop 离开用Exit Do
    3. Do ... Loop While 条件 离开用Exit Do
    4. For 变量 = x to x ... Next 离开用Exit For
    5. For Each 变量 in 对象或数组 ... Next 离开用Exit For
    6. Do ... Loop Until 条件 离开用Exit Do
    6. While 条件 ... Wend

     

    C. 关键命令和对象

    a) CreateObject命令             

    可以访问Windows内所安装的所有com对象并调用其中命令

    b) WHS(这是用于解析VBS的宿主)常用对象

    1. Scripting.FileSystemObject对象     提供一整套文件系统操作函数
    2. Scirpting.Dictionary对象         用来返回存放键值对的字典对象
    3. Wscript.Shell对象             提供一整套读取系统信息的函数,比注册表,查找文件路径,dos环境变量等

    包含Run方法(空格加双引号,三引号也可以),run 函数有三个参数,第一个参数是你要执行的程序的路径,第二个程序是窗口的形式,0 是在后台运行;1 表示正常运行;2 表示激活程序并且显示为最小化;3 表示激活程序并且显示为最大化;一共有 10 个这样的参数我只列出了 4 个最常用的。 第三个参数是表示这个脚本是等待还是继续执行,如果设为了 true,脚本就会等待调用的程序退出后再向后执行

    4. Wscript.NetWork对象             提供网络连接和打印机管理函数
    注意: Scripting对象存放于SCRRUN.DLL,Wscript对象存放于WSHOM.ocx中

    c) Set命令                将对象引用赋给变量使用Set关键字(对象是字符串,数值,布尔值之外的所有)

    实例1:
    Set objShell = CreateObject("Wscript.Shell")
    objShell.Run "notepad",,True '这里加上,,True后,关闭notepad才会运行接下去
    objShell.Run "calc"


    实例2:
    ' 读取注册表值
    Set ws = wscript.CreateObject("wscript.shell")
    v = ws.regread("HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\Wechat")
    wscript.echo v

    ' 写入值的数据
    path = "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\"
    Set ws = wscript.CreateObject("wscript.shell")
    t = ws.regwrite(path & "Wechat", "hello") '把指定值的数据改变
    ' 删除子键的值时注意加上\,否则会删除整个子键
    path = "HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run\hate"
    Set ws = wscript.CreateObject("wscript.Shell")
    Val = ws.regdelete(path)

    d) On Error Resume Next                  告诉vbs运行脚本时跳过错误语句继续执行

    e) FileSystemObject对象(FSO)

    Drive对象: 包含存储设备信息
    Drives对象: 提供物理和逻辑驱动器列表
    File对象: 检查处理文件
    Files集合: 提供文件夹中的文件列表
    Folder对象: 检查和处理文件夹
    Teststream对象: 读写文本文件

    FSO常见方法:
    BuildPath: 把文件路径信息添加到现有的文件路径上
    CopyFile: 复制文件
    CopyFolder: 复制文件夹
    CreateFolder: 创建文件夹
    CreateTextFile: 创建文本并返回TextStream对象
    DeleteFile: 删除文件
    DeleteFolder: 删除目录及内容
    DriveExists: 确定驱动器是否存在
    FileExists: 确定文件是否存在
    FolderExists: 确定文件夹是否存在
    GetAbsolutePathName: 返回文件或文件夹绝对路径
    GetBaseName: 返回一个文件或文件夹的基本路径
    GetDrive: 返回一个drive对象
    GetDriveName: 返回驱动器名称
    GetExtensionName: 返回拓展名
    GetFile: 返回file对象
    GetFileName: 返回文件夹中文件名
    GetFolder: 返回Folder对象
    GetParentFolderName: 返回文件夹的父文件夹
    GetSpecialFolder: 返回指向一个特殊的文件夹对象指针 0: Windows目录 1:System32目录 2:Temp目录
    GetTempName: 返回可以被CreateTextFile使用的随机产生的文件或文件夹名称
    MoveFile: 移动文件
    OpenTextFile: 打开一个存在的文件并返回TextStream对象

    实例1:

    On Error Resume Next
    Dim fs, s, folderPath
    
    Set fs = wscript.CreateObject("scripting.FileSystemObject")
    If (fs.folderexists("C:\Users\Administrator\Desktop\ck")) Then
        s = "ck is available!"
    Else
        Set foldr = fs.createfolder("C:\Users\Administrator\Desktop\ck")
        s = "ck doesn't exist and it has created now!"
    End If
    MsgBox s,,"提示"

    实例2:

    On Error Resume Next
    Dim fs
    
    Set fs = wscript.CreateObject("scripting.filesystemobject")
    
    fs.createfolder("C:\\Users\\Administrator\\Desktop\\ck")
    '左复制到右,True意思是已存在则强制覆盖而不出错
    fs.copyfolder "C:\\Users\\Administrator\\Desktop\\ck", "D:\\ck", True
    fs.deletefolder("C:\\Users\\Administrator\\Desktop\\ck")
    ' 被教程坑了下,这里movefolder方法不支持跨盘操作
    fs.movefolder "D:\ck", "D:\AppStore\ck"

    实例3:

    On Error Resume Next
    Dim fs
    
    Set fs = wscript.CreateObject("scripting.filesystemobject")
    Set myFolder = fs.getfolder("C:\")
    Set Files = myFolder.Files
    For Each File In Files
        MsgBox File.Name
    Next

    实例4:
    Dim fs

    Set fs = wscript.CreateObject("scripting.filesystemobject")
    Set wshshell = wscript.CreateObject("wscript.shell")
    ' 获取具体环境变量的值
    osdir = wshshell.expandenvironmentstrings("%appdata%")
    Set f = fs.getfolder(osdir)
    wscript.echo f

    实例5:
    On Error Resume Next
    Dim fs

    Set fs = wscript.CreateObject("scripting.filesystemobject")
    Set wfolder = fs.getspecialfolder(0) ' 返回Windows目录
    Set wfolder = fs.getspecialfolder(1) ' 返回系统文件夹system32
    Set wFolder = fs.getspecialfolder(2) ' 返回临时目录
    wscript.echo wfolder


    f) Object.SendKeys ”string“ 用于模拟键盘操作

    string是要发送的内容,要加双引号,Shift用+来表示,Ctrl用^表示,Alt用%表示
    假设同时按下Ctrl+C+E,则要用^(CE)来表示。至于+,^,%只要用{}括起来就可以表示其本身了
    对于一些没有字符生成的控制键也需要用{},比如{ENTER} {UP} {ESC}...
    重复的按键比如10个'x'则用"{x10}"来表示

    实例1:
    On Error Resume Next
    Dim WshShell

    Set WshShell = WScript.CreateObject("WScript.Shell")
    WshShell.Run "notepad"
    WScript.Sleep 2000
    WshShell.AppActive "无标题 - 记事本"
    WshShell.SendKeys "Hello, world! from VBScript"

    实例2:
    ' Alt + F4是关机
    On Error Resume Next
    Dim wshShell, fs

    Set fs = wscript.CreateObject("scripting.filesystemobject")
    Set wshShell = wscript.CreateObject("wscript.Shell")

    wshShell.Run "notepad"
    wscript.sleep 1000
    wshShell.AppAvtive "无标题 - 记事本"
    wshShell.SendKeys "This is the most wonderful day of my life" & vbCrlf
    wshShell.SendKeys "because I'm here with you now"
    wscript.sleep 500
    wshShell.SendKeys "%{F4}"
    wscript.sleep 500
    wshShell.SendKeys "s"
    wscript.sleep 500
    wshShell.SendKeys "a.txt"
    wscript.sleep 500
    wshShell.SendKeys "{ENTER}"

    实例3: 简单QQ刷屏器
    On Error Resume Next
    Dim WshShell

    Set WshShell = wscript.CreateObject("wscript.Shell")
    WshShell.AppActive "电路飞翔A"
    ' Alt + s 为QQ的发送按键
    For i = 1 To 5
        WScript.Sleep 500
        WshShell.SendKeys "^v"
        WshShell.SendKeys i
        WshShell.SendKeys "%s"
    Next

     

    实例4: 创文文本并写入自动保存

    On Error Resume Next
    Dim WshShell, AutoSaveTime, TXTFileName

    Set WshShell = wscript.CreateObject("wscript.shell")
    TEXTFileName = InputBox("请输入你要创建的文件名: ")

    WshShell.Run "notepad"
    Wscript.Sleep 200
    'wscript.AppActive "无标题 - 记事本"

    WshShell.SendKeys "Hello, this is created by vbs"
    WshShell.SendKeys "^s"
    Wscript.Sleep 300
    WshShell.SendKeys TEXTFileName
    Wscript.Sleep 1000
    WshShell.SendKeys "%s"
    WshShell.SendKeys "%"
    WshShell.SendKeys "{ENTER}"
    WshShell.SendKeys "x"

    g) 关于FSO对象的详细操作

    Windows中的文件属性一般用数字表示:

    0表示普通文件,1表示只读文件,2表示隐藏文件,4表示系统文件

    16表示文件夹或目录,32代表存档文件,1024代表链接或快捷方式

    实例1: 获取文件属性

    On Error Resume Next
    Dim fs

    Set fs = wscript.CreateObject("scripting.filesystemobject")
    Set f = fs.getfile("C:\Users\Administrator\Desktop\a.txt")
    MsgBox f.Attributes

    实例2: 基于文件存在性创建文件

    Dim fso
    Set fso = wscript.CreateObject("scripting.filesystemobject")
    If fso.fileexists("C:\Users\Administrator\Desktop\a.txt") Then
        MsgBox "文件已存在"
    Else
        Set f = fso.createtextfile("C:\Users\Administrator\Desktop\a.txt", True) ' true代表强制覆盖
    End If

    实例3:

    On Error Resume Next

    Set fso = wscript.CreateObject("scripting.filesystemobject")
    If fso.fileexists("C:\\Users\\Administrator\\Desktop\\a.txt") = False Then
        fso.createtextfile("C:\\Users\\Administrator\\Desktop\\a.txt")
    Else
        wscript.echo "文件已存在"
    End If
    fso.copyfile "C:\\Users\\Administrator\\Desktop\\a.txt", "D:\\a.txt", True
    fso.movefile "C:\\Users\\Administrator\\Desktop\\a.txt", "F:\\a.txt" ' 这个movefile可以跨盘
    fso.deletefile "C:\\Users\\Administrator\\Desktop\\a.txt"

    实例4:

    On Error Resume Next
    
    Dim fso, WshShell
    
    Set fso = wscript.CreateObject("scripting.filesystemobject")
    Set WshShell = wscript.CreateObject("wscript.shell")
    
    WshShell.Run "notepad"
    
    wscript.Sleep 1000
    'wscript.AppActive "无标题 - 记事本"
    WshShell.SendKeys "Hello, world! Here is from VBScript" & vbCrlf & "No, I dont like you"
    WshShell.SendKeys "^s"
    wscript.Sleep 2000
    WshShell.SendKeys "a.txt"
    
    WshShell.SendKeys "{ENTER}"
    WshShell.SendKeys "%"
    WshShell.SendKeys "{ENTER}"
    WshShell.SendKeys "x"
    
    wscript.Sleep 2000
    Set ts = fso.opentextfile("C:\\Users\\Administrator\\Desktop\\a.txt", 1, True)
    value = ts.read(20)
    line = ts.readline
    contents = ts.readall
    MsgBox value & vbCrlf & line & vbCrlf & contents

    实例5: 手动创建txt文件并写入一段话后

    On Error Resume Next
    
    Dim fso, WshShell
    
    Set fso = wscript.CreateObject("scripting.filesystemobject")
    Set WshShell = wscript.CreateObject("wscript.shell")
    
    WshShell.Run "notepad"
    
    wscript.Sleep 1000
    'wscript.AppActive "无标题 - 记事本"
    WshShell.SendKeys "Hello, world! Here is from VBScript" & vbCrlf & "No, I dont like you"
    WshShell.SendKeys "^s"
    wscript.Sleep 2000
    WshShell.SendKeys "a.txt"
    
    WshShell.SendKeys "{ENTER}"
    WshShell.SendKeys "%"
    WshShell.SendKeys "{ENTER}"
    WshShell.SendKeys "x"
    
    wscript.Sleep 2000


    ' 第二参数: 1表示只读,2表示写入,8为追加
    ' 第三参数: True表示不存在则创建

    Set ts = fso.opentextfile("C:\\Users\\Administrator\\Desktop\\a.txt", 1, True)
    value = ts.read(20)
    line = ts.readline
    contents = ts.readall
    MsgBox value & vbCrlf & line & vbCrlf & contents

    h) 文件指针的3个属性:

    1. atendofstream属性,处于文件末尾该属性返回true

         do while fs.atendofstream <> true fs.read(10) loop

    2. atendofline属性,处于行末尾返回true

    3. Column和line属性,文件打开后都被设为1

    4. skip(x) x表示跳过的字符 skipline跳过一行

    5. 在文件中写入2和追加写入8.write(x)写入x个字符,writeline(x)写入第x行,

    writeblanklines(n)写入n个空行

    7. 最后一定要用close关闭。写入是独占的

    D. 使用系统对话框

    a) 系统对话框的对象及方法

    1. SAFRCFileDlg.FileSave对象:

            FileName属性: 指定默认文件名

            FileType属性: 指定文件拓展名

            OpenFileSaveDlg方法: 显示文件保存框体的方法

    2) SAFRCFileDlg.FileOpen对象:

            FileName属性: 同上

            OpenFileOpenDlg属性: 显示打开文件框体方法

    3) UserAccounts.CommonDialog对象:

            FilterIndex属性,Filter拓展名属性,InitialDir属性: 指定默认文件夹

            FileName属性: 指定文件名, Flags属性: 对话框类型

            Show open方法

    不知道为什么,这里案例全部失败了??(最后更新)

    E. WMI

    (最后更新)

    F. scripting.dictionary对象

    属性列表:

    • CompareMode 设定或返回键的字符串比较
    • Count 只读,返回键/条目对的数量
    • Item(key) 设定或返回指定键的条目值
    • Key(key) 设定键值

    方法列表:

    • Add(key, item) 增加键/条目于字典中
    • Exists(key) 确定指定键是否存在,存在填True否则False
    • Items()返回一个包含字典对象中所有条目的数组
    • keys()返回一个包含字典对象中所有键的数组
    • Remove(key)删除特定键
    • RemoveAll()删除所有键和条目对

    实例1:

    On Error Resume Next
    
    Set sdict = CreateObject("scripting.dictionary")
    sdict.add "a", "apple"
    sdict.add "b", "banana"
    sdict.add "c", "copy"
    
    MsgBox "总共条目有: " & sdict.count & vbCrlf & sdict.Item("a") & vbCrlf & sdict.Item("b") & vbCrlf & sdict.Item("c")
    
    sdict.item("a") = "Dad"
    sdict.item("b") = "Mum"
    sdict.item("c") = "Son"
    
    MsgBox "总共条目有: " & sdict.count & vbCrlf & sdict.Item("a") & vbCrlf & sdict.Item("b") & vbCrlf & sdict.Item("c")
    
    sdict.Key("a") = "Father"
    sdict.Key("b") = "Mother"
    sdict.Key("c") = "Son"
    
    MsgBox "总共条目有: " & sdict.count & vbCrlf & sdict.Item("Father") & vbCrlf & sdict.Item("Mother") & vbCrlf & sdict.Item("Son")
    
    For Each Key In sdict.keys
    	If Exists(Key) Then 
    		MsgBox "键名" & Key & "是" & "=" & sdict(key)
    	Else
    		MsgBox "键不存在!"
    	End If 
    Next
    sdict.removeall()
    

    G. VBS的内置函数

    1. Abs函数: 返回绝对值

    2. Array函数: 返回数组的变体

    3. Asc函数: 返回字符串首字母的ANSI字符码

    4. Atn函数: 返回数值的反正切

    5. CBool函数: 返回已被转换为 Boole an 子类型的变体的表达式

    6. CreateObject 函数:创建并返回对“自动”对象的引用

    (未完)

    H. 事件对象

    On Error Resume Next
    
    Set objIE = wscript.CreateObject("InternetExplorer.Application", "event_")
    objIE.Visible = True
    MsgBox "请关闭浏览器窗口看效果", vbSystemModal
    Wscript.sleep 6000
    MsgBox "现在已经正常关闭了"
    
    Sub event_OnQuit() 
    	MsgBox "您确定要关闭浏览器吗?", vbSystemModal
    End Sub 
    

    上面那段代码的事件驱动没有效果,IE浏览器没有打得开,我试图通过wscript.Shell对象的Run方法调用IE浏览器并关闭来试图获取子过程的msgbox信息但是失败了,目前不知是怎么回事。

    I. 通过ADO接口访问数据库

    (持续更新)

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

     

    展开全文
  • VBscript脚本.rar

    2019-07-09 09:22:19
    VBscript脚本
  • 超级好用的脚本编辑及调试工具,免安装,具有自动补充完成输入变量名,方法和函数名的功能, 支持... 目前这种语言广泛应用于网页和ASP程序制作,同时还可以直接作为一个可执行程序。用于调试简单的VB语句非常方便。
  • 小编我也是个学习网页的初学者,但是由于现在的浏览器几乎都不支持vbscript脚本语言。特地为大家送来最简单的操作方法! 1:首先准备好你要运行的带有vbscript脚本语言的html文件。 2:打开IE浏览器,将文件拖到IE...

    小编我也是个学习网页的初学者,但是由于现在的浏览器几乎都不支持vbscript脚本语言。特地为大家送来最简单的操作方法!

    1:首先准备好你要运行的带有vbscript脚本语言的html文件。

    2:打开IE浏览器,将文件拖到IE浏览器里,然后单击确定“允许阻止的内容”


    3:选择工具菜单→F12开发人员工具,选择仿真标题,将文档模式调成为5(如下图所示)

    4:就可以在IE浏览器中运行VBScript脚本了.不足点是开发者模式的设置是保存不了的,在你关闭再次打开IE后,设置就有回复了,所以在测试文件的时候尽量不要关闭IE浏览器。


    展开全文
  • vbscript脚本语言(.ppt)

    2009-10-22 10:28:49
    上传的资料特别适合新手学习,不过也适合学习vbscritp和qtp的用户,该资料详细讲解了vbscript的用法和基本使用。
  • 从我对VBScript脚本的了解来看,对一个脚本是否可以做自动化测试需要这个测试人员具备两方面的知识,第一个,就是对VBScript脚本开发语言精通,要了解VBScript的核心技术如何更广泛的应用;第二个,就是要有自动化的...
  • vbscript脚本语言(.doc)

    2009-10-22 10:11:41
    这些vbscript资料对刚学习qtp的新手特别适合,不过对其他人也适用,详细讲解vbscript的用法和基本使用。
  • 2、熟悉VBScript脚本语言的语法; 3、熟悉JavaScript脚本语言的语法; 4、掌握在网页中使用脚本语言编程、调试的方法。 二、实验内容 1、设置IIS的主目录,并在Dreamweaver中新建相应的站点。 2、使用VBScript编写...
  • QTP脚本语言VBS编程VBScript的基础全面整理,QTP脚本语言VBS的编程能力的操作教程,文档中的图文解说非常详细,很适合初学者和QTP能力的进阶提升
  • vbscript脚本语言使用手册 轻松教会初学者使用vbscript语言的语法
  • DoLoop语句当条件为True时或条件变为True之前重复执行某一段代码根据循环条件出现的位置DoLoop语句的语法格式分为两种形式 1循环条件出现在语句的开始部分 语法 Do While 条件表达式 循环程序代码 Loop 或者 Do ...
  • 主动脚本语言,例如VBScript和JScript(不依赖于Microsoft的ScriptControl,64位程序不可用)。 在IE11和Edge中实现JavaScript。 该分支包含旨在模仿Microsoft的ScriptControl的脚本。 因此,功能集可能比基础API...
  • 什么是“脚本语言

    千次阅读 2020-08-10 10:47:11
    脚本语言又被称为扩建的语言, 或者动态语言, 是一种编程语言, 用来控制软件应用程序, 脚本通常是以文本 (ASCⅡ) 保存, 只是在被调用时进行解释或者编译。当执行脚本时,计算机会执行一连串的操作。这些操作可能只...
  • 从我对VBScript脚本的了解来看,对一个脚本是否可以做自动化测试需要这个测试人员具备两方面的知识,第一个,就是对VBScript脚本开发语言精通,要了解VBScript的核心技术如何更广泛的应用;第二个,就是要有自动化的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,401
精华内容 8,160
关键字:

vbscript是脚本语言吗