VBS脚本定义和使用变量

发布时间:2020-01-26编辑:脚本学堂
变量是存储在计算器内存中能够存储数据的名称空间。VBS脚本定义和使用变量。

大多数脚本语言允许你隐式的声明变量,使你不用明确的声明就可以使用变量。例如,你运行下面的脚本时候,不会遇到任何类型的错误,尽管它的第一行将一个值赋给了变量 sngDegreesCelsius。尽管它并没有被声明。
sngDegreesCelsius = 11
sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)
Wscript.Echo sngDegreesFahrenheit
Function ConvertToFahrenheit(ByVal sngDegreesCelsius)
ConvertToFahrenheit = (sngDegreesCelsius * (9/5)) + 32
End Function

隐式的变量声明可以让写脚本变的快而且简单,但是在同时,它可能导致难以发现和解决的问题。

为了说明这点,以前面脚本为例,前面的脚本将摄氏的 11 度转换成华氏的 51.8 度。下面一个脚本本来应该作同样的事情,但是它却返回了一个 32 的值……
sngDegreesCelsius = 11
sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)
Wscript.Echo sngDegreesFahrenheit
Function ConvertToFahrenheit(ByVal sngDegreesCelsius)
ConvertToFahrenheit = (sngDegresCelsius * (9/5)) + 32
End Function

以上脚本返回一个错误的值。因为在第六行敲入 sngDegreesCelsius,而在后面却敲入了 sngDegresCelsius,因为这个变量并没有赋值,所以 VB 认为它的值是 0,这样继续算下去,结 果为 0,0 再加上 32 所以返回了错误的答案。 像这样的错误很难被发现,因为语法是正确的,所以并没有错误的信息报出来。你期待得到一个 不是 11 的值,并且你得到了。当你写更加复杂的脚本的时候,这个敲入的错误很难被发现和改正。

为了避免这样的问题发生,你可以显式的声明你的变量。当显示变量声明被要求的时候,脚本中 所有的变量都必须被显示的声明,否则会再运行的时候报错。
例如,如下的脚本用“Option Explicit ”要求所有的变量被显示的声明,并且所有的变量用一个 dim 语句。
Option Explicit
Dim sngDegreesCelsius
Dim sngDegreesFahrenehit
sngDegreesCelsius = 11
sngDegreesFahrenheit = ConvertToFahrenheit(sngDegreesCelsius)
Wscript.Echo sngDegreesFahrenheit
Function ConvertToFahrenheit(ByVal sngDegreesCelsius)
ConvertToFahrenheit = (sngDegresCelsius * (9/5)) + 32
End Function

当你运行这样一个脚本的时候,脚本的主机遇到一个没有声明的变量,这样,脚本中止执行并且 显示出类似下面的一个错误:
C:ScriptsTempConvert.vbs(10, 5) Microsoft VBScript runtime error: Variable is
undefined:
'sngDegresCelsius'

在 VB 中声明变量:
1.用 Option Explicit 语句来强制一个变量的声明。
2.用一个单独的 DIM 语句来声明每一个你要用的变量。虽然你只能用一个单独的 dim 来声明 一个变量,但是在变量的后面,你可以添加一些解释来说明变量的用途,如下所示:
Option Explicit
Dim intFirstNumber     ' First number in our simple equation
Dim intSecondNumber ' Second number in our simple equation
Dim intTotal ' Sum of intFirstNumber and intSecondNumber
Initializing Variables

初始化一个变量就是简单的给一个变量赋予一个初始值。例如,如下的几行代码初始化了两个变量,将 x 赋予 100,将 Y 赋予 abcde
X = 100
Y = "abcde"

如果你建立一个变量,但是没有给它初始化(即未赋值),此时它的值有以下两种可能:
如果是一个字符串,那么为空
如果是一个数字,那么为0.

例如:如下脚本创建了两个变量,X,Y,但是没有赋值给他们:
Dim X
Dim Y
Wscript.Echo X & Y
Wscript.Echo X + Y

在脚本的第三行,这两个变量被认为是字符串,(因为&是用来连接两个字符串的)。当它运行 的时候,它显示入 2.8 所示的信息框。因为两个变量都是空,蔓儿他们的接合也是空。所以结 果就是什么都没有。

在脚本的第四行,这两个变量被认为是数字。数字没有被初始化的时候,他们自动的被赋值为 0。 这样,这个行的脚本代表 0+0 的和。

在 VB 脚本中,等号的含义和算数中是不同的。在算数中,x=2+2 是被认为是,x 等于 2 加 2 但是在 VB 中,同样的表达式,被读作:x 被赋值为 2+2 在上面这个例子中,他们并没有什么不同,任何一种办法来说,x 的值都是 4。但是看下面一个 脚本,它用一个 1 到 10 的循环:
For i = 1 to 10
X = X + 1
Next

这个脚本的第二行在算数里面是不可能的,x 怎么可以等于 x+1 哪?原因就是它并不是一个算 数表达式,而是一个合法的 VB 表达式,这里的 X 是一个变量被赋予新的值,在这里这个表示 式被读作:

X 被赋值为 x 当前的值加上 1

就是说,如果 x 当前的值为 3,当运行这个表达式之后,它的值就为 4 了,就是 3 加上 1 事实上,在 VB 中,等号也可以用在对字符串的赋值当中。例如,如下脚本建立一个 message 变量,赋予了它很多字符串的值:
Message = "This "
Message = Message & "is a "
Message = Message & "test message."
Wscript.Echo Message