Операторы языка vbscript позволяют контролировать возникновение ошибок. Создавать различные условные конструкции и конструкции выбора, производить логические сравнения и многое другое. Условно все операторы языка можно разделить на несколько пунктов:
- Арифметические
- Обработка исключительных ситуаций
- Логические и операторы сравнения
- Циклы
- Условные операторы языка
- Прочие конструкции
Давайте, рассмотрим все операторы vbscript языка по порядку, и начнем с арифметических.
Арифметические операторы языка:
— (унарный) — Изменение знака аргумента на противоположный
— (бинарный) — Вычитание двух чисел
+ — Сложение двух чисел
* — Умножение двух чисел
/ — Деление двух чисел
\ — Целочисленное деление двух чисел
Mod — Вычисление остатка от деления двух чисел
^ — Возведение в степень
Обработка исключительных ситуаций:
Режим обработки исключительных ситуаций в VBScript включается с помощью оператора On Error Resume Next. Если после этого при исполнении какого-либо оператора языка в сценарии произойдет ошибка времени выполнения, то управление передастся к следующему оператору в тексте. Для анализа ошибок используется специальный объект Err, который содержит два свойства: Number — числовой код возникшей ошибки и Description — краткое описание этой ошибки. Для отмены режима обработки исключительных ситуаций нужно выполнить оператор On Error Goto 0. Имитацией ошибки периода выполнения занимается оператор Err.Raise 6. Для сброса кода ошибки используется оператор Err.Clear. Например:
'*************************** 'error_resume.vbs '*************************** On Error Resume Next dim var1, var2, result, Mess var1=100 var2="data" result=var1/var2 If Err.Number<>0 Then Mess="Ошибка!!! " & "Код ошибки: " & Err.number & vbCrlf &_ "Описание: " & Err.description Wscript.Echo Mess Else Wscript.Echo result End If
Логические и операторы сравнения:
Логические операторы языка могут возвращать только логические значения true или false
Not — Оператор отрицания. Возвращает true, если операнд равен false. В противном случае возвращает false
Or — Оператор отношения «ИЛИ». Возвращает true, если один из операндов равен true. В противном случае возвращает false
Xor — Оператор отношения «ИСКЛЮЧАЮЩЕЕ ИЛИ». Возвращает true, если один из операндов равен true, а другой равен false. В противном случае возвращает false
And — Оператор отношения «И». Возвращает true, если оба операнда равны true. В противном случае возвращает false
Операторы сравнения позволяют сравнивать значения двух переменных, они возвращают только логическое true или false:
> — Левый операнд больше правого
>= — Левый операнд больше или равен правому
< — Левый операнд меньше правого
<= — Левый операнд меньше или равен правому
= — Левый операнд равен правому
<> — Левый операнд не равен правому
Циклы:
Цикл For Next
For счетчик=начальное значение
То конечное значение [Step шаг счетчика]
тело цикла
[Exit For] тело цикла
Next
Тут, если [Step шаг счетчика] не указано, то берется единица.
[Exit For] – используется для безусловного выхода из цикла
'******************************** 'for_next.vbs '******************************** Dim howFar, sum(10), icount, theSum howFar = 10 theSum = 0 sum(0) = 0 For icount = 0 To howFar theSum = theSum+icount sum(icount) = theSum Next Wscript.Echo theSum
For Each…In
For Each переменная In имя массива(коллекции)
тело цикла
[Exit For]
тело цикла
Next
Используется для перебора всех элементов массива (коллекции).
'******************************** 'for_in.vbs '******************************** Dim FSO, Folder, Files, File, s s="Список файлов" & vbCrLf Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.GetFolder("C:\") Set Files = Folder.Files For Each File In Files s = s & File.Name & vbCrLf Next Wscript.Echo s
While Wend
While условие
тело цикла
Wend
Если условие равно true, то тело цикла выполняется, в противном случае цикл завершается.
'******************************** 'while_wend.vbs '******************************** Option Explicit Dim a, MySum, msg while MySum<=1000 a=45 MySum=MySum +a wend msg= "Сумма ровна - " & MySum wscript.echo msg
Do Loop
Do [While | Until] условие
тело цикла
[Exit Do]
тело цикла
Loop
или
Do
тело цикла
[Exit Do]
тело цикла
Loop [While | Until] условие
Первый синтаксис – с предусловием, второй – с постусловием.
[Exit Do] – безусловный выход из цикла
' ***************************************************************************** ' do_while_loop.vbs ' ***************************************************************************** Option Explicit Dim sum(10), icount, MySum, AllElement MySum = 0 sum(0) = 0 AllElement="" Do While (icount < 10) MySum = MySum+icount sum(icount) = MySum icount = icount+1 AllElement=AllElement & MySum & vbCrLf Loop wscript.echo AllElement
и
' ***************************************************************************** ' do_until_loop.vbs ' ***************************************************************************** Option Explicit Dim sum(10), icount, MySum, AllElement MySum = 0 sum(0) = 0 AllElement="" Do Until (icount >= 10) MySum = MySum+icount sum(icount) = MySum icount = icount+1 AllElement=AllElement & MySum & vbCrLf Loop wscript.echo AllElement
Условные операторы языка:
If
If условие_1 Then выражение_1
[Elself условие_2 Then выражение_2]
[Else выражение_3]
End If
' ***************************************************************************** ' operator_if.vbs ' ***************************************************************************** Option Explicit Dim D, x, a, b, c, x1, x2, msg a=-2 b=6 c=20 'Идет поиск дискриминанта d=b^2-4*a*c if d=0 then x=-b/(2*a) msg="Уравнение имеет одно решение, x ровно " & x End If if d>0 then x1=(-b+sqr(d))/(2*a) x2=(-b-sqr(d))/(2*a) msg="Уравнение имеет два решения" & vbCrLf & "x1 ровно " & x1 & vbCrLf & "x2 ровно " & x2 else msg="Решения нет" End If wscript.echo msg
Select Case
Case значение_1 выражение_1
[Case значение_2 выражение_2 ]
[Case Else выражение_3 ]
End Select
' ***************************************************************************** ' select_case.vbs ' ***************************************************************************** Option Explicit Dim D, x, a, b, c, x1, x2, msg, col a=-2 b=6 c=20 'Идет поиск дискриминанта d=b*b-4*a*c if d=0 then x=-b/(2*a) col=1 elseif d>0 then x1=(-b+sqr(d))/(2*a) x2=(-b-sqr(d))/(2*a) col=2 else col=0 End If Select case col case 0 msg="Решения нет" case 1 msg="Уравнение имеет одно решение, x ровно " & x case else msg="Уравнение имеет два решения" & vbCrLf & "x1 ровно " & x1 & vbCrLf & "x2 ровно " & x2 End Select wscript.echo msg
Прочие конструкции:
. — Точка. Применяется для доступа к свойству объекта или для вызова его метода
() — Скобки. Применяются либо для изменения порядка вычисления выражений, либо для передачи параметров функциям, либо для индексирования массива
& — Оператор языка конкатенации (склеивание между собой) символьных строк
With … End With — Позволяет обращаться к свойствам объекта без написания имени этого объекта
Например:
Set rst = CreateObject("ADODB.Recordset") With rst .CursorType = adOpenKeySet .LockType = 3 .Open cmd End With