Файл сценария vbscript что это

VBScript - Обзор VB Script - это виртуальный базовый сценарий, который образует подмножество Visual Basic для приложений (VBA). VBA - это продукт

VBScript – Обзор

VB Script – это виртуальный базовый сценарий, который образует подмножество Visual Basic для приложений (VBA). VBA – это продукт Microsoft, который включен не только в другие продукты Microsoft, такие как MS Project и MS Office, но также в сторонние инструменты, такие как AUTO CAD.

Особенности VBScript

  • VBScript – это легкий язык сценариев, который имеет молниеносный переводчик.

  • VBScript, по большей части, нечувствителен к регистру. Он имеет очень простой синтаксис, легкий для изучения и реализации.

  • В отличие от C ++ или Java, VBScript – это объектно-ориентированный язык сценариев, а не объектно-ориентированный язык программирования.

  • Он использует объектную модель компонентов (COM) для доступа к элементам среды, в которой он выполняется.

  • Успешное выполнение VBScript может произойти, только если он выполняется в среде хоста, такой как Internet Explorer (IE) , Internet Information Services (IIS) и Windows Scripting Host (WSH)

VBScript – это легкий язык сценариев, который имеет молниеносный переводчик.

VBScript, по большей части, нечувствителен к регистру. Он имеет очень простой синтаксис, легкий для изучения и реализации.

В отличие от C ++ или Java, VBScript – это объектно-ориентированный язык сценариев, а не объектно-ориентированный язык программирования.

Он использует объектную модель компонентов (COM) для доступа к элементам среды, в которой он выполняется.

Успешное выполнение VBScript может произойти, только если он выполняется в среде хоста, такой как Internet Explorer (IE) , Internet Information Services (IIS) и Windows Scripting Host (WSH)

VBscript – История версий и использование

VBScript был представлен Microsoft еще в 1996 году, и его первая версия была 1.0. Текущая стабильная версия VBScript – 5.8, которая доступна как часть IE8 или Windows 7. Области использования VBScript в изобилии и не ограничиваются приведенным ниже списком.

  • VBScript используется в качестве языка сценариев в одном из популярных инструментов тестирования автоматизации – Quick Test Professional, сокращенно QTP

  • Windows Scripting Host, который в основном используется системными администраторами Windows для автоматизации рабочего стола Windows.

  • Active Server Pages (ASP) , среда сценариев на стороне сервера для создания динамических веб-страниц, использующая VBScript или Java Script.

  • VBScript используется для сценариев на стороне клиента в Microsoft Internet Explorer.

  • Microsoft Outlook Forms обычно работает на VBScript; однако программирование на уровне приложений опирается на VBA (Outlook 2000 и более поздние версии).

VBScript используется в качестве языка сценариев в одном из популярных инструментов тестирования автоматизации – Quick Test Professional, сокращенно QTP

Windows Scripting Host, который в основном используется системными администраторами Windows для автоматизации рабочего стола Windows.

Active Server Pages (ASP) , среда сценариев на стороне сервера для создания динамических веб-страниц, использующая VBScript или Java Script.

VBScript используется для сценариев на стороне клиента в Microsoft Internet Explorer.

Microsoft Outlook Forms обычно работает на VBScript; однако программирование на уровне приложений опирается на VBA (Outlook 2000 и более поздние версии).

Недостатки

  • VBscript используется только браузерами IE. Другие браузеры, такие как Chrome, Firefox DONOT, поддерживают VBScript. Следовательно, JavaScript предпочтительнее VBScript.

  • VBScript имеет ограниченную поддержку командной строки.

  • Поскольку по умолчанию нет среды разработки, отладка затруднена.

VBscript используется только браузерами IE. Другие браузеры, такие как Chrome, Firefox DONOT, поддерживают VBScript. Следовательно, JavaScript предпочтительнее VBScript.

VBScript имеет ограниченную поддержку командной строки.

Поскольку по умолчанию нет среды разработки, отладка затруднена.

Где VBScript сегодня?

Текущая версия VBScript – 5.8, и с недавней разработкой .NET Framework компания Microsoft решила в будущем обеспечить поддержку VBScript в ASP.NET для веб-разработки. Следовательно, больше не будет новых версий механизма VBScript, но все исправления дефектов и проблемы безопасности решаются группой поддержки Microsoft. Однако механизм VBScript будет поставляться как часть всех Microsoft Windows и IIS по умолчанию.

VBScript – Синтаксис

Ваш первый VBScript

Давайте напишем VBScript для распечатки «Hello World».

<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         document.write("Hello World!")
      </script>
   </body>
</html>

В приведенном выше примере мы вызвали функцию document.write , которая записывает строку в документ HTML. Эта функция может использоваться для написания текста, HTML или обоих. Таким образом, приведенный выше код будет отображать следующий результат –

Hello World!

Пробелы и разрывы строк

VBScript игнорирует пробелы, табуляции и новые строки, которые появляются в программах VBScript. Можно свободно использовать пробелы, табуляции и переводы строк в рамках программы, поэтому вы можете свободно форматировать и создавать отступы для своих программ аккуратно и последовательно, что делает код легким для чтения и понимания.

форматирование

VBScript основан на Microsoft Visual Basic. В отличие от JavaScript, терминаторы операторов, такие как точка с запятой, не используются для завершения определенного оператора.

Синтаксис одной строки

Двоеточие используется, когда две или более строки VBScript должны быть записаны в одну строку. Следовательно, в VBScript, двоеточия действуют как разделитель строк.

<script language = "vbscript" type = "text/vbscript">
   var1 = 10 : var2 = 20
</script>

Многострочный синтаксис

Когда оператор в VBScript является длинным и если пользователь хочет разбить его на несколько строк, пользователь должен использовать подчеркивание «_». Это улучшает читабельность кода. В следующем примере показано, как работать с несколькими строками.

<script language = "vbscript" type = "text/vbscript">
   var1 = 10 
   var2 = 20
   Sum = var1 + var2  
   document.write("The Sum of two numbers"&_"var1 and var2 is " & Sum)
</script>

Зарезервированные слова

В следующем списке показаны зарезервированные слова в VBScript. Эти зарезервированные слова НЕ ДОЛЖНЫ использоваться в качестве константы или переменной или любых других имен идентификаторов.

петля LSet мне
модификация новый следующий
Не Ничего такого Ноль
На вариант Необязательный
Или же ParamArray заповедник
Частный общественного RaiseEvent
ReDim Rem Продолжить
RSet Выбрать Задавать
Общий не замужем статический
Стоп Sub затем
к Правда Тип
А также Как логический
ByRef Байт ByVal
Вызов случай Учебный класс
Const валюта отлаживать
тусклый Делать двойной
каждый еще ElseIf
пустой Конец EndIf
Enum Eqv Событие
Выход Ложь За
функция Получить Идти к
Если чертенок инвентарь
В целое число Является
Позволять подобно Долго
Тип До тех пор Вариант
венед В то время как С
Xor Eval казнить
Msgbox стирать ExecuteGlobal
Вариант Явный Перемешайте SendKeys

Чувствительность к регистру

VBScript – это язык без учета регистра . Это означает, что ключевые слова языка, переменные, имена функций и любые другие идентификаторы НЕ ДОЛЖНЫ печататься с постоянной заглавной буквой. Таким образом, идентификаторы int_counter, INT_Counter и INT_COUNTER имеют одинаковое значение в VBScript.

Комментарии в VBScript

Комментарии используются для документирования логики программы и пользовательской информации, с которой другие программисты могут беспрепятственно работать над тем же кодом в будущем. Он может включать в себя информацию, такую ​​как разработанную, модифицированную, и он также может включать встроенную логику. Комментарии игнорируются интерпретатором при исполнении. Комментарии в VBScript обозначаются двумя способами.

1. Любое утверждение, начинающееся с одинарной кавычки (‘), рассматривается как комментарий.

Ниже приведен пример –

<script language = "vbscript" type = "text/vbscript">
   <!—
      ' This Script is invoked after successful login
      ' Written by : TutorialsPoint
      ' Return Value : True / False
   //- >
</script>

2. Любое утверждение, начинающееся с ключевого слова «REM».

Ниже приведен пример –

<script language = "vbscript" type = "text/vbscript">
   <!—
      REM This Script is written to Validate the Entered Input
      REM Modified by  : Tutorials point/user2
   //- >
</script>

Включение VBScript в браузерах

Не все современные браузеры поддерживают VBScript. VBScript поддерживается только Internet Explorer от Microsoft, в то время как другие браузеры (Firefox и Chrome) поддерживают только JavaScript. Следовательно, разработчики обычно предпочитают JavaScript, а не VBScript.

Хотя Internet Explorer (IE) поддерживает VBScript, вам может потребоваться включить или отключить эту функцию вручную. Из этого туториала вы узнаете, как включить и отключить поддержку VBScript в Internet Explorer.

VBScript в Internet Explorer

Вот простые шаги для включения или выключения VBScript в вашем Internet Explorer –

  • В меню «Инструменты» выберите «Свойства обозревателя».

  • Выберите вкладку «Безопасность» в диалоговом окне.

  • Нажмите кнопку «Пользовательский уровень»

  • Прокрутите вниз, пока не найдете вариант сценариев

  • Установите флажок «Включить» в разделе «Активные сценарии».

  • Наконец нажмите ОК и выйдите

В меню «Инструменты» выберите «Свойства обозревателя».

Выберите вкладку «Безопасность» в диалоговом окне.

Нажмите кнопку «Пользовательский уровень»

Прокрутите вниз, пока не найдете вариант сценариев

Установите флажок «Включить» в разделе «Активные сценарии».

Наконец нажмите ОК и выйдите

Чтобы отключить поддержку VBScript в Internet Explorer, необходимо выбрать переключатель « Отключить » в разделе « Активные сценарии» .

VBScript – Места размещения

Размещение VBScript в файле HTML

Существует гибкость, позволяющая включать код VBScript в любом месте HTML-документа. Но наиболее предпочтительный способ включить VBScript в ваш HTML-файл заключается в следующем:

  • Скрипт в разделе <head> … </ head>.

  • Скрипт в разделе <body> … </ body>.

  • Скрипт в разделах <body> … </ body> и <head> … </ head>.

  • Сценарий во внешнем файле, а затем включить в раздел <head> … </ head>.

Скрипт в разделе <head> … </ head>.

Скрипт в разделе <body> … </ body>.

Скрипт в разделах <body> … </ body> и <head> … </ head>.

Сценарий во внешнем файле, а затем включить в раздел <head> … </ head>.

В следующем разделе мы увидим, как мы можем использовать VBScript различными способами:

VBScript в разделе <head> … </ head>

Если вы хотите, чтобы скрипт запускался на каком-то событии, например, когда пользователь щелкает где-то, вы поместите этот скрипт в заголовок следующим образом:

<html>
   <head>
      <script type = "text/Vbscript">
         <!--
            Function sayHello() 
               Msgbox("Hello World")
            End Function
         //-->
      </script>
   </head>
   
   <body>
      <input type = "button" onclick = "sayHello()" value = "Say Hello" />
   </body>
</html>

Будет выдан следующий результат – кнопка с именем SayHello. При нажатии на кнопку, окно сообщения отображается пользователю с сообщением «Hello World».

   

VBScript в разделе <body> … </ body>

Если вам нужен сценарий для запуска при загрузке страницы, чтобы сценарий генерировал содержимое страницы, сценарий помещается в часть <body> документа. В этом случае у вас не было бы никакой функции, определенной с использованием VBScript –

<html>
   <head> </head>
   <body>
      <script type = "text/vbscript">
         <!--
            document.write("Hello World")
         //-->
      </script>
      <p>This is web page body </p>
   </body>
</html>

Это даст следующий результат –

Hello World
This is web page body 

VBScript в разделах <body> и <head>

Вы можете поместить свой код VBScript в разделы <head> и <body> следующим образом:

<html>
   <head>
      <script type = "text/vbscript">
         <!--
            Function sayHello() 
               msgbox("Hello World")
            End Function
         //-->
      </script>
   </head>
   
   <body>
      <script type = "text/vbscript">
         <!--
         document.write("Hello World")
         //-->
      </script>
      <input type = "button" onclick = "sayHello()" value = "Say Hello" />
   </body>
</html>

Будет получен следующий результат – сообщение Hello World с кнопкой «Say Hello». После нажатия на кнопку пользователю отображается окно с сообщением «Hello World».

Hello World 

VBScript во внешнем файле

Когда вы начнете более интенсивно работать с VBScript, вы, вероятно, обнаружите случаи, когда вы повторно используете идентичный код VBScript на нескольких страницах сайта. Вы не должны поддерживать одинаковый код в нескольких файлах HTML.

Тег script предоставляет механизм, позволяющий хранить VBScript во внешнем файле, а затем включать его в файлы HTML. Вот пример, показывающий, как вы можете включить внешний файл VBScript в свой HTML-код, используя тег script и его атрибут src:

<html>
   <head>
      <script type = "text/vbscript" src = "filename.vbs" ></script>
   </head>
   <body>
      .......
   </body>
</html>

Чтобы использовать VBScript из внешнего источника файлов, вам нужно написать весь исходный код VBScript в простом текстовом файле с расширением «.vbs», а затем включить этот файл, как показано выше. Например, вы можете сохранить следующее содержимое в файле filename.vbs, а затем использовать функцию sayHello в своем HTML-файле после включения файла filename.vbs.

Function sayHello()
   Msgbox "Hello World"
End Function

Размещение VBScript в QTP

VBScript помещается в инструмент QTP (Quick Test Professional), но он НЕ заключен в теги HTML. Файл сценария сохраняется с расширением .vbs и выполняется механизмом выполнения Quick Test Professional.

VBScript – переменные

Переменные VBScript

Переменная – это именованная ячейка памяти, используемая для хранения значения, которое можно изменить во время выполнения скрипта. VBScript имеет только ОДИН фундаментальный тип данных, Variant .

Правила объявления переменных –

  • Имя переменной должно начинаться с алфавита.

  • Имена переменных не могут превышать 255 символов.

  • Переменные НЕ должны содержать точку (.)

  • Имена переменных должны быть уникальными в объявленном контексте.

Имя переменной должно начинаться с алфавита.

Имена переменных не могут превышать 255 символов.

Переменные НЕ должны содержать точку (.)

Имена переменных должны быть уникальными в объявленном контексте.

Объявление переменных

Переменные объявляются с использованием ключевого слова «dim». Поскольку существует только ОДИН фундаментальный тип данных, все объявленные переменные являются вариантами по умолчанию. Следовательно, пользователь НЕ ДОЛЖЕН упоминать тип данных во время объявления.

Пример 1. В этом примере IntValue может использоваться как строка, целое число или даже массив.

Dim Var

Пример 2 – Два или более объявлений разделяются запятой (,)

Dim Variable1,Variable2

Присвоение значений переменным

Значения присваиваются аналогично алгебраическому выражению. Имя переменной в левой части сопровождается символом равенства (=), а затем ее значением в правой части.

правила

  • Числовые значения должны быть объявлены без двойных кавычек.

  • Значения String должны быть заключены в двойные кавычки (“)

  • Переменные даты и времени должны быть заключены в хеш-символ (#)

Числовые значения должны быть объявлены без двойных кавычек.

Значения String должны быть заключены в двойные кавычки (“)

Переменные даты и времени должны быть заключены в хеш-символ (#)

Примеры

' Below Example, The value 25 is assigned to the variable.
Value1 = 25

' A String Value ‘VBScript’ is assigned to the variable StrValue.
StrValue = “VBScript”

' The date 01/01/2020 is assigned to the variable DToday.
Date1 = #01/01/2020#

' A Specific Time Stamp is assigned to a variable in the below example.
Time1 = #12:30:44 PM#

Область действия переменных

Переменные могут быть объявлены с помощью следующих операторов, которые определяют область действия переменной. Область действия переменной играет решающую роль при использовании внутри процедуры или классов.

  • тусклый
  • общественного
  • Частный

тусклый

Переменные, объявленные с использованием ключевого слова «Dim» на уровне процедуры, доступны только в рамках одной процедуры. Переменные, объявленные с использованием ключевого слова «Dim» на уровне сценария, доступны для всех процедур одного и того же сценария.

Пример. В приведенном ниже примере значения Var1 и Var2 объявляются на уровне скрипта, а Var3 объявляется на уровне процедуры.

Примечание. Цель этой главы – понять переменные. Функции будут подробно рассмотрены в следующих главах.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim Var1
         Dim Var2
         
         Call add()
         Function add()
            Var1 = 10
            Var2 = 15
            Dim Var3
            Var3 = Var1 + Var2
            Msgbox Var3 'Displays 25, the sum of two values.
         End Function

         Msgbox Var1   ' Displays 10 as Var1 is declared at Script level
         Msgbox Var2   ' Displays 15 as Var2 is declared at Script level
         Msgbox Var3   ' Var3 has No Scope outside the procedure. Prints Empty
      </script>
   </body>
</html>

общественного

Переменные, объявленные с использованием «открытого» ключевого слова, доступны для всех процедур во всех связанных сценариях. При объявлении переменной типа «public» ключевое слово Dim заменяется на «Public».

Пример. В следующем примере Var1 и Var2 доступны на уровне сценария, а Var3 доступен для всех связанных сценариев и процедур, поскольку он объявлен как Public.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim Var1
         Dim Var2
         Public Var3

         Call add()

         Function add()
            Var1 = 10
            Var2 = 15
            Var3 = Var1+Var2
            Msgbox Var3 'Displays 25, the sum of two values.
         End Function

         Msgbox Var1   ' Displays 10 as Var1 is declared at Script level
         Msgbox Var2   ' Displays 15 as Var2 is declared at Script level
         Msgbox Var3   ' Displays 25 as Var3 is declared as Public 

      </script>
   </body>
</html>

Частный

Переменные, которые объявлены как «Частные», имеют область действия только в том сценарии, в котором они объявлены. При объявлении переменной типа «Private» ключевое слово Dim заменяется на «Private».

Пример. В следующем примере Var1 и Var2 доступны на уровне сценария. Var3 объявлен как Private и доступен только для этого конкретного скрипта. Использование «Частных» переменных более выражено в пределах класса.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim Var1
         Dim Var2
         Private Var3

         Call add()
         Function add()
            Var1 = 10
            Var2 = 15
            Var3 = Var1+Var2
            Msgbox Var3 'Displays the sum of two values.
         End Function

         Msgbox Var1   ' Displays 10 as Var1 is declared at Script level
         Msgbox Var2   ' Displays 15 as Var2 is declared at Script level
         Msgbox Var3   ' Displays 25 but Var3 is available only for this script.
      </script>
   </body>
</html>

VBScript – константы

Константа – это именованная область памяти, используемая для хранения значения, которое НЕ МОЖЕТ быть изменено во время выполнения скрипта. Если пользователь пытается изменить значение константы, выполнение скрипта заканчивается ошибкой. Константы объявляются так же, как и переменные.

Объявление констант

Синтаксис

[Public | Private] Const Constant_Name = Value

Константа может иметь тип Public или Private. Использование Public или Private является необязательным. Публичные константы доступны для всех сценариев и процедур, в то время как частные константы доступны в рамках процедуры или класса. Можно назначить любое значение, такое как число, строка или дата, объявленной константе.

Пример 1

В этом примере значение pi равно 3,4, и оно отображает площадь круга в окне сообщения.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim intRadius
         intRadius = 20
         const pi = 3.14
         Area = pi*intRadius*intRadius
         Msgbox Area

      </script>
   </body>
</html>

Пример 2

В приведенном ниже примере показано, как назначить значение String и Date константе.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Const myString = "VBScript"
         Const myDate = #01/01/2050#
         Msgbox myString
         Msgbox myDate

      </script>
   </body>
</html>

Пример 3

В приведенном ниже примере пользователь пытается изменить значение константы; следовательно, это закончится с ошибкой выполнения.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim intRadius
         intRadius = 20
         const pi = 3.14
         pi = pi*pi	'pi VALUE CANNOT BE CHANGED.THROWS ERROR'
         Area = pi*intRadius*intRadius
         Msgbox Area
         
      </script>
   </body>
</html>

VBScript – Операторы

Кто такой оператор?

Давайте возьмем выражение 4 + 5, равное 9 . Здесь 4 и 5 называются операндами, а + называется оператором . Язык VBScript поддерживает следующие типы операторов –

  • Арифметические Операторы
  • Операторы сравнения
  • Логические (или реляционные) операторы
  • Операторы конкатенации

Арифметические операторы

VBScript поддерживает следующие арифметические операторы –

Предположим, что переменная A содержит 5, а переменная B содержит 10, тогда –

Показать примеры

оператор Описание пример
+ Добавляет два операнда А + Б даст 15
Вычитает второй операнд из первого А – Б даст -5
* Умножьте оба операнда А * Б даст 50
/ Разделите числитель на денумератор Б / у даст 2
% Оператор модуля и остаток от целочисленного деления B MOD A даст 0
^ Оператор возведения в степень B ^ A даст 100000

Чтобы лучше понять этих операторов, попробуйте сами .

Операторы сравнения

В языке VBScript поддерживаются следующие операторы сравнения:

Предположим, что переменная A содержит 10, а переменная B содержит 20, тогда –

Показать примеры

оператор Описание пример
знак равно Проверяет, равны ли значения двух операндов или нет, если да, тогда условие становится истинным. (A == B) является ложным.
<> Проверяет, равны ли значения двух операндов или нет, если значения не равны, тогда условие становится истинным. (A <> B) верно.
> Проверяет, больше ли значение левого операнда, чем значение правого операнда, если да, тогда условие становится истинным. (A> B) является ложным.
< Проверяет, меньше ли значение левого операнда, чем значение правого операнда, если да, тогда условие становится истинным. (A <B) верно.
> = Проверяет, больше ли значение левого операнда или равно значению правого операнда, если да, тогда условие становится истинным. (A> = B) является ложным.
<= Проверяет, меньше ли значение левого операнда или равно значению правого операнда, если да, тогда условие становится истинным. (A <= B) верно.

Чтобы лучше понять этих операторов, попробуйте сами .

Логические операторы

В языке VBScript поддерживаются следующие логические операторы:

Предположим, что переменная A содержит 10, а переменная B содержит 0, тогда –

Показать примеры

оператор Описание пример
А ТАКЖЕ Называется логический оператор И. Если оба условия истинны, то выражение становится истинным. a <> 0 И b <> 0 – Ложь.
ИЛИ ЖЕ Вызывается логическим оператором ИЛИ. Если любое из двух условий является Истиной, тогда условие становится Истиной. a <> 0 ИЛИ b <> 0 верно.
НЕ Вызывается логическим оператором НЕ. Он меняет логическое состояние своего операнда. Если условие имеет значение True, то оператор Logical NOT сделает его False. НЕ (a <> 0 ИЛИ b <> 0) ложно.
XOR Называется логическим исключением. Это комбинация оператора NOT и OR. Если одно и только одно из выражений имеет значение True, результатом будет True. (a <> 0 XOR b <> 0) верно.

Чтобы лучше понять этих операторов, попробуйте сами .

Операторы конкатенации

Существуют следующие операторы конкатенации, поддерживаемые языком VBScript:

Предположим, что переменная A содержит 5, а переменная B содержит 10, тогда –

Показать примеры

оператор Описание пример
+ Добавляет два значения, так как значения переменных являются числовыми А + Б даст 15
& Объединяет два значения А & Б даст 510

Допустим, переменная A = “Microsoft” и переменная B = “VBScript”, тогда –

оператор Описание пример
+ Объединяет два значения A + B даст MicrosoftVBScript
& Объединяет два значения A & B предоставит MicrosoftVBScript

Примечание. Операторы конкатенации могут использоваться для чисел и строк. Выходные данные зависят от контекста, если переменные содержат числовое значение или строковое значение.

Чтобы лучше понять этих операторов, попробуйте сами .

VBScript – принятие решений

Принятие решений позволяет программистам контролировать ход выполнения скрипта или одного из его разделов. Выполнение регулируется одним или несколькими условными утверждениями.

Ниже приводится общая форма типичной структуры принятия решений, встречающейся в большинстве языков программирования.

Заявления о принятии решений в VBScript

VBScript предоставляет следующие типы решений для принятия решений.

утверждение Описание
если заявление Оператор if состоит из логического выражения, за которым следует один или несколько операторов.
если .. еще заявление Оператор if else состоит из логического выражения, за которым следует один или несколько операторов. Если условие истинно, выполняются операторы согласно операторам If . Если условие ложно, то остальная часть скрипта выполняется
если … еще одно заявление Оператор if, за которым следует одно или несколько выражений ElseIf , которое состоит из логических выражений, а затем следует необязательный оператор else, который выполняется, когда все условие становится ложным.
вложенные операторы if Оператор if или elseif внутри другого оператора if или elseif .
заявление о переключении Оператор switch позволяет проверять переменную на соответствие списку значений.

VBScript – циклы

Может возникнуть ситуация, когда вам нужно выполнить блок кода несколько раз. В общем случае операторы выполняются последовательно: первый оператор в функции выполняется первым, затем второй и так далее.

Языки программирования предоставляют различные структуры управления, которые позволяют более сложные пути выполнения. Оператор цикла позволяет нам выполнять оператор или группу операторов несколько раз, и далее следует общее из оператора цикла в VBScript.

Петлевая архитектура

VBScript предоставляет следующие типы циклов для обработки требований циклов. Нажмите на следующие ссылки, чтобы проверить их детали.

Тип петли Описание
для цикла Выполняет последовательность операторов несколько раз и сокращает код, который управляет переменной цикла.
для каждого цикла Он выполняется, если в группе есть хотя бы один элемент, и повторяется для каждого элемента в группе.
пока .. венд петля Он проверяет условие перед выполнением тела цикла.
сделай .. пока петли Операторы do..While будут выполняться до тех пор, пока условие будет True. (Т. Е.) Цикл должен повторяться до тех пор, пока условие не станет False.
делать .. до петель Операторы do..Until будут выполняться до тех пор, пока условие имеет значение False (т. Е.) Цикл должен повторяться до тех пор, пока условие не станет True.

Заявления о контроле цикла

Операторы управления циклом изменяют выполнение от его нормальной последовательности. Когда выполнение выходит из области видимости, все остальные операторы в цикле НЕ выполняются.

VBScript поддерживает следующие операторы управления. Нажмите на следующие ссылки, чтобы проверить их детали.

Контрольное заявление Описание
Выход для выписки Завершает оператор цикла For и передает выполнение в оператор, следующий сразу за циклом
Выйти Do заявление Завершает оператор Do While и переносит выполнение в оператор сразу после цикла

VBScript – События

Что такое событие?

Взаимодействие VBScript с HTML обрабатывается посредством событий, которые происходят, когда пользователь или браузер манипулируют страницей. Когда страница загружается, это событие. Когда пользователь нажимает кнопку, этот щелчок также является событием. Другие примеры событий включают нажатие любой клавиши, закрытие окна, изменение размера окна и т. Д. Разработчики могут использовать эти события для выполнения закодированных ответов VBScript, которые заставляют кнопки закрывать окна, сообщения, отображаемые пользователям, данные для проверки и практически любые возможный ответ другого типа.

События являются частью объектной модели документа (DOM), и каждый элемент HTML имеет определенный набор событий, которые могут запускать код VBScript. Пожалуйста, пройдите этот небольшой учебник для лучшего понимания HTML Event Reference . Здесь мы увидим несколько примеров, чтобы понять связь между Event и VBScript.

Тип события onclick

Это наиболее часто используемый тип события, которое происходит, когда пользователь нажимает левую кнопку мыши. Вы можете выставить свою проверку, предупреждение и т. Д. Этому типу события.

пример

<html>
   <head>
      <script language = "vbscript" type = "text/vbscript">
         Function sayHello() 
            msgbox "Hello World"
         End Function
      </script>
   </head>
   
   <body>
      <input type = "button" onclick = "sayHello()" value = "Say Hello"/>
   </body>
</html>

Это даст следующий результат, и когда вы нажмете кнопку Hello, произойдет событие onclick, которое вызовет функцию sayHello ().


тип события отправки

Еще один наиболее важный тип события – onsubmit . Это событие происходит, когда вы пытаетесь отправить форму. Таким образом, вы можете поставить проверку формы для этого типа события. Форма отправляется нажатием кнопки «Отправить», появляется окно сообщения.

Форма отправляется нажатием кнопки «Отправить», появляется окно сообщения.

пример

<html>
   <head> </head>
   <body>
      <script language = "VBScript">       
         Function fnSubmit()
            Msgbox("Hello Tutorialspoint.Com")
         End Function       
      </script>
      
      <form action = "/cgi-bin/test.cgi" method = "post" name = "form1" onSubmit = "fnSubmit()">
         <input name = "txt1" type = "text"><br>
         <input name = "btnButton1" type = "submit" value="Submit">
      </form>
   </body>
</html>

наверху и наверху

Эти два типа событий помогут вам создавать приятные эффекты с изображениями или даже с текстом. Событие onmouseover наступает, когда вы наводите курсор мыши на какой-либо элемент, а событие onmouseout возникает, когда вы убираете мышь из этого элемента.

пример

<html>
   <head> </head>
   <body>
      <script language = "VBScript">       
         Function AlertMsg
            Msgbox("ALERT !")
         End Function
          
         Function onmourse_over()
            Msgbox("Onmouse Over")
         End Function

         Sub txt2_OnMouseOut()
            Msgbox("Onmouse Out !!!")
         End Sub
          
         Sub btnButton_OnMouseOut()
            Msgbox("onmouse out on Button !")
         End Sub
      </script>
      
      <form action = "page.cgi" method = "post" name = "form1">
         <input name = "txt1" type = "text" OnMouseOut = "AlertMsg()"><br>
         <input name = "txt2" type = "text" OnMouseOver = "onmourse_over()">
         <br><input name = "btnButton" type = "button" value = "Submit">
      </form>
   </body>
</html>

Результат будет получен при наведении курсора мыши на текстовое поле, а также при перемещении фокуса от текстового поля и кнопки.

Стандарты HTML 4

Стандартные события HTML 4 перечислены здесь для вашей справки. Здесь скрипт указывает на функцию VBScript, которая должна быть выполнена для этого события.

Событие Значение Описание
по изменению скрипт Скрипт запускается при изменении элемента
onsubmit скрипт Скрипт запускается при отправке формы
OnReset скрипт Скрипт запускается при сбросе формы
ONBLUR скрипт Скрипт запускается, когда элемент теряет фокус
OnFocus скрипт Скрипт запускается, когда элемент получает фокус
OnKeyDown скрипт Скрипт запускается при нажатии клавиши
OnKeyPress скрипт Скрипт запускается при нажатии и отпускании клавиши
OnKeyUp скрипт Скрипт запускается при отпускании ключа
по щелчку скрипт Скрипт запускается при щелчке мышью
ondblclick скрипт Скрипт запускается при двойном щелчке мышью
OnMouseDown скрипт Скрипт запускается при нажатии кнопки мыши
OnMouseMove скрипт Скрипт запускается при перемещении указателя мыши
onmouseout скрипт Скрипт запускается, когда указатель мыши выходит за пределы элемента
при наведении мыши скрипт Скрипт запускается, когда указатель мыши перемещается над элементом
OnMouseUp скрипт Скрипт запускается при отпускании кнопки мыши

VBScript и файлы cookie

Что такое куки?

Веб-браузеры и серверы используют протокол HTTP для связи, а HTTP – это протокол без сохранения состояния. Но для коммерческого веб-сайта требуется хранить информацию о сеансе на разных страницах. Например, регистрация одного пользователя заканчивается после заполнения множества страниц. Но как сохранить информацию о сеансе пользователя на всех веб-страницах. Во многих ситуациях использование файлов cookie является наиболее эффективным способом запоминания и отслеживания предпочтений, покупок, комиссий и другой информации, необходимой для лучшего восприятия посетителей или статистики сайта.

Как это устроено?

Ваш сервер отправляет некоторые данные в браузер посетителя в виде файла cookie. Браузер может принять куки. Если это так, он сохраняется в виде простой текстовой записи на жестком диске посетителя. Теперь, когда посетитель заходит на другую страницу вашего сайта, браузер отправляет тот же файл cookie на сервер для поиска. После получения ваш сервер знает / запоминает то, что было сохранено ранее. Cookies – это запись данных в виде простого текста из 5 полей переменной длины –

  • Истекает – дата окончания срока действия куки. Если это поле пустое, срок действия файла cookie истечет, когда посетитель выйдет из браузера.

  • Домен – доменное имя вашего сайта.

  • Путь – путь к каталогу или веб-странице, на которой установлен файл cookie. Это может быть пустым, если вы хотите получить куки из любого каталога или страницы.

  • Безопасный – если в этом поле содержится слово «безопасный», то файл cookie может быть получен только с безопасного сервера. Если это поле пустое, такого ограничения не существует.

  • Имя = значение – файлы cookie устанавливаются и извлекаются в форме пар ключ-значение.

Истекает – дата окончания срока действия куки. Если это поле пустое, срок действия файла cookie истечет, когда посетитель выйдет из браузера.

Домен – доменное имя вашего сайта.

Путь – путь к каталогу или веб-странице, на которой установлен файл cookie. Это может быть пустым, если вы хотите получить куки из любого каталога или страницы.

Безопасный – если в этом поле содержится слово «безопасный», то файл cookie может быть получен только с безопасного сервера. Если это поле пустое, такого ограничения не существует.

Имя = значение – файлы cookie устанавливаются и извлекаются в форме пар ключ-значение.

Файлы cookie изначально предназначались для программирования CGI, и данные cookie автоматически передаются между веб-браузером и веб-сервером, поэтому сценарии CGI на сервере могут считывать и записывать значения файлов cookie, которые хранятся на клиенте.

VBScript также может управлять файлами cookie, используя свойство cookie объекта Document . VBScript может читать, создавать, изменять и удалять файлы cookie или файлы cookie, которые применяются к текущей веб-странице.

Хранение куки

Самый простой способ создать cookie – это присвоить строковое значение объекту document.cookie , который выглядит следующим образом:

Синтаксис

document.cookie = "key1 = value1;key2 = value2;expires = date"

Здесь атрибут expires необязателен. Если вы предоставите этому атрибуту правильную дату или время, то срок действия файла cookie истечет в заданную дату или время, и после этого значение файлов cookie будет недоступно.

пример

Ниже приведен пример установки имени клиента во входном cookie.

<html>
   <head>
      <script type = "text/vbscript">
         Function WriteCookie
            If document.myform.customer.value = "" Then
               msgbox "Enter some value!"
            Else
               cookievalue = (document.myform.customer.value)
               document.cookie = "name = " + cookievalue
               msgbox "Setting Cookies : " & "name = " & cookievalue
            End If
         End Function
      </script>
   </head>
   
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>
   </body>
</html>

Это даст следующий результат. Теперь введите что-то в текстовое поле и нажмите кнопку «Установить cookie», чтобы установить куки.

Теперь в вашей системе есть файл cookie с именем name . Вы можете установить несколько файлов cookie, используя несколько пар ключ = значение, разделенных запятой. Вы узнаете, как прочитать этот файл cookie в следующем разделе.

Чтение файлов cookie

Чтение cookie-файла так же просто, как и его запись, потому что значением объекта document.cookie является cookie-файл. Таким образом, вы можете использовать эту строку всякий раз, когда вы хотите получить доступ к cookie. Строка document.cookie будет содержать список пар имя = значение, разделенных точками с запятой, где имя - это имя файла cookie, а значение - его строковое значение. Вы можете использовать функцию split () для разбивки строки на ключ и значения следующим образом:

пример

Ниже приведен пример установки файлов cookie в предыдущем разделе.

<html>
   <head>
      <script type = "text/vbscript">
         Function ReadCookie
            allcookies = document.cookie
            msgbox "All Cookies : " + allcookies
            cookiearray = split(allcookies,";")
            
            For i = 0 to ubound(cookiearray)
               Name  = Split(cookiearray(i),"=")
               Msgbox "Key is : " + Name(0) + " and Value is : " + Name(1)
            Next
         End Function
      </script>
   </head>
   
   <body>
      <form name = "myform" action = "">
         <input type = "button" value = "Get Cookie" onclick = "ReadCookie()"/>
      </form>
   </body>
</html>

Примечание. Здесь UBound - это метод класса Array , который возвращает длину массива. Мы обсудим Массивы в отдельной главе; до этого времени, пожалуйста, попробуйте переварить это.

Это даст следующий результат. Теперь нажмите кнопку «Получить куки», чтобы увидеть куки, которые вы установили в предыдущем разделе.

Примечание. Возможно, на вашем компьютере уже установлены другие файлы cookie. Итак, приведенный выше код покажет вам все файлы cookie, установленные на вашем компьютере.

Установка даты истечения срока действия файлов cookie

Вы можете продлить срок действия файла cookie за пределы текущего сеанса браузера, установив дату окончания срока действия и сохранив дату окончания срока действия в файле cookie. Это можно сделать, установив для атрибута expires дату и время.

пример

В следующем примере показано, как установить дату истечения срока действия файла cookie через 1 месяц.

<html>
   <head>
      <script type = "text/vbscript">
         Function WriteCookie()
            x = now()
            y = dateadd("m",1,now())  ' Making it to expire next 
            cookievalue = document.myform.customer.value
            document.cookie = "name = "  & cookievalue
            document.cookie = "expires = " & y
            msgbox("Setting Cookies : " & "name=" & cookievalue )
         End Function
      </script>
   </head>
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>
   </body>
</html>

Удаление Cookie

Иногда вам может понадобиться удалить cookie, чтобы при последующих попытках чтения cookie ничего не возвращалось. Для этого вам просто нужно установить дату истечения срока в прошлом.

пример

В следующем примере показано, как удалить cookie, установив срок его действия 1 месяц в прошлом.

<html>
   <head>
      <script type = "text/vbscript">
         Function WriteCookie()
            x = now()
            x = now()
            a = Month(x)-1
            b = day(x)
            c = year(x)
            d = DateSerial(c,a,b)
            e = hour(x) 
            
            msgbox e
            f = minute(x)
            
            msgbox f
            d = cdate(d & " " & e & ":" & f)
            
            msgbox d
            cookievalue = document.myform.customer.value
            document.cookie = "name = "  & cookievalue
            document.cookie = "expires = " & d
            msgbox("Setting Cookies : " & "name=" & cookievalue )
         End Function
      </script>
   </head>
   <body>
      <form name = "myform" action = "">
         Enter name: <input type = "text" name = "customer"/>
         <input type = "button" value = "Set Cookie" onclick = "WriteCookie()"/>
      </form>
   </body>
</html>

VBScript - номера

Числовые функции помогают разработчикам эффективно обрабатывать числа, а также конвертировать их подтипы. Это также помогает им использовать встроенные математические функции, связанные с VBScript.

Функции преобразования чисел

Числовые функции помогают нам преобразовать данное число из одного подтипа данных в другой подтип данных.

Показать примеры

Sr.No Описание функции
1

CDbl

Функция, которая преобразует данное число любого варианта подтипа в удвоение

2

CInt

Функция, которая преобразует данное число любого варианта подтипа в целое число

3

CLng

Функция, которая преобразует данное число любого варианта подтипа в Long

4

CSng

Функция, которая преобразует данное число любого варианта подтипа в Single

5

наговор

Функция, которая преобразует заданное число любого варианта подтипа в шестнадцатеричное

CDbl

Функция, которая преобразует данное число любого варианта подтипа в удвоение

CInt

Функция, которая преобразует данное число любого варианта подтипа в целое число

CLng

Функция, которая преобразует данное число любого варианта подтипа в Long

CSng

Функция, которая преобразует данное число любого варианта подтипа в Single

наговор

Функция, которая преобразует заданное число любого варианта подтипа в шестнадцатеричное

Функции форматирования чисел

Функции форматирования чисел помогают разработчикам выразить данное число в желаемом формате.

Показать примеры

Sr.No Описание функции
1

FormatNumber

Функция, которая возвращает выражение в формате числа

2

FormatPercent

Функция, которая будет возвращать выражение, отформатированное в процентах

FormatNumber

Функция, которая возвращает выражение в формате числа

FormatPercent

Функция, которая будет возвращать выражение, отформатированное в процентах

Математические функции

Математические функции помогают нам оценить математические и тригонометрические функции заданного входного числа.

Показать примеры

Sr.No Описание функции
1

Int

Функция, которая возвращает целую часть заданного числа

2

исправлять

Функция, которая возвращает целую часть заданного числа

3

Журнал

Функция, которая возвращает натуральный логарифм заданного числа. Отрицательные числа запрещены

4

октябрь

Функция, которая возвращает октальное значение заданного процента

5

наговор

Функция, которая возвращает шестнадцатеричное значение данного числа

6

Rnd

Функция, которая возвращает случайное число от 0 до 1

7

Sgn

Функция, которая возвращает число, соответствующее знаку указанного числа

8

Sqr

Функция, которая возвращает квадратный корень из данного числа. Отрицательные числа запрещены

9

Abs

Функция, которая возвращает абсолютное значение заданного числа

10

Exp

Функция, которая возвращает значение е, возведенное в указанное число

11

грешить

Функция, которая возвращает значение синуса данного числа

12

Cos

Функция, которая возвращает значение косинуса данного числа

13

загар

Функция, которая возвращает значение tan заданного числа

Int

Функция, которая возвращает целую часть заданного числа

исправлять

Функция, которая возвращает целую часть заданного числа

Журнал

Функция, которая возвращает натуральный логарифм заданного числа. Отрицательные числа запрещены

октябрь

Функция, которая возвращает октальное значение заданного процента

наговор

Функция, которая возвращает шестнадцатеричное значение данного числа

Rnd

Функция, которая возвращает случайное число от 0 до 1

Sgn

Функция, которая возвращает число, соответствующее знаку указанного числа

Sqr

Функция, которая возвращает квадратный корень из данного числа. Отрицательные числа запрещены

Abs

Функция, которая возвращает абсолютное значение заданного числа

Exp

Функция, которая возвращает значение е, возведенное в указанное число

грешить

Функция, которая возвращает значение синуса данного числа

Cos

Функция, которая возвращает значение косинуса данного числа

загар

Функция, которая возвращает значение tan заданного числа

VBScript - Строки

Строки - это последовательность символов, которая может состоять из букв или цифр, специальных символов или всех из них. Переменная называется строкой, если она заключена в двойные кавычки "".

Синтаксис

variablename = "string"

Примеры

str1 = "string"   ' Only Alphabets
str2 = "132.45"   ' Only Numbers
str3 = "!@#$;*"   ' Only Special Characters
Str4 = "Asc23@#"  ' Has all the above

Строковые функции

Существуют предопределенные функции VBScript String, которые помогают разработчикам очень эффективно работать со строками. Ниже приведены методы String, которые поддерживаются в VBScript. Пожалуйста, нажмите на каждый из методов, чтобы узнать подробно.

Имя функции Описание
InStr Возвращает первое вхождение указанной подстроки. Поиск происходит слева направо.
InStrRev Возвращает первое вхождение указанной подстроки. Поиск происходит справа налево.
LCASE Возвращает нижний регистр указанной строки.
UCase Возвращает верхний регистр указанной строки.
Оставил Возвращает определенное количество символов с левой стороны строки.
Правильно Возвращает определенное количество символов с правой стороны строки.
средний Возвращает определенное количество символов из строки на основе указанных параметров.
LTrim Возвращает строку после удаления пробелов в левой части указанной строки.
RTrim Возвращает строку после удаления пробелов с правой стороны указанной строки.
Отделка Возвращает строковое значение после удаления начальных и конечных пробелов.
Len Возвращает длину заданной строки.
замещать Возвращает строку после замены строки другой строкой.
Космос Заполняет строку указанным количеством пробелов.
StrComp Возвращает целочисленное значение после сравнения двух указанных строк.
строка Возвращает строку с указанным символом указанное количество раз.
StrReverse Возвращает строку после изменения последовательности символов данной строки.

VBScript - Массивы

Что такое массив?

Мы очень хорошо знаем, что переменная является контейнером для хранения значения. Иногда разработчики могут одновременно хранить более одного значения в одной переменной. Когда ряд значений хранится в одной переменной, он называется переменной массива .

Декларация массива

Массивы объявляются так же, как и переменная, за исключением того, что объявление переменной массива использует круглые скобки. В следующем примере размер массива указан в скобках.

'Method 1 : Using Dim
Dim arr1() 'Without Size

'Method 2 : Mentioning the Size
Dim arr2(5) 'Declared with size of 5

'Method 3 : using 'Array' Parameter
Dim arr3
arr3 = Array("apple","Orange","Grapes")
  • Хотя размер массива указан как 5, он может содержать 6 значений, так как индекс массива начинается с нуля.

  • Индекс массива не может быть отрицательным.

  • Массивы VBScript могут хранить переменные любого типа в массиве. Следовательно, массив может хранить целое число, строку или символы в одной переменной массива.

Хотя размер массива указан как 5, он может содержать 6 значений, так как индекс массива начинается с нуля.

Индекс массива не может быть отрицательным.

Массивы VBScript могут хранить переменные любого типа в массиве. Следовательно, массив может хранить целое число, строку или символы в одной переменной массива.

Присвоение значений массиву

Значения присваиваются массиву путем указания значения индекса массива для каждого из назначаемых значений. Это может быть строка.

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim arr(5)
         arr(0) = "1"            'Number as String
         arr(1) = "VBScript"     'String
         arr(2) = 100            'Number
         arr(3) = 2.45           'Decimal Number
         arr(4) = #10/07/2013#   'Date
         arr(5) = #12.45 PM#     'Time

         document.write("Value stored in Array index 0 : " & arr(0) & "<br />")
         document.write("Value stored in Array index 1 : " & arr(1) & "<br />")
         document.write("Value stored in Array index 2 : " & arr(2) & "<br />")
         document.write("Value stored in Array index 3 : " & arr(3) & "<br />")
         document.write("Value stored in Array index 4 : " & arr(4) & "<br />")
         document.write("Value stored in Array index 5 : " & arr(5) & "<br />")

      </script>
   </body>
</html>

Когда приведенный выше код сохраняется как .HTML и выполняется в Internet Explorer, он дает следующий результат -

Value stored in Array index 0 : 1
Value stored in Array index 1 : VBScript
Value stored in Array index 2 : 100
Value stored in Array index 3 : 2.45
Value stored in Array index 4 : 7/10/2013
Value stored in Array index 5 : 12:45:00 PM

Многомерные массивы

Массивы не ограничиваются одним измерением и могут иметь максимум 60 измерений. Двумерные массивы являются наиболее часто используемыми.

пример

В следующем примере объявляется многомерный массив с 3 строками и 4 столбцами.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim arr(2,3)	' Which has 3 rows and 4 columns
         arr(0,0) = "Apple" 
         arr(0,1) = "Orange"
         arr(0,2) = "Grapes"           
         arr(0,3) = "pineapple" 
         
         arr(1,0) = "cucumber"           
         arr(1,1) = "beans"           
         arr(1,2) = "carrot"           
         arr(1,3) = "tomato"    
         
         arr(2,0) = "potato"             
         arr(2,1) = "sandwitch"            
         arr(2,2) = "coffee"             
         arr(2,3) = "nuts"            
                  
         document.write("Value in Array index 0,1 : " &  arr(0,1) & "<br />")
         document.write("Value in Array index 2,2 : " &  arr(2,2) & "<br />")

      </script>
   </body>
</html>

Когда приведенный выше код сохраняется как .HTML и выполняется в Internet Explorer, он дает следующий результат -

Value stored in Array index : 0 , 1 : Orange
Value stored in Array index : 2 , 2 : coffee

Редим Заявление

Оператор ReDim используется для объявления переменных динамического массива и выделения или перераспределения пространства хранения.

ReDim [Preserve] varname(subscripts) [, varname(subscripts)]
  • Сохранять - необязательный параметр, используемый для сохранения данных в существующем массиве при изменении размера последнего измерения.

  • varname - Обязательный параметр, который обозначает Имя переменной, которое должно соответствовать стандартным соглашениям об именах переменных.

  • subscripts - Обязательный параметр, который указывает размер массива.

Сохранять - необязательный параметр, используемый для сохранения данных в существующем массиве при изменении размера последнего измерения.

varname - Обязательный параметр, который обозначает Имя переменной, которое должно соответствовать стандартным соглашениям об именах переменных.

subscripts - Обязательный параметр, который указывает размер массива.

пример

В приведенном ниже примере массив был переопределен и затем сохранил значения при изменении существующего размера массива.

Примечание. При изменении размера массива, меньшего, чем он был изначально, данные в удаленных элементах будут потеряны.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim a()
         i = 0
         redim a(5)
         a(0) = "XYZ"
         a(1) = 41.25
         a(2) = 22
           
         REDIM PRESERVE a(7)
         For i = 3 to 7
         a(i) = i
         Next
           
         'to Fetch the output
         For i = 0 to ubound(a)
            Msgbox a(i)
         Next
      </script>
   </body>
</html>

Когда мы сохраняем приведенный выше скрипт как HTML и выполняем его в Internet Explorer, он дает следующий результат.

XYZ
41.25
22
3
4
5
6
7

Методы массива

В VBScript есть различные встроенные функции, которые помогают разработчикам эффективно обрабатывать массивы. Все методы, которые используются в сочетании с массивами, перечислены ниже. Пожалуйста, нажмите на название метода, чтобы узнать подробно.

функция Описание
LBound Функция, которая возвращает целое число, соответствующее наименьшему нижнему индексу из указанных массивов.
UBound Функция, которая возвращает целое число, соответствующее наибольшему нижнему индексу заданных массивов.
Трещина Функция, которая возвращает массив, содержащий указанное количество значений. Разделены на основе разделителя.
Присоединиться Функция, которая возвращает строку, содержащую указанное количество подстрок в массиве. Это прямо противоположная функция метода разделения.
Фильтр Функция, которая возвращает нулевой массив, который содержит подмножество строкового массива на основе определенных критериев фильтра.
IsArray Функция, которая возвращает логическое значение, указывающее, является ли входная переменная массивом.
стирать Функция, которая восстанавливает выделенную память для переменных массива.

VBScript - функции даты и времени

Функции даты и времени VBScript помогают разработчикам преобразовывать дату и время из одного формата в другой или выражать значение даты или времени в формате, соответствующем определенному условию.

Функции даты

функция Описание
Дата Функция, которая возвращает текущую системную дату
CDate Функция, которая преобразует данный вход в дату
DateAdd Функция, которая возвращает дату, к которой был добавлен указанный интервал времени
DateDiff Функция, которая возвращает разницу между двумя периодами времени
DatePart Функция, которая возвращает указанную часть заданного значения даты ввода
DateSerial Функция, которая возвращает действительную дату для данного года, месяца и даты
FormatDateTime Функция, которая форматирует дату на основе предоставленных параметров
IsDate Функция, которая возвращает логическое значение независимо от того, является ли предоставленный параметр датой
День Функция, которая возвращает целое число от 1 до 31, представляющее день указанной даты
Месяц Функция, которая возвращает целое число от 1 до 12, представляющее месяц указанной даты
Год Функция, которая возвращает целое число, представляющее год указанной даты
MonthName Функция, которая возвращает имя определенного месяца для указанной даты
WeekDay Функция, которая возвращает целое число (от 1 до 7), которое представляет день недели для указанного дня.
WeekDayName Функция, которая возвращает название дня недели для указанного дня.

Функции времени

функция Описание
Сейчас Функция, которая возвращает текущую системную дату и время
Час Функция, которая возвращает целое число в диапазоне от 0 до 23, представляющее часовую часть данного времени
минут Функция, которая возвращает целое число от 0 до 59, представляющее часть минут данного времени
второй Функция, которая возвращает целое число от 0 до 59, которое представляет часть секунд данного времени
Время Функция, которая возвращает текущее системное время
таймер Функция, которая возвращает количество секунд и миллисекунд с 12:00.
TimeSerial Функция, которая возвращает время для конкретного ввода часов, минут и секунд
TimeValue Функция, которая преобразует входную строку в формат времени

VBScript - Процедуры

Что такое функция?

Функция - это группа многократно используемого кода, который можно вызывать в любом месте вашей программы. Это устраняет необходимость писать один и тот же код снова и снова. Это позволит программистам разделить большую программу на ряд небольших и управляемых функций. Помимо встроенных функций, VBScript позволяет нам также писать пользовательские функции. Этот раздел объяснит вам, как писать свои собственные функции в VBScript.

Определение функции

Прежде чем использовать функцию, нам нужно определить эту конкретную функцию. Наиболее распространенный способ определения функции в VBScript - использование ключевого слова Function, за которым следует уникальное имя функции, которое может содержать или не содержать список параметров и оператор с ключевым словом End Function , который указывает конец функции. ,

Основной синтаксис показан ниже -

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Function Functionname(parameter-list)
            statement 1
            statement 2
            statement 3
            .......
            statement n
         End Function

      </script>
   </body>
</html>

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Function sayHello()
            msgbox("Hello there")
         End Function

      </script>
   </body>
</html>

Вызов функции

Чтобы вызвать функцию где-нибудь позже в скрипте, вам просто нужно написать имя этой функции с ключевым словом Call .

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Function sayHello()
            msgbox("Hello there")
         End Function

         Call sayHello()
        
      </script>
   </body>
</html>

Параметры функции

До сих пор мы видели функцию без параметра, но есть возможность передавать различные параметры при вызове функции. Эти переданные параметры могут быть захвачены внутри функции, и любые манипуляции с этими параметрами могут быть выполнены. Функции вызываются с помощью ключевого слова вызова .

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Function sayHello(name, age)
            msgbox( name & " is " & age & " years old.")
         End Function

         Call sayHello("Tutorials point", 7)

      </script>
   </body>
</html>

Возврат значения из функции

Функция VBScript может иметь необязательный оператор возврата. Это необходимо, если вы хотите вернуть значение из функции. Например, вы можете передать два числа в функцию, а затем ожидать от функции возврата их умножения в вызывающей программе.

ПРИМЕЧАНИЕ. - Функция может возвращать несколько значений, разделенных запятой, в виде массива, назначенного самому имени функции.

пример

Эта функция принимает два параметра, объединяет их и возвращает результат в вызывающей программе. В VBScript значения возвращаются из функции с использованием имени функции. В случае, если вы хотите вернуть два или более значений, тогда имя функции возвращается с массивом значений. В вызывающей программе результат сохраняется в переменной результата.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Function concatenate(first, last)
            Dim full
            full = first & last
            concatenate = full  'Returning the result to the function name itself
         End Function

      </script>
   </body>
</html>

Теперь мы можем вызвать эту функцию следующим образом:

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Function concatenate(first, last)
            Dim full
            full = first & last
            concatenate = full  'Returning the result to the function name itself
         End Function
         ' Here is the usage of returning value from  function. 
         dim result
            result = concatenate("Zara", "Ali")
        msgbox(result)
      </script>
   </body>
</html>

Подпроцедуры

Подпроцедуры похожи на функции, но есть несколько отличий.

  • Подпроцедуры DONOT Возвращают значение, в то время как функции могут возвращать или не возвращать значение.

  • Подпроцедуры могут быть вызваны без ключевого слова вызова.

  • Подпроцедуры всегда заключены в инструкции Sub и End Sub .

Подпроцедуры DONOT Возвращают значение, в то время как функции могут возвращать или не возвращать значение.

Подпроцедуры могут быть вызваны без ключевого слова вызова.

Подпроцедуры всегда заключены в инструкции Sub и End Sub .

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Sub sayHello()
            msgbox("Hello there")
         End Sub

      </script>
   </body>
</html>

Процедуры вызова

Чтобы вызвать процедуру где-то позже в скрипте, вам просто нужно написать имя этой процедуры с ключевым словом Call или без него.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Sub sayHello()
            msgbox("Hello there")
         End Sub
         sayHello()

      </script>
   </body>
</html>

Расширенные понятия для функций

Существует много узнать о функциях VBScript. Мы можем передать параметр по значению или по ссылке. Пожалуйста, нажмите на каждый из них, чтобы узнать больше.

  • ByVal - передать параметры по значению

  • ByRef - передать параметры по ссылке

ByVal - передать параметры по значению

ByRef - передать параметры по ссылке

VBScript - Диалоговые окна

Что такое диалоговое окно?

VBScript позволяет разработчикам эффективно взаимодействовать с пользователем. Это может быть окно сообщения для отображения сообщения пользователю или поле ввода, с помощью которого пользователь может вводить значения.

Функция VBScript MsgBox

Функция MsgBox отображает окно сообщения и ждет, когда пользователь нажмет кнопку, а затем действие будет выполнено на основе кнопки, нажатой пользователем.

Синтаксис

MsgBox(prompt[,buttons][,title][,helpfile,context])

Описание параметра

  • Подсказка - Обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то мы можем разделить строки, используя символ возврата каретки (Chr (13)) или символ перевода строки (Chr (10)) между каждой строкой.

  • кнопки - необязательный параметр. Числовое выражение, определяющее тип отображаемых кнопок, стиль используемых значков, идентификатор кнопки по умолчанию и модальность окна сообщения. Если оставить пустым, значение по умолчанию для кнопок будет 0.

  • Заголовок - необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.

  • helpfile - необязательный параметр. Строковое выражение, определяющее файл справки, который используется для предоставления контекстно-зависимой справки для диалогового окна.

  • context - необязательный параметр Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.

Подсказка - Обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то мы можем разделить строки, используя символ возврата каретки (Chr (13)) или символ перевода строки (Chr (10)) между каждой строкой.

кнопки - необязательный параметр. Числовое выражение, определяющее тип отображаемых кнопок, стиль используемых значков, идентификатор кнопки по умолчанию и модальность окна сообщения. Если оставить пустым, значение по умолчанию для кнопок будет 0.

Заголовок - необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.

helpfile - необязательный параметр. Строковое выражение, определяющее файл справки, который используется для предоставления контекстно-зависимой справки для диалогового окна.

context - необязательный параметр Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.

Параметр Buttons может принимать любое из следующих значений:

  • 0 vbOKOnly Отображает только кнопку ОК.

  • 1 vbOKCancel Отображает кнопки OK и Отмена.

  • 2 vbAbortRetryIgnore Отображает кнопки «Отмена», «Повторить» и «Игнорировать».

  • 3 vBYesNoCancel Отображает кнопки «Да», «Нет» и «Отмена».

  • 4 vBYesNo Отображает кнопки «Да» и «Нет».

  • 5 vbRetryCancel Отображает кнопки «Повторить» и «Отмена».

  • 16 vbCritical Отображает значок критического сообщения.

  • 32 vbQuestion Отображает значок запроса предупреждения.

  • 48 vbExclamation Отображает значок предупреждающего сообщения.

  • 64 vbInformation Отображает значок информационного сообщения.

  • 0 vbDefaultButton1 Первая кнопка по умолчанию.

  • 256 vbDefaultButton2 Вторая кнопка по умолчанию.

  • 512 vbDefaultButton3 Третья кнопка по умолчанию.

  • 768 vbDefaultButton4 Четвертая кнопка по умолчанию.

  • 0 vbApplicationModal Модальное приложение. Текущее приложение не будет работать, пока пользователь не ответит на окно сообщения.

  • 4096 vbSystemModal Система модальных. Все приложения не будут работать, пока пользователь не ответит на окно сообщения.

0 vbOKOnly Отображает только кнопку ОК.

1 vbOKCancel Отображает кнопки OK и Отмена.

2 vbAbortRetryIgnore Отображает кнопки «Отмена», «Повторить» и «Игнорировать».

3 vBYesNoCancel Отображает кнопки «Да», «Нет» и «Отмена».

4 vBYesNo Отображает кнопки «Да» и «Нет».

5 vbRetryCancel Отображает кнопки «Повторить» и «Отмена».

16 vbCritical Отображает значок критического сообщения.

32 vbQuestion Отображает значок запроса предупреждения.

48 vbExclamation Отображает значок предупреждающего сообщения.

64 vbInformation Отображает значок информационного сообщения.

0 vbDefaultButton1 Первая кнопка по умолчанию.

256 vbDefaultButton2 Вторая кнопка по умолчанию.

512 vbDefaultButton3 Третья кнопка по умолчанию.

768 vbDefaultButton4 Четвертая кнопка по умолчанию.

0 vbApplicationModal Модальное приложение. Текущее приложение не будет работать, пока пользователь не ответит на окно сообщения.

4096 vbSystemModal Система модальных. Все приложения не будут работать, пока пользователь не ответит на окно сообщения.

Вышеуказанные значения логически разделены на четыре группы: первая группа (от 0 до 5) указывает кнопки, отображаемые в окне сообщения. Вторая группа (16, 32, 48, 64) описывает тип отображаемой иконки, третья группа (0, 256, 512, 768) указывает, какая кнопка должна быть по умолчанию, и четвертая группа (0, 4096). ) определяет модальность окна сообщения.

Возвращаемые значения

Функция MsgBox может возвращать одно из следующих значений:

  • 1 - vbOK - нажата кнопка ОК

  • 2 - vbCancel - Отмена была нажата

  • 3 - vbAbort - нажата кнопка «Прервать»

  • 4 - vbRetry - повторная попытка была нажата

  • 5 - vbIgnore - щелкнули Ignore

  • 6 - vbYes - Да нажали

  • 7 - vbNo - нет кликали

1 - vbOK - нажата кнопка ОК

2 - vbCancel - Отмена была нажата

3 - vbAbort - нажата кнопка «Прервать»

4 - vbRetry - повторная попытка была нажата

5 - vbIgnore - щелкнули Ignore

6 - vbYes - Да нажали

7 - vbNo - нет кликали

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         'Message Box with just prompt message
         MsgBox("Welcome")    
           
         'Message Box with title, yes no and cancel Butttons 
         a = MsgBox("Do you like blue color?",3,"Choose options")
         ' Assume that you press No Button	
         document.write("The Value of a is " & a)
         
      </script>
   </body>
</html>

Когда приведенный выше сценарий выполняется, отображается окно сообщения, и если вы нажмете кнопку Нет, значение a будет равно 7.

The Value of a is 7

Функция VBScript InputBox

Функция InputBox помогает пользователю получить значения от пользователя. После ввода значений, если пользователь нажимает кнопку OK или нажимает клавишу ВВОД на клавиатуре, функция InputBox возвращает текст в текстовое поле. Если пользователь нажимает кнопку «Отмена», функция возвращает пустую строку («»).

Синтаксис

InputBox(prompt[,title][,default][,xpos][,ypos][,helpfile,context])

Описание параметра

  • Подсказка - Обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то мы можем разделить строки, используя символ возврата каретки (Chr (13)) или символ перевода строки (Chr (10)) между каждой строкой.

  • Заголовок - необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.

  • По умолчанию - необязательный параметр. Текст по умолчанию в текстовом поле, который пользователь хотел бы отобразить.

  • XPos - необязательный параметр. Позиция оси X, которая представляет быстрое расстояние от левой стороны экрана по горизонтали. Если оставить это поле пустым, поле ввода будет горизонтально отцентрировано.

  • YPos - необязательный параметр. Положение оси Y, которое представляет быстрое расстояние от левой стороны экрана по вертикали. Если оставить это поле пустым, поле ввода будет центрировано по вертикали.

  • helpfile - необязательный параметр. Строковое выражение, определяющее файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.

  • context - необязательный параметр Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.

Подсказка - Обязательный параметр. Строка, которая отображается в виде сообщения в диалоговом окне. Максимальная длина подсказки составляет около 1024 символов. Если сообщение распространяется более чем на строку, то мы можем разделить строки, используя символ возврата каретки (Chr (13)) или символ перевода строки (Chr (10)) между каждой строкой.

Заголовок - необязательный параметр. Строковое выражение, отображаемое в строке заголовка диалогового окна. Если заголовок оставлен пустым, имя приложения помещается в строку заголовка.

По умолчанию - необязательный параметр. Текст по умолчанию в текстовом поле, который пользователь хотел бы отобразить.

XPos - необязательный параметр. Позиция оси X, которая представляет быстрое расстояние от левой стороны экрана по горизонтали. Если оставить это поле пустым, поле ввода будет горизонтально отцентрировано.

YPos - необязательный параметр. Положение оси Y, которое представляет быстрое расстояние от левой стороны экрана по вертикали. Если оставить это поле пустым, поле ввода будет центрировано по вертикали.

helpfile - необязательный параметр. Строковое выражение, определяющее файл справки, который будет использоваться для предоставления контекстно-зависимой справки для диалогового окна.

context - необязательный параметр Числовое выражение, обозначающее номер контекста справки, назначенный автором справки для соответствующего раздела справки. Если предоставляется контекст, также должен быть предоставлен файл справки.

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         ' Input Box with only Prompt
         InputBox("Enter a number")    
        
         ' Input Box with a Title
         a = InputBox("Enter a Number","Enter Value")
         msgbox a
        
         ' Input Box with a Prompt,Title and Default value
         a = InputBox("Enter a Number","Enter Value",123)
         msgbox a
        
         ' Input Box with a Prompt,Title,Default and XPos
         a = InputBox("Enter your name","Enter Value",123,700)
         msgbox a
        
         ' Input Box with a Prompt,Title and Default and YPos
         a = InputBox("Enter your name","Enter Value",123,,500)
         msgbox a
         
      </script>
   </body>
</html>

Когда вышеуказанный сценарий выполняется, отображается поле ввода и отображается введенное значение пользователем.

Объектно-ориентированный VBScript

Что такое объект

Объекты среды выполнения VBScript помогают нам выполнять различные задачи. Этот раздел поможет вам понять, как создать экземпляр объекта и работать с ним.

Синтаксис

Чтобы беспрепятственно работать с объектами, нам нужно объявить объект и создать его экземпляр с помощью Set Keyword.

Dim objectname    'Declare the object name
Set objectname = CreateObject(object_type)

пример

В приведенном ниже примере мы создаем объект типа Scripting.Dictionary .

Dim obj  
Set obj = CreateObject("Scripting.Dictionary")

Уничтожение объектов

Значение уничтожения объекта состоит в том, чтобы освободить память и сбросить переменную объекта.

Синтаксис

Чтобы уничтожить объекты, нам нужно использовать Set Keyword, за которым следует имя объекта, и указать Nothing .

Set objectname = Nothing 'Destroy the object.

пример

В приведенном ниже примере мы создаем объект типа Scripting.Dictionary .

Dim obj  
Set obj = CreateObject("Scripting.Dictionary")
Set obj = Nothing.

Использование объекта

Пожалуйста, нажмите на каждый из указанных типов объектов, чтобы узнать больше.

Тип объекта Описание
Учебный класс Класс - это контейнер, который содержит методы и переменные, связанные с ним, и доступ к ним осуществляется путем создания объекта типа Class.
Scripting.FileSystemObject Это группа объектов, с которой мы можем работать с файловой системой.
Scripting.Dictionary Группа объектов, которые используются для создания объектов словаря.
отлаживать Глобальный объект, с помощью которого мы можем отправить вывод в отладчик скриптов Microsoft.

VBScript - Регулярные выражения

Регулярные выражения - это последовательность символов, образующая шаблон, который в основном используется для поиска и замены. Целью создания шаблона является сопоставление определенных строк, чтобы разработчик мог извлекать символы в зависимости от условий и заменять определенные символы.

RegExp Object

Объект RegExp помогает разработчикам соответствовать шаблону строк, а свойства и методы помогают нам легко работать с регулярными выражениями. Это похоже на RegExp в JavaScript

свойства

  • Pattern - Метод Pattern представляет собой строку, которая используется для определения регулярного выражения, и его следует установить перед использованием объекта регулярного выражения.

  • IgnoreCase - логическое свойство, представляющее, следует ли проверять регулярное выражение на предмет всех возможных совпадений в строке, если оно равно true или false. Если не указано явно, значение IgnoreCase устанавливается в False.

  • Global - логическое свойство, представляющее, следует ли проверять регулярное выражение на предмет всех возможных совпадений в строке. Если не указано явно, глобальное значение установлено в False.

Pattern - Метод Pattern представляет собой строку, которая используется для определения регулярного выражения, и его следует установить перед использованием объекта регулярного выражения.

IgnoreCase - логическое свойство, представляющее, следует ли проверять регулярное выражение на предмет всех возможных совпадений в строке, если оно равно true или false. Если не указано явно, значение IgnoreCase устанавливается в False.

Global - логическое свойство, представляющее, следует ли проверять регулярное выражение на предмет всех возможных совпадений в строке. Если не указано явно, глобальное значение установлено в False.

методы

  • Test (search-string) - метод Test принимает строку в качестве аргумента и возвращает True, если регулярное выражение может быть успешно сопоставлено со строкой, в противном случае возвращается False.

  • Replace (search-string, replace-string) - метод Replace принимает 2 параметра. Если поиск успешен, то он заменяет это совпадение строкой замены, и возвращается новая строка. Если совпадений нет, возвращается исходная строка поиска.

  • Execute (search-string) - метод Execute работает как Replace, за исключением того, что он возвращает объект коллекции Matches, содержащий объект Match для каждого успешного соответствия. Это не изменяет исходную строку.

Test (search-string) - метод Test принимает строку в качестве аргумента и возвращает True, если регулярное выражение может быть успешно сопоставлено со строкой, в противном случае возвращается False.

Replace (search-string, replace-string) - метод Replace принимает 2 параметра. Если поиск успешен, то он заменяет это совпадение строкой замены, и возвращается новая строка. Если совпадений нет, возвращается исходная строка поиска.

Execute (search-string) - метод Execute работает как Replace, за исключением того, что он возвращает объект коллекции Matches, содержащий объект Match для каждого успешного соответствия. Это не изменяет исходную строку.

Объект коллекции матчей

Объект коллекции Matches возвращается как результат метода Execute. Этот объект коллекции может содержать ноль или более объектов Match, и свойства этого объекта доступны только для чтения.

  • Count - Метод Count представляет количество совпадающих объектов в коллекции.

  • Item - метод Item позволяет получить доступ к объектам сопоставления из объекта коллекций совпадений.

Count - Метод Count представляет количество совпадающих объектов в коллекции.

Item - метод Item позволяет получить доступ к объектам сопоставления из объекта коллекций совпадений.

Матч Объект

Объект Match содержится в объекте коллекции match. Эти объекты представляют успешное совпадение после поиска строки.

  • FirstIndex - представляет позицию в исходной строке, где произошло совпадение. Этот индекс начинается с нуля, что означает, что первая позиция в строке равна 0.

  • Длина - значение, представляющее общую длину совпадающей строки.

  • Значение - значение, представляющее сопоставленное значение или текст. Это также значение по умолчанию при доступе к объекту Match.

FirstIndex - представляет позицию в исходной строке, где произошло совпадение. Этот индекс начинается с нуля, что означает, что первая позиция в строке равна 0.

Длина - значение, представляющее общую длину совпадающей строки.

Значение - значение, представляющее сопоставленное значение или текст. Это также значение по умолчанию при доступе к объекту Match.

Все о шаблоне параметров

Построение образца похоже на PERL. Создание шаблонов - самая важная вещь при работе с регулярными выражениями. В этом разделе мы поговорим о том, как создать шаблон на основе различных факторов.

Соответствие позиции

Важность сопоставления позиций заключается в том, чтобы мы размещали регулярные выражения в правильных местах.

Условное обозначение Описание
^ Соответствует только началу строки.
$ Совпадение только с концом строки.
б Соответствует любой границе слова
B Соответствует любой границе без слов

Соответствие литералам

Любая форма символов, таких как алфавит, цифра или специальный символ или даже десятичный, шестнадцатеричный, может рассматриваться как литерал. Поскольку некоторые символы уже имеют особое значение в контексте регулярных выражений, нам нужно избегать их, используя escape-последовательности.

Условное обозначение Описание
алфавитно-цифровой Совпадает только с алфавитными и числовыми символами.
п Соответствует новой строке.
[ Соответствует [только буквально
] Спички] только литералы
( Матчи (только буквальные)
) Совпадения) только литералы
т Соответствует горизонтальной вкладке
v Соответствует вертикальной вкладке
| Матчи | только буквальный
{ Матчи {только литералы
} Матчи} только литералы
\ Совпадения только буквальные
? Матчи ? только буквальный
* Совпадения * только литералы
+ Совпадения + только литералы
. Матчи . только буквальный
б Соответствует любой границе слова
B Соответствует любой границе без слов
е Соответствует каналу
р Соответствует возврат каретки
ххх Соответствует ASCII-символу восьмеричного числа xxx.
XDD Соответствует символу ASCII шестнадцатеричного числа dd.
ихххх Соответствует ASCII-символу литерала UNICODE xxxx.

Соответствие классов персонажей

Классы символов - это Шаблон, сформированный индивидуальной группировкой и заключенный в фигурные скобки []. Если мы ожидаем класс символов, которого не должно быть в списке, то мы должны игнорировать этот конкретный класс символов, используя отрицательный символ, который является заглавной буквой ^.

Условное обозначение Описание
[Хуг] Соответствует любому классу символов, заключенному в набор символов.
[^ Хуг] Соответствует любому из классов символов, которые НЕ включены в набор символов.
, Соответствует любому классу символов, кроме n
ш Соответствует любому классу символов слова. Эквивалентно [a-zA-Z_0-9]
W Соответствует любому классу не-словесных символов. Эквивалентно [^ a-zA-Z_0-9]
d Соответствует любому классу цифр. Эквивалентно [0-9].
D Соответствует любому нецифровому классу символов. Эквивалентно [^ 0-9].
s Соответствует любому классу символов пробела. Эквивалентно [ t r n v f]
S Соответствует любому классу символов пробела. Эквивалентен [^ t r n v f]

Повторение соответствия

Сопоставление повторений позволяет выполнять многократный поиск в регулярном выражении. Он также определяет количество повторений элемента в регулярном выражении.

Условное обозначение Описание
* Соответствует нулю или более вхождений данного регулярного выражения. Эквивалентно {0,}.
+ Соответствует одному или нескольким вхождениям данного регулярного выражения. Эквивалент {1,}.
? Соответствует нулю или одному вхождению данного регулярного выражения. Эквивалент {0,1}.
{Икс} Точно соответствует x количеству вхождений данного регулярного выражения.
{Икс,} Совпадение по крайней мере x или более вхождений данного регулярного выражения.
{Х, у} Соответствует x-y количеству вхождений данного регулярного выражения.

Чередование и группировка

Чередование и группировка помогают разработчикам создавать более сложные Регулярные выражения, в частности обрабатывать сложные предложения внутри Регулярного выражения, что обеспечивает большую гибкость и контроль.

Условное обозначение Описание
0 Группировка предложения для создания предложения. «(xy)? (z)» соответствует «xyz» или «z».
| Чередование объединяет одно предложение регулярного выражения, а затем сопоставляет любое из отдельных предложений. «(ij) | (23) | (pq)» соответствует «ij» или «23» или «pq».

Создание регулярных выражений

Ниже приведены несколько примеров, которые четко объясняют, как построить регулярное выражение.

Регулярное выражение Описание
"^ s * .." и ".. s * $" Представляет, что в одной строке может быть любое количество начальных и конечных пробелов.
"(( $ S) |? (# S)?)?" Представляет необязательный знак $ или #, за которым следует необязательный пробел.
"(( D + (. ( Д д )?)?))" Представляет, что присутствует хотя бы одна цифра, за которой следуют необязательные десятичные дроби и две цифры после десятичных.

пример

В приведенном ниже примере проверяется, вводил ли пользователь идентификатор электронной почты, формат которого должен совпадать, так что после идентификатора электронной почты следует «@», а затем имя домена.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         strid = "welcome.user@tutorialspoint.co.us"
         Set re = New RegExp
         With re
            .Pattern    = "^[w-.]{1,}@([da-zA-Z-]{1,}.){1,}[da-zA-Z-]{2,3}$"
            .IgnoreCase = False
            .Global     = False
         End With
        
         ' Test method returns TRUE if a match is found
         If re.Test( strid ) Then
            Document.write(strid & " is a valid e-mail address")
         Else
            Document.write(strid & " is NOT a valid e-mail address")
         End If
        
        Set re = Nothing
      </script>
   </body>
</html>

VBScript - Обработка ошибок

Существует три типа ошибок в программировании: (a) синтаксические ошибки, (b) ошибки времени выполнения и (c) логические ошибки.

Синтаксические ошибки

Синтаксические ошибки, также называемые ошибками синтаксического анализа, возникают во время интерпретации VBScript. Например, следующая строка вызывает синтаксическую ошибку, потому что отсутствует закрывающая скобка -

<script type = "text/vbscript">

   dim x,y
   x = "Tutorialspoint"
   y = Ucase(x

</script>

Ошибки во время выполнения

Ошибки времени выполнения, также называемые исключениями, возникают во время выполнения после интерпретации. Например, следующая строка вызывает ошибку во время выполнения, потому что здесь синтаксис правильный, но во время выполнения он пытается вызвать fnmultiply, который является несуществующей функцией -

<script type = "text/vbscript">
   Dim x,y
   x = 10
   y = 20
   z = fnadd(x,y)
   a = fnmultiply(x,y)
   
   Function fnadd(x,y)
      fnadd = x+y
   End Function

</script>

Логические ошибки

Логические ошибки могут быть наиболее сложным типом ошибок для отслеживания. Эти ошибки не являются результатом синтаксиса или ошибки времени выполнения. Вместо этого они возникают, когда вы совершаете ошибку в логике, управляющей вашим сценарием, и вы не получаете ожидаемого результата. Вы не можете поймать эти ошибки, потому что это зависит от требований вашего бизнеса, какую логику вы хотите использовать в своей программе. Например, деление числа на ноль или написанного скрипта, который входит в бесконечный цикл.

Err Object

AПустим, если у нас есть ошибка во время выполнения, то выполнение останавливается, отображая сообщение об ошибке. Как разработчик, если мы хотим зафиксировать ошибку, то используется Error Object.

пример

В приведенном ниже примере Err.Number дает номер ошибки, а Err.Description - описание ошибки.

<script type = "text/vbscript">
  
  Err.Raise 6     ' Raise an overflow error.
  MsgBox "Error # " & CStr(Err.Number) & " " & Err.Description
  Err.Clear       ' Clear the error.

</script>

VBScript Разные заявления

В VBScript есть несколько других важных утверждений, которые помогут разработчикам разработать эффективный скрипт. В следующей таблице приведен список таких важных утверждений. В этой главе мы подробно обсудим каждое из этих утверждений с примерами.

категория Имя функции / Название оператора
Опции Вариант Явный
ID скриптового движка ScriptEngine
варианты IsArray, IsEmpty, IsNull, IsNumeric, IsObject, TypeName
выражение Eval, Execute
Контрольное заявление С ... Конец
Математическая функция Перемешайте

Вариант Явный

Опция Explicit заставляет разработчика объявлять переменные с помощью оператора Dim, прежде чем они будут использованы в какой-то части кода.

Синтаксис

Option Explicit

пример

Если мы используем Option Explicit и если мы не объявляем переменные, то интерпретатор выдаст ошибку.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Option Explicit
         Dim x,y,z,a
         x = 10
         y = 20
         z = fnadd(x,y)
         a = fnmultiply(x,y)

         Function fnadd(x,y)
            fnadd = x+y
         End Function

      </script>
   </body>
</html>

ScriptEngine

ScriptEngine представляет подробную информацию об используемом языке сценариев. Он также используется в сочетании с ScriptEngineMajorVersion, ScriptEngineMinor Version, ScriptEngineBuildVersion, который дает основную версию механизма vbscript, вспомогательную версию механизма vbscript и версию сборки vbscript соответственно.

Синтаксис

ScriptEngine 

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim scriptdetails
         scriptdetails =  " Version " & ScriptEngine & " - "
         'For getting Major version, use ScriptEngineMajorVersion'
        
         scriptdetails = scriptdetails &  ScriptEngineMajorVersion & "."
        
         'For getting Minor version, use ScriptEngineMinorVersion'
         scriptdetails = scriptdetails & ScriptEngineMinorVersion & "."
        
         'For getting Build version, use ScriptEngineBuildVersion'
         scriptdetails = scriptdetails & ScriptEngineBuildVersion 
        
         Document.write scriptdetails

      </script>
   </body>
</html>

Сохраните файл с расширением .html после выполнения скрипта в IE, на экране отобразится следующий результат.

Version VBScript - 5.8.16996 

Пустой

Функция IsEmpty используется для проверки, является ли выражение пустым. Возвращает логическое значение. IsEmpty возвращает True, если переменная неинициализирована или явно установлена ​​в значение Empty. В противном случае выражение возвращает False.

Синтаксис

IsEmpty(expression) 

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, MyCheck
         MyCheck = IsEmpty(var)  
         Document.write "Line 1 : " & MyCheck & "<br />"
        
         var = Null   ' Assign Null.
         MyCheck = IsEmpty(var) 
         Document.write "Line 2 : " & MyCheck & "<br />"
         
         var = Empty   ' Assign Empty.
         MyCheck = IsEmpty(var)
         Document.write "Line 3 : " & MyCheck & "<br />"
        
      </script>
   </body>
</html>

Сохраните файл с расширением .html после выполнения скрипта в IE, на экране отобразится следующий результат.

Line 1 : True
Line 2 : False
Line 3 : True

Нулевой

Функция IsNull используется для проверки наличия в выражении правильных данных. Возвращает логическое значение. IsNull возвращает True, если переменная равна Null, в противном случае выражение возвращает False.

Синтаксис

IsNull(expression) 

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, res
         res = IsNull(var)
         document.write "Line 1 : " & res & "<br />"
         
         var = Null
         res = IsNull(var)
         document.write "Line 2 : " & res & "<br />"
         
         var = Empty
         res = IsNull(var)
         document.write "Line 3 : " & res & "<br />"

      </script>
   </body>
</html>

Сохраните файл с расширением .html после выполнения скрипта в IE, на экране отобразится следующий результат.

Line 1 : False
Line 2 : True
Line 3 : False

IsObject

Функция IsObject используется для проверки, имеет ли выражение допустимый объект. Возвращает логическое значение. IsObject возвращает True, если выражение содержит подтип объекта, в противном случае выражение возвращает False.

Синтаксис

IsObject(expression)

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
        Dim fso,b
        b = 10
        set fso = createobject("Scripting.Filesystemobject")
        
        x = isobject(fso)
        Document.write "Line 1 : " &  x  & "<br />" 
        
        y = isobject(b)
        Document.write "Line 2 : " &  y  & "<br />" 

      </script>
   </body>
</html>

Сохраните файл с расширением .html после выполнения скрипта в IE, на экране отобразится следующий результат.

Line 1 : True
Line 2 : False

IsNumeric

Функция IsNumeric используется для проверки того, имеет ли выражение подтип числа. Возвращает логическое значение. IsObject возвращает True, если выражение содержит подтип числа, в противном случае выражение возвращает False.

Синтаксис

IsNumeric(expression)

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim var, chk
         var = 20
         chk = IsNumeric(var)
         Document.write "Line 1 : " &  chk  & "<br />" 
        
         var = "3.1415935745"   
         chk = IsNumeric(var)   
         Document.write "Line 2 : " &  chk  & "<br / >" 
        
         var = "20 Chapter 23.123 VBScript"   
         chk = IsNumeric(var)
         Document.write "Line 3 : " &  chk  & "<br / >" 

      </script>
   </body>
</html>

Сохраните файл с расширением .html после выполнения скрипта в IE, на экране отобразится следующий результат.

Line 1 : True
Line 2 : True
Line 3 : False

TypeName

Функция TypeName используется для возврата информации о подтипе варианта переменной.

Синтаксис

TypeName(varname)

Функция Typename может возвращать любое из следующих значений.

  • Byte - значение байта

  • Integer - целочисленное значение

  • Long - Long Integer Value

  • Single - Значение с плавающей точкой одинарной точности

  • Double - значение с плавающей точкой двойной точности

  • Валюта - стоимость валюты

  • Десятичное - десятичное значение

  • Дата - Дата или Время Значение

  • String - Строка символов Значение

  • Булево - булево значение

  • Пусто - неинициализированное значение

  • Null - нет действительных данных

  • Object - имя типа объекта

  • Ничего - переменная объекта, которая еще не ссылается на экземпляр объекта

  • ошибка

Byte - значение байта

Integer - целочисленное значение

Long - Long Integer Value

Single - Значение с плавающей точкой одинарной точности

Double - значение с плавающей точкой двойной точности

Валюта - стоимость валюты

Десятичное - десятичное значение

Дата - Дата или Время Значение

String - Строка символов Значение

Булево - булево значение

Пусто - неинициализированное значение

Null - нет действительных данных

Object - имя типа объекта

Ничего - переменная объекта, которая еще не ссылается на экземпляр объекта

ошибка

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim ArrVar(2), vartype
         NullVar = Null   ' Assign Null value.

         vartype = TypeName(3.1450)     
         Document.write "Line 1 : " &  vartype  & "<br />" 
         
         vartype = TypeName(432)         
         Document.write "Line 2 : " &  vartype  & "<br />" 
         
         vartype = TypeName("Microsoft")
         Document.write "Line 3 : " &  vartype  & "<br />" 
         
         vartype = TypeName(NullVar)   
         Document.write "Line 4 : " &  vartype  & "< br />" 
         
         vartype = TypeName(ArrVar)    
         Document.write "Line 5 : " &  vartype  & "<br />"

      </script>
   </body>
</html>

Сохраните файл с расширением .html после выполнения скрипта в IE, на экране отобразится следующий результат.

Line 1 : Double
Line 2 : Integer
Line 3 : String
Line 4 : Null
Line 5 : Variant()

Eval

Функция Eval выполняет выражение и возвращает результат в виде строки или числа.

Синтаксис

Eval(expression)

Аргумент Expression может быть строковым выражением или числом. Если вы передаете в функцию Eval строку, которая не содержит числовое выражение или имя функции, а содержит только простую текстовую строку, возникает ошибка во время выполнения. Например, Eval («VBScript») приводит к ошибке.

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Document.write Eval("10 + 10") & "<br />"
         Document.write Eval("101 = 200") & "<br />" 
         Document.write Eval("5 * 3") & "<br />" 

      </script>
   </body>
</html>

Сохраните файл с расширением .html после выполнения скрипта в IE, на экране отобразится следующий результат.

20
false
15

казнить

Оператор Execute принимает аргумент, который является строковым выражением, содержащим один или несколько операторов для выполнения.

Синтаксис

Execute(expression)

В VBScript a = b можно интерпретировать двумя способами. Его можно рассматривать как оператор присваивания, в котором значение x присваивается y. Это также может быть интерпретировано как выражение, которое проверяет, имеют ли a и b одинаковые значения. Если они это сделают, результат - Истина; если это не так, результатом является Ложь. Оператор Execute всегда использует первую интерпретацию, а оператор Eval всегда использует вторую.

пример

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim x
         x = "Global" 
         y = "VBScript"
         Execute("x = y")
         
         msgbox x
         msgbox y
        
      </script>
   </body>
</html>

Сохраните файл с расширением .html после выполнения скрипта в IE, на экране отобразится следующий результат.

VBScript
VBScript

С ... Конец с

Оператор With позволяет нам выполнять серию операций с указанным объектом без явного повторного упоминания имени объекта.

Синтаксис

With (objectname)
   statement 1
   statement 2
   statement 3
   ...
   ...
   statement n
End With

пример

После выполнения следующего скрипта Winword открывается и вводится указанный текст.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Msg =  "Vbscript" & vbCrLf & "Programming"
         Set objWord = CreateObject("Word.Application")
         objWord.Visible = True
       
         ' Objects methods are accessed without requaliyfying the objects again.'
         With objWord
            .Documents.Add
            .Selection.TypeText Msg
            .Selection.WholeStory
         End With
         
      </script>
   </body>
</html>

Перемешайте

Оператор Randomize инициализирует генератор случайных чисел, который помогает разработчикам генерировать случайные числа.

Синтаксис

Randomize [number]

пример

После выполнения следующего скрипта Winword открывается и вводится указанный текст.

<!DOCTYPE html>
<html>
   <body>
      <script language = "vbscript" type = "text/vbscript">
         Dim MyValue
         Randomize   
         MyValue = Int((100 * Rnd) + 1)   ' Generate random value between 1 and 100.
         MsgBox MyValue
        
      </script>
   </body>
</html>

Сохраните вышеприведенный скрипт как HTML, и после выполнения скрипта в IE будет показан следующий вывод.

Опубликовано: 24.02.2010
Автор: Виталий Бочкарев
Поддержать автора статьи по этой ссылке

…продолжение

  • Visual Basic Script
    • Зачем нужны VBS-скрипты
    • Основные положения
    • Переменные
    • Ветвления по условию
    • Циклы
    • Встроенные функции
    • Пользовательские функции
    • Обработка ошибок выполнения сценария
    • Объекты, их методы и свойства
    • Методы и свойства корневого класса WScript
    • Методы и свойства класса Shell
    • Методы и свойства класса Network
    • Методы и свойства класса FileSystemObject
    • Сценарий «Удаление старых файлов»

VBS-скрипт — это мощное решение для автоматизации действий пользователя в системах семейства Windows. Такой тип сценариев обычно используется для:

  • создания сложных сценариев;
  • использования объектов из других приложений и библиотек;
  • скрытия окон в ходе выполнения сценария;
  • шифрования логики сценария.

В основном VBS-сценарии применяются для обработки данных, управления системой, работы с учетными записями пользователей и компьютеров, взаимодействия с офисными приложениями, работы с базами данными и прочих сложных задач.

В зависимости от языка сценария, содержания и шифрования встречаются такие типы скриптов:

  • vbs — Visual Basic Script
  • vbe — зашифрованный Visual Basic Script
  • js — Java Script
  • jse — зашифрованный Java Script
  • wsh — настройки скрипта
  • wsf — XML-интегрированный сценарий

В этой статье я буду рассматривать сценарии типа vbs.

Сценарии обычно редактируются в блокноте Windows, но я рекомедую использовать Notepad2, который подсвечивает ключевые слова языка Visual Basic и помогает форматировать тело сценария. Итак, vbs-сценарий — это обычный текстовый файл с именем *.VBS, который легко править в блокноте, а запускать на исполнение — двойным щелчком мыши или вызовом по имени в консоли.

Как уже было описано выше, сценарии не компилируются, а интерпретируются. То есть для обработки скрипта в системе должен присутствовать интерпретатор языка VBS, и таких интерпретатора в Windows есть даже две штуки: оконный WScript и консольный CScript — оба интерпритатора — это Windows Script Host (WSH).

По умолчанию все скрипты выполняются через WScript, то есть никаких настроек не требуется, но чтобы выполнить скрипт в окне консоли, необходимо запустить его через CScript, либо установить CScript как интерпретатор, используемый по умолчанию. Для этого в командной строке нужно выполнить следующее:

CScript //H:CScript

После чего все сценарии будут выполняться в режиме консоли. Возврат в оконный режим осуществляется следующей командой:

CScript //H:WScript

В Visual Basic работают следующие правила:

  • длина строки не ограничена;
  • регистр символов не учитывается;
  • количество пробелов между параметрами не учитывается;
  • строку команды можно разрывать, а на месте разрыва нужно вставлять символ » _ «;
  • максимальная длина имени переменной 255 символов;
  • комментарии обозначаются сиволом » ‘ «.

Рекомендуемая структура сценария:

' === Script Information Header ===
' Script Name:                    ' название сценария;
' Date:                           ' дата изменения;
' Author:                         ' автор;
' Description:                    ' описание;
' === Initialization Block ===
Option Explicit                   ' директива, запрещающая автоматическое создание
                                  ' переменных;
Dim <Variable>                    ' объявление переменных;
Dim <Array>()                     ' объявление массивов;
Set <Object>                      ' подключение объектов;
' === Script Main Logic ===
                                  ' тело сценария;
' === Functions and Procedures ===
                                  ' процедуры и функции;

Примечание. Здесь и далее в треугольных скобках указываются обязательные команды и параметры, значения которых изменяются в зависимости от контекста сценария. В квадратных скобках указываюся необязательные параметры.

По умолчанию переменные в сценариях объявляются автоматически при первом использовании в теле скрипта, если это не запрещено директивойOption Explicit. Если же в начале сценария объявить директиву Option Explicit, то все переменные нужно определять заранее с помощью следующих конструкций:

Dim <ValueName1>      ' переменная, доступная всем подпрограммам;
Public <ValueName2>   ' переменная, доступная всем подпрограммам;
Private <ValueName3>  ' переменная, доступная только текущей программе и ее подпрограммам;

Константы объявляются в начале сценария с помощью конструкции:

Const <ConstName1> = <Value1>         ' константа, доступная всем подпрограммам;
Public Const <ConstName2> = <Value2>  ' константа, доступная всем подпрограммам;
Private Const <ConstName3> = <Value3> ' константа, доступная только текущей программе
                                      ' и ее подпрограммам.

Тип переменной присваивается автоматически после внесения в нее первого значения. В Visual Basic существуют следующие типы данных:

  • empty — неинициализированная переменная;
  • null — пустая переменная;
  • boolean — логический тип, возможные значения: False, True или 0, 1;
  • byte — 8-битное целое число без знака, возможные значения: 0 .. 255;
  • integer — 32-битное целое число, возможные значения: -32768 .. 32767;
  • long — 64-битное целое число, возможные значения: -2147483648 .. 2147483647;
  • currency — денежный тип, возможные значения: -922337203685477,5808 до 922337203685477,5807;
  • single — число с плавающей точкой, возможные значения: -3.402823e38 .. -1.401298e-45 для отрицательных чисел и 1.401298e-45 .. 3.402823e38 для положительных чисел;
  • double — число с плавающей точкой, возможные значения: 1.79769313486232e308 .. -4.94065645841247e-324 для отрицательных чисел и 4.94065645841247e-324 .. 1.79769313486232e308 для положительных чисел;
  • date — дата, возможные значения: 01.01.1900 и 31.01.9999;
  • string — строковая переменная, вместимость до 2 миллиардов символов;
  • object — указатель на объект;
  • error — код ошибки.

Данные можно проверять на соответствие типам, а так же переводить из одного типа в другой, если значения позволяют это сделать. Для операций над типами данных используются следующие команды:

VarType(<Value>)    ' возврат номера типа переменной;
TypeName(<Value>)   ' возврат имени типа переменной;
IsArray(<Value>)    ' проверка, что переменная - это массив;
IsDate(<Value>)     ' проверка, что переменная - это дата;
IsEmpty(<Value>)    ' проверка, что переменная неинициализирована;
IsNull(<Value>)     ' проверка, что переменная пустая;
IsNumeric(<Value>)  ' проверка, что переменная - это число;
IsObject(<Value>)   ' проверка, что переменная - это объект;
CCur(<Value>)       ' конвертация в тип currency;
CBool(<Value>)      ' конвертация переменной в тип boolean;
CByte(<Value>)      ' конвертация переменной в тип byte;
CDate(<Value>)      ' конвертация переменной в тип date;
CDbl(<Value>)       ' конвертация переменной в тип double;
CInt(<Value>)       ' конвертация переменной в тип integer;
CLng(<Value>)       ' конвертация переменной в тип long;
CSng(<Value>)       ' конвертация переменной в тип single;
CStr(<Value>)       ' конвертация переменной в тип string.

Как было сказано выше, Visual Basic не накладывает строгих ограничений на имена переменных, но в то же время существуют рекомендации для названий переменных, чтобы в тексте сценария легко определять тип данных. Для этого перед именем переменной рекомендуется ставить условные символы, которые определяют тип переменной:

  • iValueName — числовые типы
  • sValueName — строковый тип
  • bValueName — логический тип
  • dValueName — дата
  • oValueName — объект
  • cValueName — константа
  • aArrayName — массив

В VBS-сценариях возможно использование массивов переменных, которые позволяют хранить списки, таблицы и даже более сложные конструкции. Одномерные массивы (списки) могут быть динамическими, то есть они позволяют изменять свою размерность в ходе работы сценария. Все массивы объявляются командой Dim:

Dim <ArrayName[(Dimention)]>

Пример использования массивов

Dim aMyArray1(10,10)            ' создание статического массива размерностью 11х11;
Dim aMyArray2()                 ' создание динамического массива;
aMyArray1(0,0) = "Hello"        ' заполнение массива;
aMyArray1(0,1) = "People"       ' заполнение массива;
aMyArray1(1,0) = "World"        ' заполнение массива.

Прежде, чем пользоваться динамическим массивом, ему нужно указать текущую размерность с помощью команды ReDim, после чего массив можно переформировать в любом месте сценария, при этом либо очистить весь массив, либо сохранить старые значения ячеек командой Preserve:

ReDim aMyArray2(0)            ' формирование массива из одного элемента;
aMyArray2(0) = "Hello"        ' заполнение массива;
ReDim aMyArray2(1)            ' удаление старого массива и формирование нового из
                              ' друх элементов;
aMyArray2(0) = "Hello"        ' заполнение массива;
aMyArray2(1) = "World"        ' заполнение массива;
ReDim Preserve aMyArray2(2)   ' формирование массива из трех элементов, оставляя
                              ' старые значения элементов в тех ячейках, где они были;
aMyArray2(1) = "!"            ' заполнение массива;
Erase aMyArray2               ' удаляление массива.

Чтобы узнать размерность массива, обычно пользуются функцией UBound, которая будет рассмотрена ниже вместе с остальными функциями работы с данными.

Ни один полноценный сценарий не обходится без ветвлений, ветвления помогают выбрать верный путь при выполнении или невыполнении какого-то заложенного условия. Иными словами, ветвления реализуют логику сценария. В VBS-сценариях реализованы несколько механизмов ветвлений. Рассмотрим их по порядку.

Конструкция для одного действия, выполняемого по условию:

If <Condition> Then <Action>

Конструкция для нескольких действий, выполняемых по условию:

If <Condition> Then
   <Action>
   <Action>
End if

Конструкция «развилка»:

If <Condition> Then
   <Action>
   <Action>
Else
   <Action>
   <Action>
End if

Конструкция «развилка на несколько путей» (вариант сIf):

If <Condition> Then
   <Action>
   <Action>
ElseIf <Condition> Then
   <Action>
   <Action>
Else
   <Action>
   <Action>
End if

Во всех приведенных выше конструкциях применяется следующее правило: «Если выполняется условие <Condition>, то произвести список действий <Action>, которые расположеные под текущем блоком условия. Если текущее условие не выполняется, то перейти к списку действий <Action> под командой Else.»

Конструкция «развилка на несколько путей» (вариант сSelect):

Select Case <Variable>
   Case <Significance>
       <Action>
       <Action>
   Case <Significance>
       <Action>
       <Action>
   Case Else
       <Action>
       <Action>
End Select

В данной конструкции работает правило: «Если значение переменной <Variable> равно значению <Significance>, то произвети список действий <Action> под этим значением, иначе перейти к проверке следующего значения <Significance>.»

Для организации повторяющихся действий или перебора элементов массива обычно используются циклы. В VBS-сценариях организованы несколько видов циклов: обычный цикл, цикл с неизвестным количеством итераций, цикл по условию.

Обычный цикл организуется структурой For — Next, в аргументах которой задаются такие параметры как имя счетчика (<Counter>), начальное значение счетчика (<Start>), конечное значение счетчика (<Finish>) и, при необходимости, шаг счетчика (Step <StepSize>).

For <Counter> = <Start> To <Finish> [Step <StepSize>]
   <Actions>
Next

Если в процессе работы цикла потребуется прекратить перебор значений, то это можно сделать с помощью команды Exit For.

For <Counter> = <Start> To <Finish>
   <Actions>
   If <Condition> Then Exit For
   <Actions>
Next

Цикл с неизвестным количеством итераций обычно применяется для перебора всех значений в коллекции объекта, когда не известна его размерность. Эта структура переберет все значения (<Variable>) массива, переданного как парамер цикла (<Array>).

For Each <Variable> In <Array>
   <Actions>
Next

Пример.

For Each oCurrentFile In oFiles
   WScript.Echo oCurrentFile.Name
Next

Циклы с условиями применяются для обработки данных, при выполнении какого-то условия. Такие циклы бывают двух видов: с проверкой в начале цикла и с проверкой в конце.

Цикл, пока выполняется условие, с проверкой в начале

Do While <Condition>
   <Action>
Loop

Цикл, пока не выполнится условие, с проверкой в начале

Do Until <Condition>
   <Action>
Loop

Как уже было сказано выше, условия можно ставить в конец цикла. В этом случае тело цикла будет выполнено как минимум один раз. Так же как и в обычных циклах, цикл с условием можно прервать командой Exit Do:

Do
   <Action>
   If <Condition> Then Exit Do
   <Action>
Loop Until <Condition>

Чтобы работать с данными и строить свои процедуры и функции, разработчки Visual Basic уже позаботились об основе сценариев — базовых функциях. VBS-скрипты функции для работы с датами, строками и числами, а так же базовые процедуры ввода-вывода и процедуры работы с сетью. Давайте вкратце рассмотрим встроенные функции.

Функции обработки дат:

Date                                                  ' возврат текущей даты;
Time                                                  ' возврат текущего времени;
Now                                                   ' возврат текущих даты и времени;
DateDiff(<Interval>, <Date1>, <Date2>)                ' возврат разницы между датами;
MonthName(<MonthNumber>)                              ' возврат названия месяца;
WeekDayName(<Day>, <Abbreviation>, <FirstDayOfWeek>)  ' возврат названия дня недели;
Day(<Date>)                                           ' возврат дня из указанной даты;
Month(<Date>)                                         ' возврат месяца из указанной даты;
Year(<Date>)                                          ' возврат года из указанной даты;
Hour(<Date>)                                          ' возврат часа из указанной даты;
Minute(<Date>)                                        ' возврат минуты из указанной даты;
Second(<Date>)                                        ' возврат секунды из указанной даты.

Функции обработки строк:

Asc(<Char>)                                   ' возврат ANSI-кода символа;
Chr(<Number>)                                 ' возврат символа по ANSI-коду;
InStr(<Line>, <Find>)                         ' возврат позиции подстроки в указанной
                                              ' строке;
InStrRev(<Line>, <Find>)                      ' возврат позиции подстроки в указанной
                                              ' строке, начиная с конца строки;
Join(<Array>, <Delimiter>)                    ' преобразование массива в строку;
Len(<Line>)                                   ' возврат длины строки;
LCase(<Line>)                                 ' преобразование строки в строку из малых
                                              ' символов;
UCase(<Line>)                                 ' преобразование строки в строку из больших
                                              ' символов;
Left(<Line>, <Number>)                        ' возврат указанного количества символов с
                                              ' начала строки;
Right(<Line>, <Number>)                       ' возврат указанного количества символов с
                                              ' конца строки;
Mid(<Line>, <StartNumber>, <Number>)          ' возврат указанного количества символов с
                                              ' указанного номера символа строки;
Replace(<Line>, <Find>, <Replace>[, Params])  ' замена подстроки в указанной строке;
Space(<Number>)                               ' строки из указанного количества пробелов;
Split(<Line>, <Delimiter>[, Params])          ' преобразование строки в массив;
String(<Number>, <Char>)                      ' строка из указанного количества
                                              ' определенных символов;
SrtReverse(<Line>)                            ' зеркальное отображение строки;
Trim(<Line>)                                  ' обрезка пробелов слева и справа от строки;
LTrim(<Line>)                                 ' обрезка пробелов слева от строки;
RTrim(<Line>)                                 ' обрезка пробелов справа от строки.

Математические функции:

Randomize         ' инициализация механизма случайных чисел (ничего не возвращает);
Rnd               ' возврат случайного нецелочисленного значения от 0 до 1;
Atn(<Number>)     ' вычисление арктангенса числа;
Cos(<Number>)     ' вычисление косинуса числа;
Sin(<Number>)     ' вычисление синуса числа;
Exp(<Number>)     ' вычисление натурального логарифма числа;
Log(<Number>)     ' вычисление десятичного логарифма числа;
Sqr(<Number>)     ' вычисление квадратного корня числа;
Abs(<Number>)     ' вычисление абсолютного значения числа;
Hex(<Number>)     ' вычисление шеснадцатеричного значения числа;
Int(<Number>)     ' округление числа;
Fix(<Number>)     ' вычисление целой части числа.

И, естественно, помимо упомянутых функций, сценарии поддерживают все простейшие математические и логические операции:

  • = — оператор присваивания;
  • + — сумма двух чисел;
  • — — вычитание двух чисел;
  • * — умножение двух чисел;
  • / — деление двух чисел;
  • — целочисленное деление двух чисел;
  • Mod — остаток от деления двух чисел;
  • ^ — возведение в степень;
  • & — соединение двух строк;
  • Is — сравнение двух объектов;
  • Eqv — сравнение двух выражений;
  • Not — логическая операция отрицания;
  • And — логическая операция конъюнкции;
  • Or — логическая операция дизъюнкции;
  • Xor — логическая операция исключения;
  • Imp — логическая операция импликации.

Очередность выполнения операций определяется как и во всех языках программирования: сначала выполняются операции в скобках, потом вычисляются функции, потом операции умножения и деления, следом идут сложение и вычитание, и завершают вычисление логические операции.

Сценарии, написанные на Visual Basic, позволяют определять пользовательские процедуры и функции и вызывать их из основной программы. Между процедурой и функцией практически нет никакого различия, разница заключется в логическом смысле этих подпрограмм: функции обычно используются для вычисления какого-то значения, а процедуры — для выполнения действий. Тем не менее и процедуры, и функции могут выполнять операции и передавать значения основной программе. Несмотря на это, все же не стоит забывать о предназначении этих подпрограмм: функции — для вычисления, процедуры — для действий.

Функция объявляется оператором Function, после которого следует название пользовательской функции, которое не должно совпадать ни с одним зарезервированным словом языка Visual Basic, далее указываются переменные, которые будут передаваться подпрограмме в качестве параметров — указание переменных в этой конструкции означает выделение ячеек памяти для переменных подпрограммы (объявление переменных для функции). В теле подпрограммы структура сценария ничем не отличается от обычной программы (здесь можно объявлять дополнительные переменные, поизводить операции, использовать другие функции и процедуры), в конце тела должен присутствовать оператор присвоения функции какому-то значению — это значение и будет возвращено основной программе. Прервать выполнение функции можно оператором Exit Function, но в этом случае нужно не забыть присвоить функции какое-то значение, иначе сценарий выдаст ошибку. Завершается функция оператором End Function.

Определение функции

Function <FunctionName>([Arguments])
   <Actions>
   If <Condition> Then
       <Actions>
       <FunctionName> = <Value>
       Exit Function
   End If
   <Actions>
   <FunctionName> = <Value>
End Function

Вызов функции

<Variable> = <FunctionName>([Arguments])

Процедура определяется аналогично функции, но другим оператором -Sub. Так как процедура не возвращает основной программе никаких значений, то оператора присвоения перед выходом из процедуры нет. Прервать выполнение процедуры можно с помощью команды Exit Sub, а завершается вся конструкция оператором End Sub. Чтобы в основной программе вызвать процедуру, необходимо использовать ключевое слово Call и имя функции с необходимыми аргументами. (Ключевое словоCallне является обязательным, но я рекомендую его использовать чтобы избежать неправильных вызовов процедуры.)

Определение процедуры

Sub <SubName>([arguments])
   <Actions>
   If <Condition> Then
       <Actions>
       Exit Sub
   End If
   <Actions>
End Sub

Вызов процедуры

[Call] <SubName>([arguments])

Кстати, процедуры и функции должны располагаются в конце сценария.

Во время работы подпрограммы значения переменных основной части скрипта не изменяются, даже если в подпрограмме есть одноименные переменные. Чтобы подпрограмма имела возможность менять значения переменных основного сценария, необходимо в аргументах подпрограммы задать свойство переменных как ByRef. По умолчанию все переменные определяются со свойством ByVal.

Sub <SubName>(ByRef <Argument1>[, arguments])
	   <Actions>
	   <Argument1> = <expression>
	   <Actions>
	End Sub

В данном случае аргумент <Argument1> передается по ссылке на ячейку памяти — меняется значение переменной в основном сценарии. Иными словами, с помощью параметра ByRef процедура превращается в функцию — подпрограмма возвращает результат вычислений в основную программу.

По умолчанию все ошибки обрабатываются сценарием в автоматическом режиме, и, при возникновении ошибки, работа сценария останавливается. Для отключения автоматической обработки ошибок нужно использовать специальную директиву On Error Resume Next, которая отключает автоматическую обработку ошибок и продолжает работы сценария даже при их наличии. Для ручной обработки ошибок необходимо обратится к встроенному объектуErr, который хранит в себе статус ошибок. Объект Err имеет следующие свойства и методы:

Number          ' возврат номера последней ошибки;
Description     ' возврат описания последней ошибки;
Clear           ' очистка объекта Err;
Raise           ' вызов тестовой ошибки.

Пример ручной обработки ошибки:

On Error Resume Next
iTotalPoints = InputBox("Введите общее количество очков")
iNumberOfTests = InputBox("Введите количество тестов")
iAvarage = iTotalPoints / iNumberOfTests
Select Case Err.Number
   Case 0                            ' нет ошибок;
       WScript.Echo "Средний балл = " & CStr(iAvarage)
   Case 11                           ' деление на ноль;
       WScript.Echo "Количество тестов не может равняться нулю"
   Case 13                           ' несоотвествие типов;
       WScript.Echo "Вы ввели нечисловое значение"
   Case Else                         ' нет ошибок;
       WScript.Echo "Неизвестная ошибка
       WScript.Quit"
End Select

VBS-сценарии, как и их родитель — язык Visual Basic, является объектно-ориентированным языком программирования, то есть основной концепцией является понятие объектов и классов

Класс — это тип, описывающий устройство объектов. Объект подразумевает под собой нечто, что обладает определённым поведением и способом представления, объект — это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Итак, чтобы работать с объектом, его нужно сначала создать, используя классы из нужной библиотеки:

Set <ObjectName> = CreateObject(<Library>.<Class>)

Удалить объект можно, присвоив ему значение Nothing:

Set <ObjectName> = Nothing

Все объекты, с которыми работает Windows Script Host, имеют методы и свойства. Чтобы обратиться к методу, необходимо указать объект, а через точку — метод с необходимыми параметрами.

<Object>.<Method> <Param1>[, Param2, ..., ParamN]
Call <Object>.<Method>(<Param1>[, Param2, ..., ParamN])

Аналогичная ситуация со свойствами, но свойства можно как назначать, так и считывать в переменные и другие свойства, правда, следует учитывать тип данных переменных и свойств, иначе сценарий выдаст ошибку несовместимости типов данных.

<Object>.<Property> = <Value>
<Object1>.<Property1> = <Object2>.<Property2>
<MyVariable> = <Object>.<Property>

Пример. Создание объекта файловой системы, обращение к методу создания папки, удаление объекта.

Set oFSO = CreateObject("Scripting.FileSystemObject")
Call oFSO.CreateFolder("C:Test")
Set oFSO = Nothing

Обратите внимание, что понятие «объект» относится к логике сценария, а не к логике файловой системы. То есть, когда мы говорим «удаление объекта», мы имеем ввиду логический объект сценария, который никак не влияет на удаление каких-то частей файловой системы.

Чтобы узнать, какие существуют библиотеки в Вашей операционной системе, включенные в библиотеки классы, их методы и свойства, можно воспользоваться проводником объектов, например из Microsoft Word:

  1. Запустить MS Word.
  2. В главном меню выбрать Tools -> Macro -> Visual Bacis Editor
  3. В окне редактирования макросов выбрать View -> Object Browser

Если какая-то библиотека не отражена в списке, то ее можно подключить через меню Tools -> References.

В сценариях есть методы, не входящие ни в какой класс, они доступны непосредственно в теле сценария:

MsgBox(<Message>[, Params])   ' вывод оконного сообщения на экран;
InputBox(<Message>[, Params]) ' вывод диалогового окна на экран.

Пример вывода диалогового окна с запросом текста, а после этого вывод на экран оконного сообщения с введенным текстом.

MyValue = InputBox("Введите текст", "Первое окно", "Текст нужно ввести здесь")
MyResult = MsgBox(MyValue, 1, "Второе окно")

Методы и свойства корневого класса WScript, не требуют создания объекта — они автоматически доступны для использования непосредственно в теле сценария.

CreateObject(<Library>.<Class>)    ' создание объекта;
GetObject(<FilePath>)              ' подключение объекта из файла;
ConnectObject(<Object>, <Prefix>)  ' подключение к событиям существующего объекта;
DisconnectObject(<Object>)         ' отключение от событий объекта;
Echo([Message])                    ' вывод сообщения на экран;
Arguments                          ' возврат массива аргументов командной строки сценария;
Name                               ' возврат имени интерпретатора сценариев;
Path                               ' возврат пути к интерпретатору сценариев;
FullName                           ' возврат полного имени интерпретатора сценариев;
Version                            ' возврат версии интерпретатора сценариев;
BuildVersion                       ' возврат версии сборки интерпретатора сценариев;
ScriptName                         ' возврат имени файла сценария;
ScriptFullName                     ' возврат полного имени файла сценария;
Interactive                        ' установка или возврат режима интерактивности сценария;
Sleep(<Milliseconds>)              ' приостановка работы на указанное количество миллисекунд;
Quit                               ' прекращение работы сценария.

Применение этих методов и свойств более подробно мы разберем в примерах других классов.

Для работы с операционной системой используется специальный класс Shell, который позволяет выполнять такие операции как запуск программ, изменение реестра, создание ярлыков, доступ к системным папкам и системным переменным, доступ к системному журналу. Итак, методы и свойства класса Shell:

ExpandEnvironmentStrings(<VariableName>) ' возврат значения запрошенной переменной системы;
EnviEnvironment(<VariableName>)          ' возврат массива переменных системы;
CreateShortcut(<PathToCreate>)           ' создание ярлыка;
Popup(<Message>[, Params])               ' вывод оконного сообщения на экран;
RegRead(<ValuePath>)                     ' считывание значения из реестра;
RegWrite(<ValuePath>,<Value>[, Type])    ' запись значения в реестр;
RegDelete(<ValuePath>)                   ' удаление значения из реестра;
LogEvent(<Type>,<Message>)               ' запись события в системный журнал;
Run(<Command>[, Params])                 ' запуск программы в новом процессе;
Exec(<Command>)                          ' запуск программы в дочерней консоли;
AppActivate(<Title>)                     ' активация окна;
SendKeys(<Keys>)                         ' отправка символов в активное окно;
CurrentDirectory                         ' установка или возврат текущей директории;
SpecialFolders([FolderName])             ' возврат массива служебных папок или пути
	                                        ' запрошенной служебной папки.

Пример. Использование методов и свойств класса Shell.

' Создание объекта класса Shell
Set oShell = Wscript.CreateObject("WScript.Shell")
' Запуск калькулятора
oShell.Run("Calc.exe")
' Задержка
WScript.Sleep(100)
' Запуск блокнота
oShell.Run("Notepad.exe")
' Задержка
WScript.Sleep(100)
' Переключение на окно калькулятора
oShell.AppActivate "Calculator"
' Задержка
WScript.Sleep(100)
' Иммитация нажатия клавиш
oShell.SendKeys("1{+}2{=}")
' Получение пути к рабочему столу
sDesktopPath = oShell.SpecialFolders("Desktop")
' Создание объекта ярлыка
Set oLink = oShell.CreateShortcut(sDesktopPath & "Test.lnk")
' Настрока ярлыка
oLink.TargetPath = WScript.ScriptFullName
oLink.WindowStyle = 1
oLink.Hotkey = "CTRL+SHIFT+T"
oLink.IconLocation = "notepad.exe,0"
oLink.Description = "Test link"
oLink.WorkingDirectory = sDesktopPath
oLink.Save
' Создание объекта среды и получение в него свойств системы
Set oSysEnv = oShell.Environment("SYSTEM")
' Вывод сообщения о количестве процессоров на экран
MyResult = oShell.Popup("Number of processors: " & oSysEnv("NUMBER_OF_PROCESSORS"), _
   3, "Message", 0)
' Получение пути к папке Windows и вывод сообщения на экран
MyResult = oShell.Popup("Windows directory: " & _
   oShell.ExpandEnvironmentStrings("%WINDIR%"), 3, "Message", 0)
' Чтение ключа реестра и вывод его значения на экран
WScript.Echo oShell.RegRead ("HKLMSoftwareMicrosoftWindowsCurrentVersionProductID")
' Запись строкового значения в реестр
MyResult = oShell.RegWrite("HKCUScriptEngineValue", "My Value")
' Запись числового значения в реестр
MyResult = oShell.RegWrite("HKCUScriptEngineKey", 1, "REG_DWORD")
' Удаление ключа реестра
MyResult = oShell.RegDelete("HKCUScriptEngine")
' Запись события в системный журнал
MyResult = oShell.LogEvent(0, "Test Script Completed")

Как мы уже убедились, VBS-сценарии могут работать с оболочкой Windows, но это не единственная их возможность. С помощью класса Network можно получить доступ к сетевым объектам и управлять ими. Давайте подребнее разберем класс Network:

ComputerName                               ' возврат имени компьютера;
UserDomain                                 ' возврат имени домена;
UserName                                   ' возврат имени пользователя;
EnumNetworkDrives                          ' возврат списка подключенных сетевых дисков;
MapNetworkDrive(<LocalName>, <RemoteName>, [UpdateProfile, User, Password])
                                           ' подключение сетевого ресурса;
RemoveNetworkDrive(<Name>, [Force], [UpdateProfile])
                                           ' отключение сетевого ресурса;
EnumPrinterConnections                     ' возврат списка сетевых принтеров;
AddWindowsPrinterConnection(<PrinterPath>) ' подключение сетевого принтера;
AddPrinterConnection(<LocalName>, <RemoteName>[, UpdateProfile, User, Password]
                                           ' подключение сетевого принтера на указанный порт;
RemovePrinterConnection(<Name>[,Force, UpdateProfile])
                                           ' отключение сетевого принтера;
SetDefaultPrinter(<PrinterName>)           ' выбор принтера по умолчанию;

Пример. Использование методов и свойств класса Network.

' Создание объекта класса Network
Set oNetwork = WScript.CreateObject("WScript.Network")
' Вывод сообщения об имени компьютера
WScript.Echo "Computer Name = " & oNetwork.ComputerName
' Вывод сообщения об имени текущего пользователя
WScript.Echo "User Name = " & oNetwork.UserDomain & "" & oNetwork.UserName
' Подключение сетевого диска
oNetwork.MapNetworkDrive "Z:" "\ServerShare"
' Получение коллекции подключенных сетевых дисков
Set oDrives = oNetwork.EnumNetworkDrives
' Вывод сообщений о подключенных сетевых дисках
For i=0 To oDrives.Count -1 step 2
   WScript.Echo "Drive " & oDrives.Item(i) & " = " & oDrives.Item(i+1)
Next
' Удаление сетевого диска
oNetwork.RemoveNetworkDrive "Z:"
' Подключение сетевого принтера
oNetwork.AddPrinterConnection "LPT1", "\ServerPrinter"
' Установка принтера по умолчанию
oNetwork.SetDefaultPrinter "\ServerPrinter"
' Получение коллекции о подключенных принтерах
Set oPrinters = oNetwork.EnumPrinterConnections

Очень часто в сценариях встречаются такие случаи, когда необходимо что-то создать, удалить, переместить или изменить на диске компьютера. Эту задачу позволяет решить класс FileSystemObject, предназначенный для работы с файловой системой. Ниже перечисленны объекты, которые может создать этот класс:

  • FileSystemObject — главный объект, который позволяет создавать, удалять, управлять дисками, папками и файлами в общем;
  • Drive — объект, позволяюший собирать информацию о дисках системы;
  • Drives — объект, хранящий в себе список дисков системы;
  • Folder — объект, позволяющий создавать, удалять, перемещать папки, а также собирать информацию о них и их содержимом;
  • Folders — объект, хранящий в себе список подпапок указанной папки;
  • File — объект, позволяющий создавать, удалять, перемещать файлы, а также собирать информацию о них;
  • Files — объект, хранящий в себе список файлов указанной папки;
  • TextStream — объект, позволяющий читать и создавать текстовые файлы.

Методы и свойства класса FileSystemObject (главного объекта):

BuildPath(<Path>, <Name>)                          ' добавляет имя к указанному пути;
GetAbsolutePathName(<PathSpec>)                    ' возвращает полный путь;
GetBaseName(<Path>)                                ' возвращает имя папки или файла (без
                                                   ' расширения) в указанном пути;
GetDrive(<DriveSpec>)                              ' создает объект Drive;
GetDriveName(<Path>)                               ' возвращает имя диска в указанном пути;
GetExtensionName(<Path>)                           ' возвращает расширение файла в
                                                   ' указанном пути;
GetFile(<FileSpec>)                                ' создает объект File;
GetFileName(<PathSpec>)                            ' возвращает имя файла (без расширения)
                                                   ' в указанном пути;
GetFolder(<FolderSpec>)                            ' создает объект Folder;
GetParentFolderName(<Path>)                        ' возвращает имя папки в котором хранится
                                                   ' файл или папка по указанному пути;
GetSpecialFolder(<FolderSpec>)                     ' создает объект Folder к указанной
                                                   ' служебной папке;
GetTempName                                        ' возвращает случайно сгенерированное
                                                   ' имя файла;
DriveExists(<DriveSpec>)                           ' проверяет существование диска;
FolderExists(<FileSpec>)                           ' проверяет существование папки;
CopyFolder(<Source>, <Destination>[, Overwrite])   ' копирует папку;
MoveFolder(<Source>, <Destination>)                ' перемещает папку;
DeleteFolder(<FolderSpec>[, Force])                ' удаляет папку;
CreateFolder(<FolderName>)                         ' создает папку;
FileExists(<Filespec>)                             ' проверяет существование файла;
CopyFile(<Source>, <Destination>[, Overwrite])     ' копирует файл;
MoveFile(<Source>, <Destination>)                  ' перемещает файл;
DeleteFile(<FileSpec>[, Force])                    ' удаляет файл;
CreateTextFile(<FileName>[, Overwrite, UnioCode])  ' создает текстовый файл;
OpenTextFile(<FileName>[, IOMode, Create, Format]) ' открывает текстовый файл для чтения или
                                                   ' записи.

Объекты Drives, Folders и Files класса FileSystemObject хранят в себе информацию о дисках, папках и файлах и, в основном, используюся для сбора информации о файловой системе. Они имеют только два свойства:

Count                ' возвращает количество элементов в коллекции;
Item(<ObjectName>)   ' возвращает запись с указанным индексом из коллекции (не используется),
                     ' для перебора элементов коллекции приметяется цикл For Each.

Чтобы было более понятно, что же такое коллекция объектов, рассмотрим пример вывода на экран списка файлов корня диска C:

' Создание объекта класса FileSystemObject
Set oFSO = CreateObject("Scripting.FileSystemObject")
' Создание объекта Folder
Set oFolder = oFSO.GetFolder("C:")
' Получение коллекции файлов
Set oFilesCollection = oFolder.Files
' Получение количества элементов в коллекции
sResult = sResult & oFilesCollection.Count & " files in C:" & vbCrLf
' Чтение атрибутов каждого файла из коллекции
For Each oFile in oFilesCollection
   sResult = sResult & oFile.Name & vbTab
   sResult = sResult & oFile.Size & vbCrLf
Next
' Вывод результата на экран
MsgBox(sResult)

Объект Drive предоставляет доступ к свойствам локального или сетевого диска:

AvailableSpace   ' возвращает размер свободного места на диске, доступного пользователю;
DriveLetter      ' возвращает букву диска;
DriveType        ' возвращает тип диска;
FileSystem       ' возвращает тип файловой системы диска;
FreeSpace        ' возвращает размер свободного места на диске;
IsReady          ' возвращает доступность диска;
Path             ' возвращает путь к диску;
RootFolder       ' создает объект Folder, указывающий на корень диска;
SerialNumber     ' возвращает серийный номер диска;
ShareName        ' возвращает сетевое имя диска;
TotalSize        ' возвращает емкость диска в байтах;
VolumeName       ' возвращает или устанавливает метку диска.

Объект Folder предоставляет доступ ко всем свойствам папки, а также позволяет производить над ней действия:

Attributes                         ' возвращает атрибуты папки;
DateCreated                        ' возвращает дату создания папки;
DateLastAccessed                   ' возвращает дату последнего доступа к папке;
DateLastModified                   ' возвращает дату изменения папки;
Drive                              ' возвращает букву диска, на котором расположена папка;
Files                              ' возвращает коллекцию файлов папки;
IsRootFolder                       ' возвращает True, если папка - это корень диска;
Name                               ' возвращает имя папки;
ParentFolder                       ' создает объект Folder, указывающий на
                                   ' родительскую папку;
Path                               ' возвращает путь к папке;
ShortName                          ' возвращает имя папки в формате 8.3;
ShortPath                          ' возвращает путь к папке в формате 8.3;
Size                               ' возвращает размер папки;
SubFolders                         ' возвращает коллекцию подпапок;
Type                               ' возвращает тип папки;
Copy(<Destination>[, Overwrite])   ' копирует папку;
Move(<Destination>)                ' перемещает папку;
Delete(<Force>)                    ' удаляет папку;
CreateTextFile(<FileName>[, Overwrite, UniCode])
                                   ' создает в папке текстовый файл.

Объект File аналогичен объекту Folder — он предоставляет доступ ко всем свойствам файла, а также позволяет производить над ним действия:

Attributes                           ' возвращает атрибуты файла;
DateCreated                          ' возвращает дату создания файла;
DateLastAccessed                     ' возвращает дату последнего доступа к файла;
DateLastModified                     ' возвращает дату изменения файла;
Drive                                ' возвращает букву диска, на котором расположен файл;
Name                                 ' возвращает имя файла;
ParentFolder                         ' создает объект Folder, указывающий на
                                     ' родительскую папку;
Path                                 ' возвращает путь к файлу;
ShortName                            ' возвращает имя файла в формате 8.3;
ShortPath                            ' возвращает путь к файлу в формате 8.3;
Size                                 ' возвращает размер файла;
Type                                 ' возвращает тип файла;
Copy(<Destination>[, Overwrite])     ' копирует файл;
Move(<Destination>)                  ' перемещает файл;
Delete(<Force>)                      ' удаляет файл;
OpenAsTextStream([IOMode, Format])   ' открывает текстовый файл для чтения или записи.

Объект TextStream — это инструмент доступа к содержимому файла. С помощью него можно читать и изменять файл:

AtEndOfLine                ' показывает, достигнут ли конец строки;
AtEndOfStream              ' показывает, достигнут ли конец строки;
Column                     ' возвращает номер колонки, в которой находится курсор чтения;
Line                       ' возвращает номер строки, в которой находится курсор чтения;
Close                      ' закрывает файл - освобождает его для других процессов;
Read(<CharactersNumber>)   ' считывает указанное количество символов, начиная от позиции
                           ' курсора чтения;
ReadAll                    ' считывает весь файл;
ReadLine                   ' считывает строку, в которой находится курсор чтения;
Skip(<CharactersNumber>)   ' пропускает указанное количество символов, начиная от позиции
                           ' курсора чтения;
SkipLine                   ' пропускает строку, в которой находится курсор чтения;
Write(<String>)            ' записывает строку;
WriteLine(<String>)        ' записывает строку и переводит курсор записи на следующую строку;
WriteBlankLines(<Lines>)   ' записывает указанное количество пустых строк.

Мы познакомились со всеми методами и свойствами класса FileSystemObject, рассмотрим пример использования этого класса:

' Задание констант кодов системных папок
Const WindowsFolder = 0
Const SystemFolder = 1
Const TemporaryFolder = 2
' Задание констант кодов типов доступа к текстовому файлу
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8
' Создание объекта класса FileSystemObject
Set oFSO = CreateObject("Scripting.FileSystemObject")
' Получение коллекции дисков
Set DrivesCollection = oFSO.Drives
' Обработка каждого диска для получения его метки или сетевого имени
For Each oDrive in DrivesCollection
   sResult = sResult & oDrive.DriveLetter & ": "
   If oDrive.DriveType = Remote Then
       sResult = sResult & oDrive.ShareName & vbCrLf
   ElseIf oDrive.IsReady Then
       sResult = sResult & oDrive.VolumeName & vbCrLf
   Else
       sResult = sResult & vbCrLf
   End If
Next
' Вывод результатов на экран
Wscript.Echo(sResult)
' Создание объекта диска C:
Set oDrive = oFSO.GetDrive("C")
sResult = oDrive.DriveLetter & ": - "
' Получение типа диска C:
Select Case oDrive.DriveType
   Case 0: sResult = sResult & "Unknown - "
   Case 1: sResult = sResult & "Removable - "
   Case 2: sResult = sResult & "Fixed - "
   Case 3: sResult = sResult & "Network - "
   Case 4: sResult = sResult & "CD-ROM - "
   Case 5: sResult = sResult & "RAM Disk - "
End Select
' Определение доступности диска и получение его свойств
If oDrive.IsReady Then
   sResult = sResult & "Ready" & vbCrLf
   sResult = sResult & "FileSystem is " & oDrive.FileSystem & vbCrLf
   sResult = sResult & "Available Space: " & _
     FormatNumber(oDrive.AvailableSpace/1024, 0) & " Kbytes"
Else
   sResult = sResult & "Not ready"
End If
' Вывод результатов на экран
Wscript.Echo(sResult)
' Создание объекта служебной папки (папка временных фалов Windows)
Set oTempFolder = oFSO.GetSpecialFolder(TemporaryFolder)
' Создание объекта текстового файла (и создание его в корне диска C:)
Set oFile = oFSO.CreateTextFile("C:TestFile.txt", True)
' Запись в текстовый файл
oFile.WriteLine("This is a test.")
oFile.WriteLine(sResult)
' Закрытие текстового файла и освобождение его для других процессов
oFile.Close
' Проверка на наличие файла в папке временных файлов Windows, удаление этого файла
If oFSO.FileExists(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt")) Then _
 oFSO.DeleteFile(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt"))
'  Создание объекта файла
Set oFile = oFSO.GetFile("C:TestFile.txt")
' Перемещение файла в папку временных файлов Windows
oFile.Move(oFSo.BuildPath(oTempFolder.Path, "TestFile.txt"))
' Изменение атрибута у файла
If oFile.Attributes and 32 Then
   oFile.Attributes = oFile.attributes - 32
   Wscript.Echo("Archive bit is cleared")
Else
   oFile.Attributes = oFile.attributes + 32
   Wscript.Echo("Archive bit is set")
End If
sResult = oFile.Path & vbCrLf & oFile.DateLastModified & ":" & vbCrLf
' Создание объекта потока путем открытие файла на чтение
Set oTestFile = oFSO.OpenTextFile(oFile.Path, ForReading, False)
' Чтение потока, пока не встречен его конец
Do While oTestFile.AtEndOfStream <> True
   sResult = sResult & oTestFile.ReadLine
Loop
' Закрытие текстового файла и освобождение его для других процессов
oTestFile.Close
' Вывод сообщения на экран
Wscript.Echo(sResult)

Данный сценарий предназначен для очистки системы от устаревших файлов во временных каталогах Windows и профилях пользователей. В этом примере можно увидеть как работают практически все вышеописанные конструкции: структура сценария, название переменных, работа с массивами и коллекциями, ручная обработка ошибок, считывание системных переменных, создание текстового файла журнала работы сценария, работа с файловой системой, использование процедур.

' ==== Script Information Header ====
' script name:   Purge Temp
' version:       1.0
' date:          16.07.08
' autor:         Bochkarev Vitaly
' description:   Скрипт удаляет устаревшие временные файлы с компьютера

' ==== Script Main Logic ====
' Включение ручной обработки ошибок
On Error Resume Next
' Константа временного интервала, когда файлы считаются устаревшими
Const PurgeTime = 14    ' дней

' Исключения - профили пользователей, которые не должны обрабатываться
Dim aExceptions(3)
aExceptions(0) = "Default User"
aExceptions(1) = "LocalService"
aExceptions(2) = "NetworkService"
aExceptions(3) = "All Users"

' Создание объектов оболочки и файловой системы
Set oShell = CreateObject("wscript.shell")
Set oFSO = CreateObject("Scripting.Filesystemobject")

' Определение путей служебных папок
sProgramFiles = oShell.ExpandEnvironmentStrings("%ProgramFiles%")
sWinDir = oShell.ExpandEnvironmentStrings("%WinDir%")
sWinTempFolder = sWinDir & "Temp"
sDocuments = "C:Documents and Settings"

' Создание фурнала работы сценария
sLogFileName = sWinTempFolder & "PurgeTemp_" & Date
sLogFileName = Replace(sLogFileName, ".", "_")
sLogFileName = Replace(sLogFileName, "/", "_")
Set oLogFile = oFSO.CreateTextFile(sLogFileName & ".log",true)
oLogFile.WriteLine "========== Start purging =========="

' Очистка временной папки Windows
oLogFile.WriteLine vbCrLf & "========== Windows Temporary folder =========="
PurgeFolder(sWinTempFolder)

' Очистка временной папки профиля пользователя и файлов Интернет
oLogFile.WriteLine vbCrLf & _
 "========== Users Temporary folder and Users Temporary Internet Files =========="
Set oDocuments = oFSO.GetFolder(sDocuments)
Set colProfiles = oDocuments.SubFolders
For Each oProfile In colProfiles
   bFlag = false
   For Each sException in aExceptions
       if InStr(oProfile.Path,sException) > 0 then
           bFlag = true
           exit for
       end if
   Next
   If bFlag = False Then
       PurgeFolder(oProfile.Path & "Local SettingsTemp")
       PurgeFolder(oProfile.Path & "Local SettingsTemporary Internet Files")
   End If
Next

' Очистка карантина NOD32
oLogFile.WriteLine vbCrLf & "========== NOD32 Quarantine =========="
sQuarantine = sProgramFiles & "EsetInfected"
PurgeFolder(sQuarantine)

' Закрытие файла журнала
oLogFile.WriteLine vbCrLf & "========== Stop purging =========="
oLogFile.Close

' Процедура PurgeFolder - удаление старых файлов
Sub PurgeFolder(sFolderPath)
   ' Создание объекта Folder
   Set oFolder = oFSO.GetFolder(sFolderPath)
   ' Получение коллекции файлов
   Set colFiles = oFolder.Files
   ' Обработка каждого файла из коллекции
   For each oFile in colFiles
       ' Проверка, является ли файл устаревшим
       If (Date-oFile.DateLastModified) > PurgeTime and (Date-oFile.DateCreated) > _
         PurgeTime Then
           ' Запись сообщения в журнал сценария
           oLogFile.Writeline oFile.Path & vbTab & oFile.DateCreated
           ' Удаление устаревшего файла
           oFSO.DeleteFile oFile.Path, True
           ' Проверка на наличие ошибок
           if err.Number <> 0 then
               ' Запись сообщения об ошибке в журнал сценария
               oLogFile.Writeline "-----> Error # " & CStr(Err.Number) _
                 & " " & Err.Description
               ' Очистка ошибки
               Err.Clear
           end if
           ' Пауза в 20 милисекунд
           WScript.Sleep 20
       End if
   Next
   ' Получение коллекции подпапок
   Set colSubFolders = oFolder.SubFolders
   ' Обработка каждой подпапки
   For Each oSubFolder In colSubFolders
       ' Рекурсивный вызов процедуры удаления старых файлов - подпрограмма вызывает
       ' сама себя
       PurgeFolder(oSubFolder.Path)
       ' Проверка размера папки
       If oSubFolder.Size = 0 Then
           ' Запись сообщения в журнал сценария
           oLogFile.Writeline oSubFolder.Path & vbTab & oSubFolder.DateCreated
           ' Удаление пустой папки
           oFSO.DeleteFolder oSubFolder.Path
           ' Проверка на наличие ошибок
           If err.Number <> 0 then
               ' Запись сообщения об ошибке в журнал сценария
               oLogFile.Writeline "-----> Error # " & CStr(Err.Number) _
                 & " " & Err.Description
               ' Очистка ошибки
               Err.Clear
           End if
       End if
   Next
End Sub

Итак, мы познакомились с основами сценариев Visual Basic Script. Давайте подведем итог, и определим достоинства и недостатки таких сценариев:

  • сценарии не требуют компиляции и их код в любой момент можно отредактировать;
  • VBS-сценарии практически не ограничены в функциональности и могут использовать различные системные библиотеки и объекты других приложений;
  • VBS-файлы могут выполняются как в консоли, так и в оконном режиме, поэтому пользователь может контролировать видимость хода выполнения сценария;
  • VBS-сценарии позволяют использовать пользовательские процедуры и функции;
  • этот язык идеально подходит для работы со строковыми и числовыми переменными, датами, а также для обработки текстовых файлов, управления системой и доменом;
  • VBS-сценарии сложны в написании и требуют навыков программирования;
  • такие сценарии работают только в операционных системах семейства Windows.

Виталий Бочкарев

Visual Basic Scripting Edition (обычно просто VBScript) — скриптовый язык программирования, интерпретируемый компонентом Windows Script Host. Он широко используется при создании скриптов в операционных системах семейства Microsoft Windows.

VBScript был создан компанией Microsoft как замена устаревшему пакетному языку, интерпретируемому приложением command.com.

Область применения[]

Скрипты на языке VBScript чаще всего применяются в следующих областях, использующих продукцию Microsoft:

  • автоматизация администрирования систем Windows;
  • серверный программный код в страницах ASP;
  • клиентские скрипты в браузере Internet Explorer.

Такой тип сценариев обычно используется для:

  • создания сложных сценариев;
  • использования объектов из других приложений и библиотек;
  • скрытия окон в ходе выполнения сценария;
  • шифрования логики сценария.

В основном VBS-сценарии применяются для обработки данных, управления системой, работы с учетными записями пользователей и компьютеров, взаимодействия с офисными приложениями, работы с базами данных и прочих сложных задач.

VBS-сценарий — это обычный текстовый файл с расширением *.vbs, который легко править в блокноте, а запускать на исполнение — двойным щелчком мыши или вызовом по имени в консоли.

Сценарии не компилируются, а интерпретируются. То есть для обработки скрипта в системе должен присутствовать интерпретатор языка VBS, и таких интерпретаторов в Windows два: оконный WScript и консольный CScript, оба интерпретатора это Windows Script Host (WSH).

Правила языка[]

В Visual Basic работают следующие правила:

  • длина строки не ограничена;
  • регистр символов не учитывается;
  • количество пробелов между параметрами не учитывается;
  • строку команды можно разрывать, а на месте разрыва нужно вставлять символ «_»;
  • максимальная длина имени переменной 255 символов;
  • комментарии обозначаются символом «’».
  • несколько строк можно объединять в одну, предварительно разделив их символом «:»

Переменные[]

По умолчанию переменные в сценариях объявляются автоматически при первом использовании в теле скрипта, если это не запрещено директивой Option Explicit. Если же в начале сценария объявить директиву Option Explicit, то все переменные нужно определять заранее с помощью следующих конструкций:

Dim ValueName1 ' переменная, доступная всем подпрограммам;
Public ValueName2 ' переменная, доступная всем подпрограммам;
Private ValueName3 ' переменная, доступная только текущей программе и её подпрограммам;

Константы объявляются в начале сценария с помощью конструкции:

Const ConstName1 = Value1 ' константа, доступная всем подпрограммам;
Public Const ConstName2 = Value2 ' константа, доступная всем подпрограммам;
Private Const ConstName3 = Value3 ' константа, доступная только текущей программе и её подпрограммам;

Тип переменной присваивается автоматически после внесения в неё первого значения. В Visual Basic существуют следующие типы данных:

  • empty — неинициализированная переменная;
  • null — пустая переменная;
  • boolean — логический тип, возможные значения: False, True или 0, 1;
  • byte — 8-битное целое число без знака, возможные значения: 0 .. 255;
  • integer — 16-битное целое число, возможные значения: −32768 .. 32767;
  • long — 32-битное целое число, возможные значения: −2147483648 .. 2147483647;
  • currency — денежный тип, возможные значения: −922337203685477,5808 до 922337203685477,5807;
  • single — число с плавающей точкой, возможные значения: −3.402823e38 .. −1.401298e-45 для отрицательных чисел и 1.401298e-45 .. 3.402823e38 для положительных чисел;
  • double — число с плавающей точкой, возможные значения: −1.79769313486232e308 .. −4.94065645841247e-324 для отрицательных чисел и 4.94065645841247e-324 .. 1.79769313486232e308 для положительных чисел;
  • date — дата, возможные значения: 01.01.1900 .. 31.01.9999;
  • string — строковая переменная, вместимость до 2 миллиардов символов;
  • object — указатель на объект;
  • error — код ошибки.

В VBS-сценариях возможно использование массивов переменных, которые позволяют хранить списки, таблицы и даже более сложные конструкции. Одномерные массивы (списки) могут быть динамическими, то есть они позволяют изменять свой размер в ходе работы сценария. Все массивы объявляются командой Dim:

Объекты, их методы и свойства[]

VBScript, как и их родитель — язык Visual Basic, является объектно-ориентированным языком программирования, то есть основной концепцией является понятие объектов и классов

Класс — это тип, описывающий устройство объектов. Объект подразумевает под собой нечто, что обладает определённым поведением и способом представления, объект — это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Все объекты, с которыми работает Windows Script Host, имеют методы и свойства. Чтобы обратиться к методу, необходимо указать объект, а через точку — метод с необходимыми параметрами.

Аналогичная ситуация со свойствами, но свойства можно как назначать, так и считывать в переменные и другие свойства, правда, следует учитывать тип данных переменных и свойств, иначе сценарий выдаст ошибку несовместимости типов данных.

Пример[]

Вот пример небольшой программы на языке VBScript, которая выводит диалоговое окно с сообщением (символы после знака апостроф являются комментариями):

 ' Объявление переменной:
 Dim strMessage
 ' Присваивание переменной значения:
 strMessage = "Википедия — свободная энциклопедия"
 ' Вывод окна с сообщением:
 MsgBox strMessage

По эффекту работы она аналогична прямой инструкции

MsgBox "Википедия — свободная энциклопедия"

См. также[]

  • Visual Basic for Applications
  • JScript — альтернативный скриптовый язык, созданный компанией Microsoft на основе EcmaScript

Ссылки[]

  • VBScriptШаблон:Ref-en — Руководство по VBScript от Майкрософт.
  • The Script Center Script RepositoryШаблон:Ref-en — Коллекция скриптов на VBScript от Майкрософт.
 Просмотр этого шаблона Компоненты Microsoft Windows
Основные

Aero •
ClearType •
Диспетчер рабочего стола •
DirectX •
Панель задач
(Пуск •

Область уведомлений) •
Проводник
(Пространство имён •

Специальные папки
Ассоциации файлов) •
Windows Search
(Smart folders

iFilters) •
GDI •
WIM
SMB •
.NET Framework •
XPS •
Active Scripting
(WSH •

VBScript
JScript) •
COM
(OLE •

DCOM •
ActiveX •
Структурированное хранилище
Сервер транзакций) •
Теневая копия
WDDM •
UAA
Консоль Win32

Службы
управления

Архивация и восстановление
COMMAND.COM •
cmd.exe •
Средство переноса данных •
Просмотр событий
Установщик •
netsh.exe
PowerShell •
Отчёты о проблемах
rundll32.exe •
Программа подготовки системы (Sysprep) •
Настройка системы (MSConfig) •
Проверка системных файлов
Индекс производительности •
Центр обновления •
Восстановление системы •
Дефрагментация диска
Диспетчер задач •
Диспетчер устройств •
Консоль управления •
Очистка диска •
Панель управления
(элементы)

Приложения

Контакты •
DVD Maker
Факсы и сканирование
Internet Explorer •
Журнал
Экранная лупа •
Media Center •
Проигрыватель Windows Media •
Программа совместной работы
Центр устройств Windows Mobile
Центр мобильности •
Экранный диктор
Paint •
Редактор личных символов
Удалённый помощник
Распознавание речи
WordPad •
Блокнот •
Боковая панель •
Звукозапись
Календарь
Калькулятор
Ножницы
Почта •
Таблица символов •
Исторические:
Movie Maker •

NetMeeting •
Outlook Express •
Диспетчер программ •
Диспетчер файлов •
Фотоальбом •
Windows To Go

Игры

Chess Titans •
Mahjong Titans
Purble Place •
Пасьянсы (Косынка
Паук
Солитер) •
Сапёр
Пинбол •
Червы

Ядро ОС

Ntoskrnl.exe •
Слой аппаратных абстракций (hal.dll) •
Бездействие системы •
svchost.exe •
Реестр •
Службы •
Диспетчер управления сервисами
DLL
(формат модулей) •

PE •
NTLDR •
Диспетчер загрузки
Программа входа в систему (winlogon.exe) •
Консоль восстановления
Windows RE
Windows PE •
Защита ядра от изменений

Службы

Autorun.inf •
Фоновая интеллектуальная служба передачи
Файловая система стандартного журналирования
Отчёты об ошибках
Планировщик классов мультимедиа
Теневая копия
Планировщик задач •
Беспроводная настройка

Файловые
системы

ReFS •
NTFS
(Жёсткая ссылка

Точка соединения •
Точка монтирования
Точка повторной обработки
Символьная ссылка •
TxF •
EFS) •
WinFS •
FAT •
exFAT •
CDFS •
UDF
DFS •
IFS

Сервер

Active Directory •
Службы развёртывания •
Служба репликации файлов
DNS
Домены
Перенаправление папок
Hyper-V •
IIS •
Media Services
MSMQ
Защита доступа к сети (NAP) •
Службы печати для UNIX
Удалённое разностное сжатие
Службы удаленной установки
Служба управления правами
Перемещаемые профили пользователей •
SharePoint •
Диспетчер системных ресурсов
Удаленный рабочий стол
WSUS •
Групповая политика •
Координатор распределённых транзакций

Архитектура

NT •
Диспетчер объектов
Пакеты запроса ввода/вывода
Диспетчер транзакций ядра
Диспетчер логических дисков
Диспетчер учетных записей безопасности
Защита ресурсов
lsass.exe
csrss.exe •
smss.exe •
spoolsv.exe
Запуск

Безопасность

BitLocker
Защитник •
Предотвращение выполнения данных
Обязательный контроль целостности
Защищённый канал данных
UAC •
UIPI
Брандмауэр •
Центр обеспечения безопасности •
Защита файлов

Совместимость

Подсистема UNIX (Interix) •
Виртуальная машина DOS •
Windows on Windows •
WOW64

Шаблон:Microsoft APIs

VBScript

VBSccript file format icon.png
Developer Microsoft
First appeared 1996; 27 years ago
Stable release

5.8

OS Windows
Filename extensions .vbs, .vbe, .wsf, .wsc (.asp, .hta, .htm, .html)
Website docs.microsoft.com/en-us/previous-versions/t0aew7h6(v=vs.85)
Major implementations
Windows Script Host, Active Server Pages
Influenced by
Visual Basic
Influenced
Windows PowerShell

VBScript («Microsoft Visual Basic Scripting Edition») is an Active Scripting language developed by Microsoft that is modeled on Visual Basic. It allows Microsoft Windows system administrators to generate powerful tools for managing computers without error handling and with subroutines and other advanced programming constructs. It can give the user complete control over many aspects of their computing environment.

VBScript uses the Component Object Model to access elements of the environment within which it is running; for example, the FileSystemObject (FSO) is used to create, read, update and delete files. VBScript has been installed by default in every desktop release of Microsoft Windows since Windows 98;[1] in Windows Server since Windows NT 4.0 Option Pack;[2] and optionally with Windows CE (depending on the device it is installed on).

A VBScript script must be executed within a host environment, of which there are several provided with Microsoft Windows, including: Windows Script Host (WSH), Internet Explorer (IE), and Internet Information Services (IIS).[3] Additionally, the VBScript hosting environment is embeddable in other programs, through technologies such as the Microsoft Script Control (msscript.ocx).

History[edit]

VBScript began as part of the Microsoft Windows Script Technologies, launched in 1996. This technology (which also included JScript) was initially targeted at web developers. During a period of just over two years, VBScript advanced from version 1.0 to 2.0, and over that time it gained support from Windows system administrators seeking an automation tool more powerful than the batch language first developed in the early 1980s.[4] On August 1, 1996, Internet Explorer was released with features that included VBScript.[5]

In version 5.0, the functionality of VBScript was increased with new features including regular expressions; classes; the With statement;[6] the Eval, Execute, and ExecuteGlobal functions to evaluate and execute script commands built during the execution of another script; a function-pointer system via GetRef,[7] and Distributed COM (DCOM) support.

In version 5.5, SubMatches[8] were added to the regular expression class in VBScript, to finally allow script authors to capture the text within the expression’s groups. That capability had already been available in JScript.

With the advent of the .NET Framework, the scripting team took the decision to implement future support for VBScript within ASP.NET for web development,[9] and therefore no new versions of the VBScript engine would be developed. It would henceforth be supported by Microsoft’s Sustaining Engineering Team, who are responsible for bug fixes and security enhancements. For Windows system administrators, Microsoft suggests migrating to Windows PowerShell. However, the scripting engine will continue to be shipped with future releases of Microsoft Windows and IIS.[citation needed]

Environments[edit]

When employed for client-side web development in Microsoft Internet Explorer, VBScript is similar in function to JavaScript. It is used to write executable functions that are embedded in or included from HTML pages and interact with the Document Object Model (DOM) of the page, to perform tasks not possible in HTML alone. However, other web browsers such as Firefox and Opera and recently Chrome do not have built-in support for VBScript. This means that where client-side scripting and cross-browser compatibility are required, developers usually choose JavaScript over most other programming languages, such as VBScript.

VBScript is also used for server-side processing of web pages, most notably with Microsoft Active Server Pages (ASP). The ASP engine and type library, asp.dll, invokes vbscript.dll to run VBScript scripts. VBScript that is embedded in an ASP page is contained within <% and %> context switches. The following example of an ASP page with VBScript displays the current time in 24-hour format, but it is also used as the default script for error messages with the Windows operating systems.

 <% Option Explicit %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 	<head>
 		<title>VBScript Example</title>
 	</head>
 	<body>
 		<div><% 
 			' Grab current time from Now() function.
 			' An '=' sign occurring after a context switch (<%) is shorthand 
 			' for a call to the Write() method of the Response object.
 			Dim timeValue : timeValue = Now %>
 			The time, in 24-hour format, is 
 			<%=Hour(timeValue)%>:<%=Minute(timeValue)%>:<%=Second(timeValue)%>.
 		</div>
 	</body>
 </html>

VBScript can also be used to create applications that run directly on a workstation running Microsoft Windows. The simplest example is a script that makes use of the Windows Script Host (WSH) environment. Such a script is usually in a stand-alone file with the file extension .vbs. The script can be invoked in two ways: Wscript.exe is used to display output and receive input through a GUI, such as dialog and input boxes. Cscript.exe is used in a command line environment.

VBScript can be included in two other types of scripting files: Windows Script Files, and HTML Applications.

A Windows Script File (WSF) is styled after XML. A WSF file can include multiple VBS files. As a result, WSF files provide a means for code reuse: a library of classes or functions can be stored in one or more .vbs files, which can be included in .wsf files, so the functionality can be reused in a modular way. The files have extension .wsf and can be executed using wscript.exe or cscript.exe, just as a .vbs file can.

An HTML Application (HTA) is styled after HTML. The HTML in the file is used to generate the user interface, and a scripting language such as VBScript is used for the program logic. The files have extension .hta and can be executed using mshta.exe.

VBScript (and JScript) can also be used in a Windows Script Component, an ActiveX-enabled script class that can be invoked by other COM-enabled applications.[10] These files have extension .wsc.

VBScript is simple to create and can be coded using an easy to use text editor like Notepad. A simple VBScript saved by the .vbs extension can be run on a Windows system by double clicking it.

Functionality[edit]

Language features[edit]

The language of VBScript is modeled on Visual Basic, and therefore can be reviewed using similar categories: procedures, control structures, constants, variables, user interaction, array handling, date/time functions, error handling, mathematical functions, objects, regular expressions, string manipulation, and so on.[11]

The following are some key points of introduction to the VBScript language by Microsoft

A «procedure» is the main construct in VBScript for separating code into smaller modules. VBScript distinguishes between a function, which can return a result in an assignment statement, and a subroutine, which cannot. Parameters are positional, and can be passed by value or by reference.

Control structures include the usual iterative and conditional Do Loops, If-Then-Else statements, and Case statements, with some more complex variants, such as ElseIf and nested control structures.

As a memory aid in coding, and certainly for readability, there are a large number of constants, such as True and False for logical values, vbOKCancel and vbYesNo for MsgBox codes, vbBlack and vbYellow for color values, vbCR for the carriage return character, and many others.

Variables have «Variant» type by default, but it is possible (and sometimes necessary) to force a particular type (integer, date, etc.) using conversion functions (CInt, CDate, etc.)

User interaction is provided through the functions MsgBox and InputBox which provide a simple dialogue box format for messages and input. Both functions display prompting messages, with the former returning a standard response, and the latter returning one user-supplied text or numeric value. For more elaborate GUI interaction with controls, VBScript can be used in combination with HTML, for example, in an HTML Application. Event-driven forms are not supported as in Visual Basic or Visual Basic for Applications.

Names are not case-sensitive. However, it is considered a best practice of VBScript style to be consistent and to capitalize judiciously.

VBScript functionalities[edit]

When hosted by the Windows Script Host, VBScript provides numerous features which are common to scripting languages, but not available from Visual Basic 6.0. These features include direct or easy access to:

  • Named and unnamed command line arguments,
  • Stdin and stdout, which could be redirected,
  • WSH.Echo which writes to the console and cannot be redirected,
  • WSH.ExitCode which can be tested from DOS batch files, or by the process which invoked the script file,
  • Network Printers,
  • Network Shares,
  • Special Folders, e.g. Desktop, Favorites, MyDocuments and so on,
  • Network user information, such as group membership,
  • Methods for runtime execution of text defined at runtime: Eval and Execute,
  • Methods for executing scripts on remote machines,
  • Windows Management Instrumentation (WMI)
  • Functionality for embedding a VBScript engine in other applications, using a widely known language.

CScript, the command line runner, provides options for:

  • Interactive or Batch Mode,
  • Invoking Debug Mode from the command line,
  • Error reporting including the line number.

Additional functionality[edit]

File system management, file modification, and streaming text operations are implemented with the Scripting Runtime Library scrrun.dll. This provides objects such as FileSystemObject, File, and TextStream, which expose the Windows file system to the programmer.

Binary file and memory I/O are provided by the «ADODB.Stream» class, which can also be used for string builders (to avoid excessive string concatenation, which can be costly), and to interconvert byte arrays and strings. Database access is made possible through ActiveX Data Objects (ADO), and the IIS Metabase can be manipulated using the GetObject() function with sufficient permissions (useful for creating and destroying sites and virtual directories). XML files and schemas can be manipulated with the Microsoft XML Library Application Programming Interfaces (msxml6.dll, msxml3.dll), which also can be used to retrieve content from the World Wide Web via the XMLHTTP and ServerXMLHTTP objects (class strings «MSXML2.XMLHTTP.6.0» and «MSXML2.ServerXMLHTTP.6.0», respectively).

Functionality can also be added through ActiveX technologies. Security concerns have led to many ActiveX controls being blacklisted in the Internet Explorer process by Microsoft, which deploys the killbit via monthly Windows security updates to disable vulnerable Microsoft and third party code.[12][13]

Programmers can utilize the extensibility via COM (ActiveX) modules to specifically equip the Script Host and VBScript with required or desired functions. The «VTool» component, for instance, adds a number of dialog windows, binary file access, and other functionality.[14]

Development tools[edit]

Microsoft does not routinely make available an IDE (Integrated Development Environment) for VBScript, although the Microsoft Script Editor has been bundled with certain versions of Microsoft Office.

For debugging purposes the Microsoft Script Debugger can still be used in current Windows versions, even though the tool has not been updated in years. It allows the user to set break points in the VBScript code but the user interface is more than clumsy.

There are VBScript debuggers available from third-party sources,[15][16] and many text editors offer syntax highlighting for the language.

During execution, when an error occurs, the script host issues a message stating the type of error and the number of the offending line.

Uses[edit]

Although VBScript is a general-purpose scripting language, several particular areas of use are noteworthy. First, it used to be widely used among system administrators in the Microsoft environment.[17], but it has since been vastly surpassed by PowerShell. Second, VBScript is the scripting language for Micro Focus Unified Functional Testing, a test automation tool.[18] A third area to note is the adoption of VBScript as the internal scripting language for some embedded applications, such as industrial operator interfaces and human machine interfaces. The hierarchical DBMS InterSystems Caché (which has its roots in the language MUMPS) also supports an implementation of VBScript, Cache BASIC, for programming stored code.[19]

VBScript omits several useful features of the full Visual Basic, such as strong typing, extended error trapping and the ability to pass a variable number of parameters to a subroutine. However, its use is relatively widespread because it is easy to learn and because those who implement code in the language need not pay royalties to Microsoft as long as the VBScript trade mark is acknowledged.[citation needed] When an organization licenses Visual Basic for Applications (VBA) from Microsoft, as companies such as Autodesk, StatSoft, Great Plains Accounting and Visio (subsequently acquired by Microsoft) have done, it is allowed to redistribute the full VBA code-writing and debugging environment with its product.

VBScript is used in place of VBA as the macro language of Outlook 97.

VBScript can be effectively used for automating day to day office tasks as well as monitoring in the Windows-based environment. It can also be used in collaboration with ADODB ActiveX Data Objects (ADODB) for effective database connectivity.

VBScript can also be used to create malware and viruses, such as the ILOVEYOU worm that spread through email attachment in Outlook 97 that cost billions of dollars.

See also[edit]

  • AppleScript
  • FastTrack Scripting Host
  • HTML Components
  • JavaScript
  • JScript .NET
  • JScript
  • PerlScript
  • Windows PowerShell
  • Windows Script File

References[edit]

  1. ^ WSH Version Information, on MSDN
  2. ^ VBScript Version Information, on MSDN
  3. ^ What is VBScript?, in MSDN Library
  4. ^ 86-DOS
  5. ^ «The History of Visual Basic». www.johnsmiley.com.
  6. ^ Visual Basic Scripting Edition: With Statement, on MSDN
  7. ^ GetRef Function, on MSDN
  8. ^ Visual Basic Scripting Edition: SubMatches Collection, on MSDN
  9. ^ What About VBScript?, within the article Introducing JScript .NET by Andrew Clinick of Microsoft Corporation, in Scripting Clinic on MSDN (July 14, 2000)
  10. ^ Introducing Windows Script Components, on MSDN
  11. ^ «VBScript Features». msdn.microsoft.com.
  12. ^ «How to stop an ActiveX control from running in Internet Explorer». Microsoft. 2007-08-24. Retrieved 2009-06-29.
  13. ^ «Microsoft Security Advisory (960715): Update Rollup for ActiveX Kill Bits». Microsoft. 2009-01-17. Retrieved 2009-06-29.
  14. ^ «VTool» script component – GUI and functional enhancements for WSH/VBS
  15. ^ «VbsEdit — VBScript Editor with Debugger — VBS Editor». www.vbsedit.com.
  16. ^ Corp., Spline Technologies. «SplineTech VBS Debugger, VBScript Debugger. Debug VBS». www.remotedebugger.com.
  17. ^ Script Center, Microsoft web site targeting system administration scriptors
  18. ^ «Quick Test Professional – Basics of VBScript«.
  19. ^ «Caché for Unstructured Data Analysis». InterSystems. Retrieved 2018-09-24.

External links[edit]

Wikimedia Commons has media related to VBScript.

  • VBScript Language Reference, Microsoft Docs
  • Is VBScript Dead?, isvbscriptdead.com
  • VBScript Commands, ss64.com
  • VBScript How-to guides and examples, ss64.com
  • WMI Overview, Microsoft TechNet
VBScript

VBSccript file format icon.png
Developer Microsoft
First appeared 1996; 27 years ago
Stable release

5.8

OS Windows
Filename extensions .vbs, .vbe, .wsf, .wsc (.asp, .hta, .htm, .html)
Website docs.microsoft.com/en-us/previous-versions/t0aew7h6(v=vs.85)
Major implementations
Windows Script Host, Active Server Pages
Influenced by
Visual Basic
Influenced
Windows PowerShell

VBScript («Microsoft Visual Basic Scripting Edition») is an Active Scripting language developed by Microsoft that is modeled on Visual Basic. It allows Microsoft Windows system administrators to generate powerful tools for managing computers without error handling and with subroutines and other advanced programming constructs. It can give the user complete control over many aspects of their computing environment.

VBScript uses the Component Object Model to access elements of the environment within which it is running; for example, the FileSystemObject (FSO) is used to create, read, update and delete files. VBScript has been installed by default in every desktop release of Microsoft Windows since Windows 98;[1] in Windows Server since Windows NT 4.0 Option Pack;[2] and optionally with Windows CE (depending on the device it is installed on).

A VBScript script must be executed within a host environment, of which there are several provided with Microsoft Windows, including: Windows Script Host (WSH), Internet Explorer (IE), and Internet Information Services (IIS).[3] Additionally, the VBScript hosting environment is embeddable in other programs, through technologies such as the Microsoft Script Control (msscript.ocx).

History[edit]

VBScript began as part of the Microsoft Windows Script Technologies, launched in 1996. This technology (which also included JScript) was initially targeted at web developers. During a period of just over two years, VBScript advanced from version 1.0 to 2.0, and over that time it gained support from Windows system administrators seeking an automation tool more powerful than the batch language first developed in the early 1980s.[4] On August 1, 1996, Internet Explorer was released with features that included VBScript.[5]

In version 5.0, the functionality of VBScript was increased with new features including regular expressions; classes; the With statement;[6] the Eval, Execute, and ExecuteGlobal functions to evaluate and execute script commands built during the execution of another script; a function-pointer system via GetRef,[7] and Distributed COM (DCOM) support.

In version 5.5, SubMatches[8] were added to the regular expression class in VBScript, to finally allow script authors to capture the text within the expression’s groups. That capability had already been available in JScript.

With the advent of the .NET Framework, the scripting team took the decision to implement future support for VBScript within ASP.NET for web development,[9] and therefore no new versions of the VBScript engine would be developed. It would henceforth be supported by Microsoft’s Sustaining Engineering Team, who are responsible for bug fixes and security enhancements. For Windows system administrators, Microsoft suggests migrating to Windows PowerShell. However, the scripting engine will continue to be shipped with future releases of Microsoft Windows and IIS.[citation needed]

Environments[edit]

When employed for client-side web development in Microsoft Internet Explorer, VBScript is similar in function to JavaScript. It is used to write executable functions that are embedded in or included from HTML pages and interact with the Document Object Model (DOM) of the page, to perform tasks not possible in HTML alone. However, other web browsers such as Firefox and Opera and recently Chrome do not have built-in support for VBScript. This means that where client-side scripting and cross-browser compatibility are required, developers usually choose JavaScript over most other programming languages, such as VBScript.

VBScript is also used for server-side processing of web pages, most notably with Microsoft Active Server Pages (ASP). The ASP engine and type library, asp.dll, invokes vbscript.dll to run VBScript scripts. VBScript that is embedded in an ASP page is contained within <% and %> context switches. The following example of an ASP page with VBScript displays the current time in 24-hour format, but it is also used as the default script for error messages with the Windows operating systems.

 <% Option Explicit %>
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 <html>
 	<head>
 		<title>VBScript Example</title>
 	</head>
 	<body>
 		<div><% 
 			' Grab current time from Now() function.
 			' An '=' sign occurring after a context switch (<%) is shorthand 
 			' for a call to the Write() method of the Response object.
 			Dim timeValue : timeValue = Now %>
 			The time, in 24-hour format, is 
 			<%=Hour(timeValue)%>:<%=Minute(timeValue)%>:<%=Second(timeValue)%>.
 		</div>
 	</body>
 </html>

VBScript can also be used to create applications that run directly on a workstation running Microsoft Windows. The simplest example is a script that makes use of the Windows Script Host (WSH) environment. Such a script is usually in a stand-alone file with the file extension .vbs. The script can be invoked in two ways: Wscript.exe is used to display output and receive input through a GUI, such as dialog and input boxes. Cscript.exe is used in a command line environment.

VBScript can be included in two other types of scripting files: Windows Script Files, and HTML Applications.

A Windows Script File (WSF) is styled after XML. A WSF file can include multiple VBS files. As a result, WSF files provide a means for code reuse: a library of classes or functions can be stored in one or more .vbs files, which can be included in .wsf files, so the functionality can be reused in a modular way. The files have extension .wsf and can be executed using wscript.exe or cscript.exe, just as a .vbs file can.

An HTML Application (HTA) is styled after HTML. The HTML in the file is used to generate the user interface, and a scripting language such as VBScript is used for the program logic. The files have extension .hta and can be executed using mshta.exe.

VBScript (and JScript) can also be used in a Windows Script Component, an ActiveX-enabled script class that can be invoked by other COM-enabled applications.[10] These files have extension .wsc.

VBScript is simple to create and can be coded using an easy to use text editor like Notepad. A simple VBScript saved by the .vbs extension can be run on a Windows system by double clicking it.

Functionality[edit]

Language features[edit]

The language of VBScript is modeled on Visual Basic, and therefore can be reviewed using similar categories: procedures, control structures, constants, variables, user interaction, array handling, date/time functions, error handling, mathematical functions, objects, regular expressions, string manipulation, and so on.[11]

The following are some key points of introduction to the VBScript language by Microsoft

A «procedure» is the main construct in VBScript for separating code into smaller modules. VBScript distinguishes between a function, which can return a result in an assignment statement, and a subroutine, which cannot. Parameters are positional, and can be passed by value or by reference.

Control structures include the usual iterative and conditional Do Loops, If-Then-Else statements, and Case statements, with some more complex variants, such as ElseIf and nested control structures.

As a memory aid in coding, and certainly for readability, there are a large number of constants, such as True and False for logical values, vbOKCancel and vbYesNo for MsgBox codes, vbBlack and vbYellow for color values, vbCR for the carriage return character, and many others.

Variables have «Variant» type by default, but it is possible (and sometimes necessary) to force a particular type (integer, date, etc.) using conversion functions (CInt, CDate, etc.)

User interaction is provided through the functions MsgBox and InputBox which provide a simple dialogue box format for messages and input. Both functions display prompting messages, with the former returning a standard response, and the latter returning one user-supplied text or numeric value. For more elaborate GUI interaction with controls, VBScript can be used in combination with HTML, for example, in an HTML Application. Event-driven forms are not supported as in Visual Basic or Visual Basic for Applications.

Names are not case-sensitive. However, it is considered a best practice of VBScript style to be consistent and to capitalize judiciously.

VBScript functionalities[edit]

When hosted by the Windows Script Host, VBScript provides numerous features which are common to scripting languages, but not available from Visual Basic 6.0. These features include direct or easy access to:

  • Named and unnamed command line arguments,
  • Stdin and stdout, which could be redirected,
  • WSH.Echo which writes to the console and cannot be redirected,
  • WSH.ExitCode which can be tested from DOS batch files, or by the process which invoked the script file,
  • Network Printers,
  • Network Shares,
  • Special Folders, e.g. Desktop, Favorites, MyDocuments and so on,
  • Network user information, such as group membership,
  • Methods for runtime execution of text defined at runtime: Eval and Execute,
  • Methods for executing scripts on remote machines,
  • Windows Management Instrumentation (WMI)
  • Functionality for embedding a VBScript engine in other applications, using a widely known language.

CScript, the command line runner, provides options for:

  • Interactive or Batch Mode,
  • Invoking Debug Mode from the command line,
  • Error reporting including the line number.

Additional functionality[edit]

File system management, file modification, and streaming text operations are implemented with the Scripting Runtime Library scrrun.dll. This provides objects such as FileSystemObject, File, and TextStream, which expose the Windows file system to the programmer.

Binary file and memory I/O are provided by the «ADODB.Stream» class, which can also be used for string builders (to avoid excessive string concatenation, which can be costly), and to interconvert byte arrays and strings. Database access is made possible through ActiveX Data Objects (ADO), and the IIS Metabase can be manipulated using the GetObject() function with sufficient permissions (useful for creating and destroying sites and virtual directories). XML files and schemas can be manipulated with the Microsoft XML Library Application Programming Interfaces (msxml6.dll, msxml3.dll), which also can be used to retrieve content from the World Wide Web via the XMLHTTP and ServerXMLHTTP objects (class strings «MSXML2.XMLHTTP.6.0» and «MSXML2.ServerXMLHTTP.6.0», respectively).

Functionality can also be added through ActiveX technologies. Security concerns have led to many ActiveX controls being blacklisted in the Internet Explorer process by Microsoft, which deploys the killbit via monthly Windows security updates to disable vulnerable Microsoft and third party code.[12][13]

Programmers can utilize the extensibility via COM (ActiveX) modules to specifically equip the Script Host and VBScript with required or desired functions. The «VTool» component, for instance, adds a number of dialog windows, binary file access, and other functionality.[14]

Development tools[edit]

Microsoft does not routinely make available an IDE (Integrated Development Environment) for VBScript, although the Microsoft Script Editor has been bundled with certain versions of Microsoft Office.

For debugging purposes the Microsoft Script Debugger can still be used in current Windows versions, even though the tool has not been updated in years. It allows the user to set break points in the VBScript code but the user interface is more than clumsy.

There are VBScript debuggers available from third-party sources,[15][16] and many text editors offer syntax highlighting for the language.

During execution, when an error occurs, the script host issues a message stating the type of error and the number of the offending line.

Uses[edit]

Although VBScript is a general-purpose scripting language, several particular areas of use are noteworthy. First, it used to be widely used among system administrators in the Microsoft environment.[17], but it has since been vastly surpassed by PowerShell. Second, VBScript is the scripting language for Micro Focus Unified Functional Testing, a test automation tool.[18] A third area to note is the adoption of VBScript as the internal scripting language for some embedded applications, such as industrial operator interfaces and human machine interfaces. The hierarchical DBMS InterSystems Caché (which has its roots in the language MUMPS) also supports an implementation of VBScript, Cache BASIC, for programming stored code.[19]

VBScript omits several useful features of the full Visual Basic, such as strong typing, extended error trapping and the ability to pass a variable number of parameters to a subroutine. However, its use is relatively widespread because it is easy to learn and because those who implement code in the language need not pay royalties to Microsoft as long as the VBScript trade mark is acknowledged.[citation needed] When an organization licenses Visual Basic for Applications (VBA) from Microsoft, as companies such as Autodesk, StatSoft, Great Plains Accounting and Visio (subsequently acquired by Microsoft) have done, it is allowed to redistribute the full VBA code-writing and debugging environment with its product.

VBScript is used in place of VBA as the macro language of Outlook 97.

VBScript can be effectively used for automating day to day office tasks as well as monitoring in the Windows-based environment. It can also be used in collaboration with ADODB ActiveX Data Objects (ADODB) for effective database connectivity.

VBScript can also be used to create malware and viruses, such as the ILOVEYOU worm that spread through email attachment in Outlook 97 that cost billions of dollars.

See also[edit]

  • AppleScript
  • FastTrack Scripting Host
  • HTML Components
  • JavaScript
  • JScript .NET
  • JScript
  • PerlScript
  • Windows PowerShell
  • Windows Script File

References[edit]

  1. ^ WSH Version Information, on MSDN
  2. ^ VBScript Version Information, on MSDN
  3. ^ What is VBScript?, in MSDN Library
  4. ^ 86-DOS
  5. ^ «The History of Visual Basic». www.johnsmiley.com.
  6. ^ Visual Basic Scripting Edition: With Statement, on MSDN
  7. ^ GetRef Function, on MSDN
  8. ^ Visual Basic Scripting Edition: SubMatches Collection, on MSDN
  9. ^ What About VBScript?, within the article Introducing JScript .NET by Andrew Clinick of Microsoft Corporation, in Scripting Clinic on MSDN (July 14, 2000)
  10. ^ Introducing Windows Script Components, on MSDN
  11. ^ «VBScript Features». msdn.microsoft.com.
  12. ^ «How to stop an ActiveX control from running in Internet Explorer». Microsoft. 2007-08-24. Retrieved 2009-06-29.
  13. ^ «Microsoft Security Advisory (960715): Update Rollup for ActiveX Kill Bits». Microsoft. 2009-01-17. Retrieved 2009-06-29.
  14. ^ «VTool» script component – GUI and functional enhancements for WSH/VBS
  15. ^ «VbsEdit — VBScript Editor with Debugger — VBS Editor». www.vbsedit.com.
  16. ^ Corp., Spline Technologies. «SplineTech VBS Debugger, VBScript Debugger. Debug VBS». www.remotedebugger.com.
  17. ^ Script Center, Microsoft web site targeting system administration scriptors
  18. ^ «Quick Test Professional – Basics of VBScript«.
  19. ^ «Caché for Unstructured Data Analysis». InterSystems. Retrieved 2018-09-24.

External links[edit]

Wikimedia Commons has media related to VBScript.

  • VBScript Language Reference, Microsoft Docs
  • Is VBScript Dead?, isvbscriptdead.com
  • VBScript Commands, ss64.com
  • VBScript How-to guides and examples, ss64.com
  • WMI Overview, Microsoft TechNet

Visual Basic Scripting Edition (обычно просто VBScript) — скриптовый язык программирования, интерпретируемый компонентом Windows Script Host. Он широко используется при создании скриптов в операционных системах семейства Microsoft Windows.

VBScript был создан компанией Microsoft как замена устаревшему пакетному языку, интерпретируемому приложением command.com.

Содержание

  • 1 Область применения
  • 2 Правила языка
  • 3 Переменные
  • 4 Объекты, их методы и свойства
  • 5 Пример
  • 6 См. также
  • 7 Ссылки

Область применения

Скрипты на языке VBScript чаще всего используются в следующих областях, использующих продукцию Microsoft:

  • автоматизация администрирования систем Windows;
  • серверный программный код в страницах ASP;
  • клиентские скрипты в браузере Internet Explorer.

Такой тип сценариев обычно используется для:

  • создания сложных сценариев;
  • использования объектов из других приложений и библиотек;
  • скрытия окон в ходе выполнения сценария;
  • шифрования логики сценария.

В основном VBS-сценарии применяются для обработки данных, управления системой, работы с учетными записями пользователей и компьютеров, взаимодействия с офисными приложениями, работы с базами данных и прочих сложных задач.

VBS-сценарий — это обычный текстовый файл с расширением *.vbs, который легко править в блокноте, а запускать на исполнение — двойным щелчком мыши или вызовом по имени в консоли.

Сценарии не компилируются, а интерпретируются. То есть для обработки скрипта в системе должен присутствовать интерпретатор языка VBS, и таких интерпретаторов в Windows два: оконный WScript и консольный CScript, оба интерпретатора это Windows Script Host (WSH).

Правила языка

В Visual Basic работают следующие правила:

  • длина строки не ограничена;
  • регистр символов не учитывается;
  • количество пробелов между параметрами не учитывается;
  • строку команды можно разрывать, а на месте разрыва нужно вставлять символ » _ «;
  • максимальная длина имени переменной 255 символов;
  • комментарии обозначаются символом » ‘ «.
  • несколько строк можно объединять в одну, предварительно разделив их символом » : «

Переменные

По умолчанию переменные в сценариях объявляются автоматически при первом использовании в теле скрипта, если это не запрещено директивой Option Explicit. Если же в начале сценария объявить директиву Option Explicit, то все переменные нужно определять заранее с помощью следующих конструкций:

Dim ValueName1 ' переменная, доступная всем подпрограммам;
Public ValueName2 ' переменная, доступная всем подпрограммам;
Private ValueName3 ' переменная, доступная только текущей программе и ее подпрограммам;

Константы объявляются в начале сценария с помощью конструкции:

Const ConstName1 = Value1 ' константа, доступная всем подпрограммам;
Public Const ConstName2 = Value2 ' константа, доступная всем подпрограммам;
Private Const ConstName3 = Value3 ' переменная, доступная только текущей программе и ее подпрограммам;

Тип переменной присваивается автоматически после внесения в неё первого значения. В Visual Basic существуют следующие типы данных:

  • empty — неинициализированная переменная;
  • null — пустая переменная;
  • boolean — логический тип, возможные значения: False, True или 0, 1;
  • byte — 8-битное целое число без знака, возможные значения: 0 .. 255;
  • integer — 16-битное целое число, возможные значения: −32768 .. 32767;
  • long — 32-битное целое число, возможные значения: −2147483648 .. 2147483647;
  • currency — денежный тип, возможные значения: −922337203685477,5808 до 922337203685477,5807;
  • single — число с плавающей точкой, возможные значения: −3.402823e38 .. −1.401298e-45 для отрицательных чисел и 1.401298e-45 .. 3.402823e38 для положительных чисел;
  • double — число с плавающей точкой, возможные значения: −1.79769313486232e308 .. −4.94065645841247e-324 для отрицательных чисел и 4.94065645841247e-324 .. 1.79769313486232e308 для положительных чисел;
  • date — дата, возможные значения: 01.01.1900 .. 31.01.9999;
  • string — строковая переменная, вместимость до 2 миллиардов символов;
  • object — указатель на объект;
  • error — код ошибки.

В VBS-сценариях возможно использование массивов переменных, которые позволяют хранить списки, таблицы и даже более сложные конструкции. Одномерные массивы (списки) могут быть динамическими, то есть они позволяют изменять свой размер в ходе работы сценария. Все массивы объявляются командой Dim:

Объекты, их методы и свойства

VBScript, как и их родитель — язык Visual Basic, является объектно-ориентированным языком программирования, то есть основной концепцией является понятие объектов и классов

Класс — это тип, описывающий устройство объектов. Объект подразумевает под собой нечто, что обладает определённым поведением и способом представления, объект — это экземпляр класса. Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области.

Все объекты, с которыми работает Windows Script Host, имеют методы и свойства. Чтобы обратиться к методу, необходимо указать объект, а через точку — метод с необходимыми параметрами.

Аналогичная ситуация со свойствами, но свойства можно как назначать, так и считывать в переменные и другие свойства, правда, следует учитывать тип данных переменных и свойств, иначе сценарий выдаст ошибку несовместимости типов данных.

Пример

Вот пример небольшой программы на языке VBScript, которая выводит диалоговое окно с сообщением (символы после знака апостроф являются комментариями):

 ' Объявление переменной:
 Dim strMessage
 ' Присваивание переменной значения:
 strMessage = "Википедия — свободная энциклопедия"
 ' Вывод окна с сообщением:
 MsgBox strMessage

По эффекту работы она аналогична прямой инструкции

MsgBox "Википедия — свободная энциклопедия"

См. также

  • Visual Basic for Applications
  • JScript — альтернативный скриптовый язык, созданный компанией Microsoft на основе EcmaScript

Ссылки

  • VBScript (англ.) — Руководство по VBScript от Майкрософт.
  • The Script Center Script Repository (англ.) — Коллекция скриптов на VBScript от Майкрософт.
  • Форум по Visual Basic и VBS — русскоязычный форум посвящённый программированию на Visual Basic 6.0 и VBA, .Net, VBS, ASP.Net.
  • Visual Basic FAQ — База готовых кодов на Visual Basic. Часто задаваемые вопросы.
  • [1] — Плейлист на YouTube с кратким обучением VBS
  • [2] — Русскоязычный ресурс, посвященный программированию на различных макроязыках и в скриптовых средах, в том числе и в VBSE.
  • [3] — CHM-файл справки на русском языке описывает свойства и методы объектов Windows Script Host, а также некоторых других объектов OLE Automation.
 Просмотр этого шаблона Компоненты Microsoft Windows
Основные

Aero • ClearType • Диспетчер рабочего стола • DirectX • Панель задач (Пуск • Область уведомлений) • Проводник (Пространство имён • Специальные папки • Ассоциации файлов) • Windows Search (Smart folders • iFilters) • GDI • WIM • SMB • .NET Framework • XPS • Active Scripting (WSH • VBScript JScript) • COM (OLE • DCOM • ActiveX • Структурированное хранилище • Сервер транзакций) • Теневая копия • WDDM • UAA • Консоль Win32

Службы
управления

Архивация и восстановление • COMMAND.COM • cmd.exe • Средство переноса данных • Просмотр событий • Установщик • netsh.exe • PowerShell • Отчёты о проблемах • rundll32.exe • Программа подготовки системы (Sysprep) • Настройка системы (MSConfig) • Проверка системных файлов • Индекс производительности • Центр обновления • Восстановление системы • Дефрагментация диска • Диспетчер задач • Диспетчер устройств • Консоль управления • Очистка диска • Панель управления (элементы)

Приложения

Контакты • DVD Maker • Факсы и сканирование • Internet Explorer • Журнал • Экранная лупа • Media Center • Проигрыватель Windows Media • Программа совместной работы • Центр устройств Windows Mobile • Центр мобильности • Экранный диктор • Paint • Редактор личных символов • Удалённый помощник • Распознавание речи • WordPad • Блокнот • Боковая панель • Звукозапись • Календарь • Калькулятор • Ножницы • Почта • Таблица символов • Исторические: Movie Maker • NetMeeting • Outlook Express • Диспетчер программ • Диспетчер файлов • Фотоальбом

Игры

Chess Titans • Mahjong Titans • Purble Place • Пасьянсы (Косынка • Паук • Солитер) • Сапёр • Пинбол • Червы

Ядро ОС

Ntoskrnl.exe • Слой аппаратных абстракций (hal.dll) • Бездействие системы • svchost.exe • Реестр • Службы • Диспетчер управления сервисами • DLL (формат модулей) • PE • NTLDR • Диспетчер загрузки • Программа входа в систему (winlogon.exe) • Консоль восстановления • Windows RE • Windows PE • Защита ядра от изменений

Службы

Autorun.inf • Фоновая интеллектуальная служба передачи • Файловая система стандартного журналирования • Отчёты об ошибках • Планировщик классов мультимедиа • Теневая копия • Планировщик задач • Беспроводная настройка

Файловые
системы

ReFS • NTFS (Жёсткая ссылка • Точка соединения • Точка монтирования • Точка повторной обработки • Символьная ссылка • TxF • EFS) • WinFS • FAT • exFAT • CDFS • UDF • DFS • IFS

Сервер

Active Directory • Службы развёртывания • Служба репликации файлов • DNS • Домены • Перенаправление папок • Hyper-V • IIS • Media Services • MSMQ • Защита доступа к сети (NAP) • Службы печати для UNIX • Удалённое разностное сжатие • Службы удаленной установки • Служба управления правами • Перемещаемые профили пользователей • SharePoint • Диспетчер системных ресурсов • Удаленный рабочий стол • WSUS • Групповая политика • Координатор распределённых транзакций

Архитектура

NT • Диспетчер объектов • Пакеты запроса ввода/вывода • Диспетчер транзакций ядра • Диспетчер логических дисков • Диспетчер учетных записей безопасности • Защита ресурсов • lsass.exe • csrss.exe • smss.exe • spoolsv.exe • Запуск

Безопасность

BitLocker • Защитник • Предотвращение выполнения данных • Обязательный контроль целостности • Защищенный канал данных • UAC • UIPI • Брандмауэр • Центр обеспечения безопасности • Защита файлов

Совместимость

Подсистема UNIX (Interix) • Виртуальная машина DOS • Windows on Windows • WOW64

 Просмотр этого шаблона API и фреймворки Microsoft
Графика Desktop Window Manager · Direct2D · Direct3D (extensions)  · GDI / GDI+ · WPF · Windows Color System · Windows Image Acquisition · Windows Imaging Component
Аудио DirectMusic · DirectSound · DirectX plugin · XACT · Speech API  · XAudio2
Мультимедиа DirectX (Media Objects · Video Acceleration) · DirectInput · DirectShow · Image Mastering API · Managed DirectX · Media Foundation · XNA · Windows Media  · Video for Windows
Web MSHTML · RSS Platform · JScript · VBScript · BHO · XDR · SideBar Gadgets
Доступ к данным Data Access Components · Extensible Storage Engine · ADO.NET · ADO.NET Entity Framework · Sync Framework · Jet Engine · MSXML · OLE DB · OPC
Сеть Winsock (LSP) · Winsock Kernel · Filtering Platform · Network Driver Interface Specification · Windows Rally · BITS · P2P API · MSMQ · MS MPI · DirectPlay
Коммуникации Messaging API · Telephony API · WCF

Администрирование и
управление

Win32 console · Windows Script Host · WMI (extensions) · PowerShell · Task Scheduler · Offline Files · Shadow Copy · Windows Installer · Error Reporting · Event Log · Common Log File System
Компонентная модель COM · COM+ · ActiveX · Distributed Component Object Model · .NET Framework
Библиотеки Base Class Library (BCL) · Microsoft Foundation Classes (MFC) · Active Template Library (ATL) · Windows Template Library (WTL)
Драйверы устройств Windows Driver Model  · Windows Driver Foundation (KMDF · UMDF) · WDDM · NDIS · UAA · Broadcast Driver Architecture  · VxD
Безопасность Crypto API (CAPICOM) · Windows CardSpace · Data Protection API · Security Support Provider Interface (SSPI)
.NET ASP.NET · ADO.NET · Base Class Library (BCL) · Remoting · Silverlight · TPL · WCF · WCS · WPF · WF
Программное обеспечение EFx Factory · Enterprise Library · Composite UI · CCF · CSF
IPC MSRPC · Dynamic Data Exchange (DDE)  · Remoting · WCF
Доступность Active Accessibility · UI Automation

Текст и многоязная
поддержка

DirectWrite · Text Services Framework · Text Object Model · Input method editor · Language Interface Pack · Multilingual User Interface · Uniscribe

Боб Уэллс Консультант по программному обеспечению; специализируется на вопросах проектирования и реализации инфрастуктуры информационных систем, основанных на NT. Имеет сертификаты MCSE и MCT. С ним можно связаться по адресу bobwells@winntmag.com.

Вэтой статье я расскажу о задачах, решение которых можно автоматизировать при помощи Windows Scripting Host (WSH) 1.0. До сих пор я почти не уделял внимания фундаментальным основам WSH. Поскольку я получаю по электронной почте многочисленные вопросы о WSH и Visual Basic Scripting Edition (VBScript), многим системным администраторам, думаю, будет полезной базовая информация о сценариях.

В нескольких последующих статьях я сделаю шаг назад, чтобы обсудить некоторые основы WSH-сценариев. Чтобы заинтересовать и опытных пользователей, я дам ряд полезных советов, а также напишу о WSH 2.0.

В чем причина затруднений?

WSH может казаться трудным в изучении по ряду причин. Большинство трудностей, на мой взгляд, связано с нехваткой качественных источников информации. WSH пока является новой технологией, и по мере ее совершенствования, я надеюсь, будут появляться хорошие документы. Ну а пока за сведениями о WSH обращайтесь к публикациям и Web-узлам, перечисленным во врезке «Источники информации о Win32-сценариях».

Еще один фактор, затрудняющий изучение WSH — большое количество на первый взгляд несвязанных технологий, которые необходимо освоить, чтобы заставить WSH-сценарии выполнять различные функции. Например, чтобы написать сценарий, определяющий название группы, к которой принадлежит пользователь, необходимо знать что-то о WSH, VBScript или JScript, а также о Active Directory Service Interfaces (ADSI). Гораздо меньше знаний понадобится, чтобы выполнить ту же самую задачу с помощью специализированного языка сценариев под названием KiXtart, языка пакетных файлов или утилиты вроде Ifmember из NT Server 4.0 Resource Kit.

Сложность не только в том, что WSH нередко требует знания нескольких скриптовых технологий; поскольку они частично перекрывают друг друга, приходится выбирать, которую же использовать для выполнения того или иного задания. Например, и ADSI, и Windows Management Instrumentation (WMI) — реализация Web-Based Enterprise Management (WBEM), предложенная Microsoft, — обеспечивают доступ к службам NT через интерфейсы автоматизации. Если вы хотите запускать и останавливать сервисы на NT-сервере при помощи WSH, вам необходимо решить, чем пользоваться — WMI или ADSI.

Учитывая нехватку документации по WSH и разнообразие технологий, которые в WSH-сценариях могут быть задействованы, новая модель Windows-сценариев Microsoft действительно может показаться сложноватой. Однако приложив некоторые усилия к изучению WSH, с его помощью вы сможете достигнуть гораздо большего, чем за счет любой другой технологии. Поверьте — знания, которые вы приобретете, будут стоить затраченных усилий.

В серии статей об основах WSH я намерен рассказывать о сценариях VBScript. WSH-сценарии становятся все распространеннее в Internet, и большинство из них написаны на VBScript. Кроме того, примеры WSH-сценариев, сопровождающие некоторые продукты и технологии Microsoft (в частности, комплект средств разработки ПО для ADSI, Internet Information Server , Site Server, комплект средств разработки для WBEM), написаны на VBScript. VBScript 5.0 можно загрузить с Web-узла Microsoft по адресу http://msdn.microsoft.com/scripting/vbscript/default.htm). В первой статье серии «Основы WSH» я расскажу, как писать сценарии на VBScript, как заставить несколько скриптов выполнять общую задачу и как структурировать сценарии VBScript.

VBS-файл

WSH-сценарии на VBScript — это обычные текстовые файлы ASCII с расширением .vbs. Создавать файлы на VBScript можно в любом текстовом редакторе, способном сохранять документы в формате «только текст» (например, в Visual Notepad, Visual InterDev). Конечно, содержимое такого файла должно представлять собой корректный код на VBScript. По размеру сценарии могут разниться от одной до тысяч строк. Единственное ограничение на размер сценариев — лимит, налагаемый операционной системой. На системах с NT максимальный размер сценариев на VBScript ограничивается предельным размером файла. (Чтобы убедиться в том, что WSH способен выполнять большие сценарии, я создал сценарий длиной более чем в 25 тыс. строк; он работал безупречно.)

Хотя WSH не налагает ограничений на размер файла, WSH-сценарии в текущей версии не могут располагаться более чем в одном файле. WSH 1.0 не поддерживает включаемые файлы — файлы, содержащие процедуры, которые могут быть запущены на выполнение из основного сценария. Это ограничение можно обойти несколькими путями. Можно использовать метод Run объекта WSH Shell для запуска внешних сценариев (как и любых других внешних команд). Но проблема в том, что два сценария не могут использовать одно и то же именное пространство, то есть не имеют взаимного доступа к переменным и процедурам друг друга.

ЛИСТИНГ 1: include.vbs

Sub Usage(str)
	WScript.Echo str
End Sub

В VBScript 5.0 имеется команда Execute, используя которую можно более удачно обойти отсутствие включаемых файлов. Execute имеет один аргумент строчного типа — выполняемую команду. Поскольку Execute исполняет заданную аргументом команду внутри сценария, этот аргумент должен содержать код на VBScript. Благодаря этому Execute можно использовать для задания подпрограмм во внешних файлах, считывания их в выполняемом сценарии и последующего вызова из него. Приведу пример.

В листинге 1 приведен сценарий include.vbs, в листинге 2 — main.vbs. Include.vbs содержит подпрограмму под названием Usage с одним аргументом строчного типа. Содержимое этой строки подпрограмма выводит на экран при помощи метода Wscript.Echo.

ЛИСТИНГ 2: main.vbs

Dim objFileSystem, objTextStream, strCode

Set objFileSystem = CreateObject(?Scripting.FileSystemObject?)
Set objTextStream = objFileSystem.OpenTextFile(?include.vbs?, 1)
strCode = objTextStream.ReadAll
objTextStream.Close

Execute strCode
Call Usage(?The Usage subroutine is defined in include.vbs.?) 

Main.vbs считывает в переменную strCode содержимое подпрограммы Usage из файла include.vbs, а затем вызывает ее. Для создания ссылки на объект TextStream, являющийся указателем на файл include.vbs, используется метод OpenTextFile объекта VBScript FileSystemObject. Затем с помощью метода TextStream.ReadAll содержимое файла include.vbs помещается в переменную strCode.

После этого main.vbs передает переменную strCode в качестве аргумента команде Execute, которая таким образом делает подпрограмму Usage частью сценария main.vbs. В последней строке сценария вызывается подпрограмма Usage, которой в качестве аргумента передается строка для вывода на экран. На экране 1 показан результат запуска main.vbs.

Экран 1: Результат работы сценария main.vbs

Хотя вызов Usage, на первый взгляд, обращается к подпрограмме, находящейся в другом файле, на самом деле это не так. Подпрограмма Usage становится частью именного пространства main.vbs, как только этот сценарий передает строку с ее кодом команде Execute. Поэтому не забывайте, что подпрограмму с названием, соответствующим имени одной из процедур, уже использующихся в сценарии, «затаскивать» в него из другого файла нельзя (если, конечно, вы не хотите динамически модифицировать код процедуры).

В WSH 2.0 появится поддержка включаемых файлов и возможность создания библиотек часто используемых функций и подпрограмм, к которым можно осуществлять доступ из других сценариев независимо от языка, на котором они написаны. WSH 2.0 позволит также вызывать функции JSсript из программ на VBScript и наоборот.

Структурирование кода

Одна из приятных особенностей языков сценариев в том, что они предусматривают очень мало обязательных правил форматирования, структурирования и расположения блоков. Между тем подобная гибкость может смутить администраторов, впервые столкнувшихся со сценариями.

Способов структурирования сценариев столько же, сколько и разработчиков. Однако хотя правил форматирования в языках сценариев действительно немного, имеет смысл применять один и тот же способ структурирования во всех своих сценариях. Используете ли вы шаблоны для ваших сценариев или просто придерживаетесь определенной методологии, соблюдение единообразия поможет ускорить процесс разработки, сделает сценарии более простыми в использовании и упростит отладку.

Я делю мои WSH-сценарии на три секции: секция декларации и инициализации, тело сценария, секция задания функций и процедур. В первую секцию я помещаю директивы интерпретатора, декларации переменных, а также код инициализации констант и переменных. Команды сценария и код, управляющий его поведением, я располагаю во второй секции. В теле сценария я помещаю в память и использую объекты, вызываю методы, устанавливаю свойства, обращаюсь к процедурам и функциям. Наконец, секция функций и процедур в конце сценария у меня предназначена для разделения кода на блоки. Здесь помещаются части кода, которые используются внутри сценария по нескольку раз.

Из трех введенных мною секций сценария обязательно лишь тело. Чтобы сценарий действительно был сценарием, он должен содержать по меньшей мере одну корректную команду. Однако VBScript не требует обязательного определения и инициализации переменных перед использованием; не требуется также и обязательное разделение кода на процедуры и функции. Способ структурирования сценариев вы выбираете самостоятельно. Я помещаю определения и инициализации в начале сценария, чтобы было проще читать и исправлять код; но кроме такого подхода существуют и другие. Некоторые разработчики, например, задают все процедуры и функции в начале сценария. Другие задают каждую процедуру непосредственно перед первым ее вызовом. (В нескольких примерах сценариев, сопровождающих WSH 1.0, используется именно такая структура.)

В следующей статье серии я каждую из трех своих секций опишу в подробностях. А пока вы можете обратиться ко врезке «Источники информации о Win32-сценариях». Велика вероятность, что вы узнаете что-то новое.


Источники информации о Win32-сценариях

В настоящее время количество источников информации об использовании Windows Scripting Host (WSH) невелико. Ниже перечислены Web-узлы и публикации (уже имеющиеся или готовящиеся к выпуску), которые могут оказаться полезными.

Книги по WSH

  • Gunter Born, Windows Scripting Host Tutorial (Wrox Press). Дальнейшие сведения можно получить на Web-узле www.wrox.com.
  • Thomas Fredell, SAMS Teach Yourself Windows Scripting Host in 21 days (SAMS).
  • Dan Gookin, Introducing Windows Scripting Host for Windows 98 (Microsoft Press).

Книги по VBScript и JScript

Такие книги выходят во многих издательствах, в частности в Microsoft Press (http://mspress.microsoft.com), O?Reilly & Associates (www.oreilly.com), Wrox Press.

К сожалению, во всех книгах, выпускаемых перечисленными издательствами, языки сценариев описываются в контексте Web-программирования. Чтобы найти нужные издания, посетите Web-узлы издательств и выполните поиск по ключевым словам VBScript и JScript.

Другие книги

Не забывайте, что основное назначение WSH — интеграция компонентов автоматизации COM — ADO, Active Directory Service Interfaces (ADSI), Collaboration Data Objects (CDO), Windows Management Administration (WMI) и Microsoft Office. Поэтому источники информации по этим технологиям также могут оказаться полезными при написании WSH-сценариев.

Ниже перечислены книги, которые могли бы выполнить роль таких источников.

  • David Sussman and Alex Homer, ADO 2.0 Programmer?s Reference (Wrox Press).
  • Steven Hahn, ADSI ASP Programmer?s Reference (Wrox Press).
  • Mikael Freidlitz and Todd Mondor, ADSI CDO Programming with ASP (Wrox Press).

Хотя в этих книгах о программировании рассказывается применительно к разработке Web-приложений, приведенные там примеры сценариев можно с легкостью адаптировать для использования в среде WSH.

  • Win32 Scripting Journal
  • Windows NT Magazine издает Win32 Scripting Journal, 16-страничный бюллетень, посвященный исключительно теме сценариев для Win32. Дальнейшую информацию об этом издании можно получить по адресу www.winntmag.com/newsletter/scripting.

Web-узлы

Полезную информацию о WSH-сценариях можно получить на многих Web-узлах. В частности, на узле Microsoft Windows Script Technologies (http://msdn.microsoft.com/scripting) имеются доклады и статьи по WSH, VBScript, JScript и смежным технологиям.

С Web-узла можно загрузить документацию Microsoft по двум языкам WSH-скриптов. Документация по JScript представляет собой скомпилированный в 32-разрядный исполняемый код файл подсказки в формате HTML под названием vbsdoc.exe. На Web-узле можно также получить доступ к документу WSH Programmer Reference (справочник по программированию WSH) — http://www.microsoft.com/management/wshobj.htm.

Электронная библиотека Microsoft Developer Network (MSDN) содержит подробную информацию об объектах автоматизации, которые может вызывать WSH, в том числе об объектах ADO, ADSI, CDO и WMI. Библиотека MSDN находится по адресу http://msdn.microsoft.com/developer/default.htm.

Возможно, вы найдете полезным курс Microsoft для самостоятельного изучения № 1080 под названием «Основы Microsoft Visual Basic Scripting Edition 3.0 для разработки Web-узлов». Чтобы получить курс, загрузите файл 1080_web.exe по адресу http://www.microsoft.com/train_cert/courses/enm1080a.htm. Хотя из названия следует, что курс предназначен для обучения разработке Web-узлов, один из его разделов посвящен WSH-сценариям.

Информация о WSH-сценариях имеется также на ряде независимых Web-узлов. Сведения о WSH можно найти по адресу http://wsh.glazier.co.nz. О сценариях среды Win32 можно почитать на узле http://cwashington.netreach.net. Вспомогательные продукты, работающие с WSH, предлагаются на узле http://www.netal.com.

Последнее в этой врезке, но конечно же далеко не последнее по значимости: ценность поисковых механизмов Web трудно переоценить. Введите в любимой поисковой машине ключевые слова Windows Scripting Host, и вы получите массу ссылок. Если найдете что-нибудь особенно полезное, не забудьте сообщить мне.

Аннотация: Обсуждаются назначение и основные свойства сервера сценариев Windows Script Host (WSH). Описываются консольный и графический режимы работы сценариев WSH. Затрагиваются вопросы выбора языка для написания сценариев WSH

Сервер сценариев WSH. Языки сценариев VBScript и JScript

В двух предыдущих лекциях был рассмотрен язык командных файлов (язык командной оболочки), который в качестве инструмента для автоматизации работы поддерживается во всех версиях Windows. Однако с помощью командного интерпретатора cmd.exe трудно написать какую-либо сложную программу-сценарий (script): отсутствует полноценная интерактивность, нельзя напрямую работать с рабочим столом Windows и системным реестром и т. д.

Для исправления этой ситуации компанией Microsoft был разработан сервер сценариев Windows Script Host (WSH), с помощью которого можно выполнять сценарии, написанные, в принципе, на любом языке (при условии, что для этого языка установлен соответствующий модуль (scripting engine), поддерживающий технологию ActiveX Scripting). В качестве стандартных языков поддерживаются Visual Basic Script Edition (VBScript) и JScript.

Вообще говоря, принцип работы сценариев, поддерживаемых WSH, состоит в использовании объектов ActiveX, поэтому вначале мы очень кратко опишем возможности самой технологии ActiveX компании Microsoft.

Возможности технологии ActiveX

Напомним, что в Windows с самого начала для обеспечения обмена данными между приложениями была разработана технология связывания и внедрения объектов (Object Linking and Embedding, OLE). Вначале технология OLE использовалась для создания составных документов, а затем для решения более общей задачи — предоставления приложениями друг другу собственных функций (служб) и правильного использования этих функций. Технология, позволяющая одному приложению (клиенту автоматизации) вызывать функции другого приложения (сервера автоматизации) была названа OLE Automation. В основе OLE и OLE Automation лежит разработанная Microsoft базовая «компонентная» технология Component Object Model (COM). В общих словах, компонентное программное обеспечение — это способ разработки программ, при котором используются технологии создания программных модулей, подобные технологиям, применяемым для разработки аппаратных средств. Сложные элементные схемы собираются из стандартизированных микросхем, которые имеют четко определенные документированные функции. Разработчик может эффективно пользоваться такими микросхемами, не задумываясь об их внутренней структуре. В программных компонентах, написанных на каком-либо языке программирования, детали реализации используемых алгоритмов также скрыты внутри компонента (объекта), а на поверхности находятся общедоступные интерфейсы, которыми могут пользоваться и другие приложения, написанные на том же или другом языке.

В настоящее время термин OLE используется только по историческим причинам. Вместо него Microsoft с 1996 года использует новый термин — ActiveX, первоначально обозначавший WWW (World Wide Web) компоненты (объекты), созданные на базе технологии COM.

Технология ActiveX длительное время являлась ключевой в продуктах Microsoft. Наиболее полное воплощение она нашла в программах Microsoft Office, Internet Explorer, Internet Information Service (IIS). В эти продукты для управления соответствующими объектами автоматизации были встроены интерпретаторы специальных языков сценариев: VBScript (используется в Microsoft Office, Internet Explorer, IIS) и JScript (используется в Internet Explorer, IIS). Однако непосредственно в операционной системе, вне этих продуктов, выполнять сценарии, написанные на VBScript или JScript, было нельзя.

Сервер сценариев WSH является мощным инструментом, предоставляющим единый интерфейс (объектную модель) для специализированных языков (VBScript, JScript, PerlScript, REXX, TCL, Python и т. п.), которые, в свою очередь, позволяют использовать любые внешние объекты ActiveX. С помощью WSH сценарии могут быть выполнены непосредственно в операционной системе Windows, без встраивания в HTML-страницы.

Назначение и основные свойства WSH

WSH предъявляет минимальные требования к объему оперативной памяти, и является очень удобным инструментом для автоматизации повседневных задач пользователей и администраторов операционной системы Windows. Используя сценарии WSH, можно непосредственно работать с файловой системой компьютера, а также управлять работой других приложений (серверов автоматизации). При этом возможности сценариев ограничены только средствами, которые предоставляют доступные серверы автоматизации.

Перечислим только наиболее очевидные задачи, для автоматизации которых прекрасно подходят сценарии WSH.

  • Организация резервного копирования на сетевой сервер файлов с локальной машины, которые отбираются по какому-либо критерию.
  • Быстрое изменение конфигурации рабочего стола Windows в зависимости от задач, выполняемых пользователем.
  • Автоматический запуск программ Microsoft Office, создание там сложных составных документов, распечатка этих документов и закрытие приложений.
  • Управление работой приложений, не являющихся серверами автоматизации, с помощью посылки в эти приложения нажатий клавиш.
  • Подключение и отключение сетевых ресурсов (дисков и принтеров).
  • Создание сложных сценариев регистрации для пользователей.
  • Выполнение задач администрирования локальной сети (например, добавление или удаление пользователей).

Создание и запуск простейших сценариев WSH

Простейший WSH-сценарий, написанный на языке JScript или VBScript — это обычный текстовый файл с расширением js или vbs соответственно, создать его можно в любом текстовом редакторе, способном сохранять документы в формате «Только текст».

Размер сценария может изменяться от одной до тысяч строк, предельный размер ограничивается лишь максимальным размером файла в соответствующей файловой системе.

В качестве первого примера создадим JScript-сценарий, выводящий на экран диалоговое окно с надписью «Привет!». Для этого достаточно c помощью, например, стандартного Блокнота Windows (notepad.exe) создать файл First.js, содержащий всего одну строку:

Тот же самый сценарий на языке VBScript, естественно, отличается синтаксисом и выглядит следующим образом:

Несмотря на то, что для работы этих двух сценариев достаточно всего одной строки, желательно сразу приучить себя к добавлению в начало файла информации о находящемся в нем сценарии: имя файла, используемый язык, краткое описание выполняемых действий. На языке JScript такая информация, оформленная в виде комментариев, может выглядеть следующим образом:

/*******************************************************************/
/* Имя: First.js                                                   */
/* Язык: JScript                                                   */
/* Описание: Вывод на экран приветствия                            */
/*******************************************************************/

На языке VBScript то же самое выглядит следующим образом:

'*******************************************************************
' Имя: First.vbs
' Язык: VBScript
' Описание: Вывод на экран приветствия
'*******************************************************************

Для запуска сценариев WSH существует несколько способов.

Запуск сценария из командной строки в консольном режиме

Можно выполнить сценарий из командной строки с помощью консольной версии WSH cscript.exe. Например, чтобы запустить сценарий, записанный в файле C:ScriptFirst.js, нужно загрузить командное окно и выполнить в нем команду

cscript C:ScriptFirst.js

В результате выполнения этого сценария в командное окно выведется строка «Привет!» (рис. 4.1)

Запуск сценария из командной строки в графическом режиме

Сценарий можно выполнить из командной строки с помощью (оконной) графической версии WSH wscript.exe. Для нашего примера в этом случае нужно выполнить команду

wscript C:ScriptFirst.js

Тогда в результате выполнения сценария на экране появится нужное нам диалоговое окно (рис. 4.2).

Таким образом, мы видим, что при запуске сценария в консольном режиме, вывод текстовой информации происходит в стандартный выходной поток (на экран), при запуске в графическом режиме — в диалоговое окно.

Понравилась статья? Поделить с друзьями:
  • Файл сценария vbscript на флешке
  • Учеба новогодние праздники
  • Файл сценария jscript js чем открыть
  • Участники праздника это
  • Файл сценарий матлаб

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии