条件语句
VBScript支持以下两种条件控制语句:
- If…Then…Else 语句
If …Then …Else语句的一个变种是If …Then…如果Then后面的语句可以在一行内书写下的话。注意与C/C++不同的是,你必须用End If 来结束If语句。
If 1 Then
wscript.echo "it's 1"
Else
wscript.echo "it's not 1"
End If
- Select Case 语句
Select Case 语句的作用类似于C/C++中的switch语句。请看示例:
card = "MasterCard"
Select Case card
Case "MasterCard"
wscript.echo "MasterCard"
Case "MasterCard"
wscript.echo "Visa"
Case "American Express"
script.echo "American Express"
Case Else
sctip.echo "union pay"
End Select
与C/C++不同,case语句支持字符串作为比较的变量,并使用Case Else作为default选项。各Case语句之间不会重复进入,也不需要用break之类的关键字来限制重复进入。
循环语句
在 VBScript 中可使用下列循环语句:
Do…Loop: 当(或直到)条件为 True 时循环。具体语法形式有:
Do While …
Loop
Do Until …
Loop
Do
Loop While …
在这里…应该替换成具体的条件表达式。
While…Wend: 当条件为 True 时循环。语法形式为:
While …
Wend
For…Next: 指定循环次数,使用计数器重复运行语句。 具体语法形式有:
For I = … To … Step …
Next
在这里,如果不指定步长,则步长为+1,这里,循环变量可以不为整数,步长也可以为负数。
For Each…Next:对于集合中的每项或数组中的每个元素,重复执行一组语句。这个跟C++里的用法差不多。
与C/C++不同的是,循环语句支持跳出,但不支持continue语义。如果一定要实现这种语义,应该寻找变通的办法。跳出是通过Exit来实现的。如果是在For语句中,则为Exit For,在Do循环中为Exit Do。但对While … Wend语句,似乎没有办法可以方便地跳出去。下面是一组例子:
'For .. To with default step length
Sub DoMyProc50Times()
Dim x
For x = 1.05 To 10.05
wscript.echo "x=" & x
Next '注意Next后面不跟循环变量。步长默认为1
End Sub' For .. To with negative step
Sub TwosTotal()
Dim j, total
For j = 10 To 2 Step -2
total = total + j
Next
wscript.echo "total=" & total
End Sub'For each …
Sub ListFiles(root)
Set fso = CreateObject("Scripting.FileSystemObject")Set fldr = fso.GetFolder(root)
For Each f In fldr.Files
wscript.echo f.name
If f.name = "exit.txt" Then Exit For
Next
End Sub'Do .. Loop
Sub ChkLastWhile()
Dim counter, myNum
counter = 0
myNum = 9
Do
myNum = myNum - 1
counter = counter + 1
If counter = 9 Then Exit Do
Loop While myNum > 10
MsgBox "循环重复了 " & counter & " 次。"
End Sub'While … Wend
Sub CheckWhile()
While i < 10
i = i + 2
If I = 5 Then Exit Sub 'No exit while or exit wend available
Wend
End Sub