Язык VBScript (Visual Basic Scripting Edition) является упрощенной версией языка Visual Basic, он является разработкой компании Microsoft. Пожалуй VBScript – лучший способ начать нелегкий путь программиста, так как знание его синтаксиса позволяет в будущем с легкость разобраться в таких расширениях как Visual Basic или Visual Basic for Applications (VBA). Как и для языка Jscript, все команды сценария выполняет сервер Windows Script Host, который входит в состав операционной системы Windows. Все сценарии на языке VBScript сохраняются под расширением vbs. Прежде чем углубляться в глубь, стоит определится с некоторыми правилами:
Для комментирования строки кода используется оператор REM или одинарная кавычка (‘), например:
REM Это комментарий 'Это тоже комментарий
Для переноса строки одной строки на несколько строк используется символ подчеркивания (_):
WScript.Echo "Строка 1 и" &_ " Строка 2"
Все строковые значения должны заключаться в двойные кавычки («»)
Вы также можете прописать несколько операторов в одной строке используя двоеточие (:), например:
WScript.Echo "Проверка 1" : WScript.Echo "Проверка 2"
Сам язык VBScript нечувствителен к регистру букв.
Пользователю предоставляется возможность объявлять собственные процедуры и функции.
Для определения процедуры, т. е. подпрограммы, которая не возвращает никакого значения, в VBScript используется конструкция Sub … End Sub. После названия процедуры в круглых скобках указывается список ее параметров, например:
Sub MyProcedure(Param1, Param2)
Dim Sum
Sum= Param1+Param2
End Sub
Если процедура не имеет параметров, то в скобках после имени ничего указывать не нужно:
Sub MyProcedure()
…
End Sub
Вызывать процедуру из сценария можно двумя способами. Во-первых, можно просто написать имя и указать через пробел список передаваемых параметров, например: MyProcedure 3,10. Во-вторых, можно использовать специальный оператор Call, при этом список параметров обязательно должен быть заключен в круглые скобки: Call MyProcedure(3,10)
Для определения функции, т. е. подпрограммы, которая возвращает определенное значение, применяется конструкция Function … End Function. Как и при описании процедур, после названия функции в круглых скобках указывается список ее параметров, например:
Function MyFunction(Param1, Param2) … End Function
Для того чтобы возвратить из функции какое-либо значение, нужно внутри нее присвоить это значение переменной, название которой совпадает с именем функции:
Function MyFunction(Param1, Param2)
Dim Sum
Sum = Paraml+Param2
MyFunction = Sum
End Function
Если возвращаемое функцией значение не нужно присваивать никакой переменной, то функция вызывается так же, как и процедура — пишется имя этой функции и через пробел указывается список ее аргументов: MyFunction 3,5
Если же необходимо записать значение в какую-либо переменную, то аргументы функции заключаются в круглые скобки:
Dim а
а = MyFunction(3,5)
Как и в многих других языках программирования, язык VBscript позволяет использовать в сценариях регулярные выражения. Для этого используется объект VBScript.RegExp, он предоставляет регулярные выражения, в частности свойства и методы, которые позволяют видоизменять строку по заданному шаблону (pattern) или производить замену (vbscript replace) в той или иной строке.
Узнать БОЛЬШЕ из видео-урока:
Свойства
Global — возвращает булево значение – TRUE (произвести шаблонный поиск по всему тексту) или FALSE (произвести шаблонный поиск до первого соответствия). По умолчанию стоит FALSE. Чтение и запись. Пример на VBScript:
' *************************** ' primer_1.vbs ' *************************** Set RegExp = CreateObject("VBScript.RegExp") RegExp.Global = False Result = RegExp.Replace("test", "12") ' Получим строку 12test MsgBox Result RegExp.Global = True Result = RegExp.Replace("test", "12") ' Получим строку 12t12e12s12t12 MsgBox Result
IgnoreCase — возвращает булево значение — TRUE (регистр символов не будет учитываться) FALSE (регистр символов будет учитываться). По умолчанию стоит False. Чтение и запись.
Пример:
' *************************** ' primer_2.vbs ' *************************** Set RegExp = CreateObject("VBScript.RegExp") 'Задаем шаблон поиска RegExp.pattern = "test" Str = "test 111 TEST" RegExp.Global = True RegExp.IgnoreCase = True Result = RegExp.Replace(Str, "12") ' Получим строку 12 111 12 MsgBox Result RegExp.Global = True RegExp.IgnoreCase = False Result = RegExp.Replace(Str, "12") ' Получим строку 12 111 TEST MsgBox Result
Pattern — Данное свойство возвращает строку – шаблон, по которому будет произведен поиск. Чтение и запись. Так, если данное свойство не задано, то поиск или замена будет произведен по всему тексту.
Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = "[0-9]+[0-9]"
MultiLine — возвращает булево значение — TRUE (замена будет происходить во всех строках) FALSE (замена произойдет лишь в одной строке). По умолчанию стоит False. Чтение и запись. Для реализации свойства надо использовать метасимволы ^ или $ в шаблоне.
Пример регулярного выражения на VBScript:
' *************************** ' primer_3.vbs ' *************************** Set RegExp = CreateObject("VBScript.RegExp") RegExp.Global = True RegExp.Multiline = False RegExp.Pattern = "^test" ' Предложение из двух строк Str = "test 111" & vbCrLf & "test 111" ' Произойдет замена только в первой строке Res = RegExp.Replace(Str, "222") MsgBox Res RegExp.Multiline = True ' Произойдет замена в обеих строках Res = RegExp.Replace(Str, "222") MsgBox Res
Методы
Replace(str1, str2) – метод vbscript производит замену в строке согласно заданному шаблону, тут str1 – строка-оригинал, которую нужно изменить, str2 – строка-шаблон, которая будет внедрятся в строку str1, например:
' *************************** ' primer_4.vbs ' *************************** Set vbscript = CreateObject("VBScript.RegExp") ' задаем шаблон, по которому будет производиться поиск vbscript.Pattern = "word" ' исходная строка Str = "hello 2012 word" MsgBox Str ' в строке Str все слова "word" будут заменены на "1111" Res = vbscript.Replace(Str, "1111") MsgBox Res
Test(str) – возвращает логическое значение TRUE (если совпадение по шаблону (pattern) было найдено в строке str) или FALSE (совпадение отсутствует).
' *************************** ' primer_5.vbs ' *************************** Set RegExp = CreateObject("VBScript.RegExp") RegExp.Pattern = "vbscript" Str = "vbscript replace method" ' вернет истину MsgBox RegExp.Test(Str) Str = "jscript replace method" ' вернет ложь MsgBox RegExp.Test(Str)
Execute(str) – производит поиск в строке str по шаблону заданному в свойстве pattern. Возвращает объект, который содержит коллекцию найденных совпадений. Например:
' *************************** ' primer_6.vbs ' *************************** Set RegExp = CreateObject("VBScript.RegExp") str= "регулярные 232 vbscript 55 выражения " RegExp.pattern="[^0-9]+[^0-9]" ' только цифры RegExp.Global = True Set matches = RegExp.execute(str) For Each match in matches RetStr = RetStr & Match.Value Next Newstrt= RetStr 'на выходе получим регулярные vbscript выражения Msgbox Newstrt
В следующем уроке мы рассмотрим работу с переменными языка VBScript, поэтому подписывайтесь, что бы быть всегда в курсе событий.