Сценарий windows vbscript для сценария

Сценарий windows vbscript для сценария

В этой статье я хотела бы пояснить, когда следует использовать механизмы сценариев, рассказать о некоторых базовых концепциях их составления, а также дать ряд практических советов (см. врезку «Советы по составлению сценариев» ). Кроме того, я представлю код на VBScript, с помощью которого решается некая общая задача, и прокомментирую его. Выбор пал на VBScript, поскольку Windows поддерживает этот язык. Windows поддерживает и JScript, но в предыдущих номерах журнала, как правило, использовался VBScript, так что есть смысл сохранять преемственность.

Почему именно сценарии?

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

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

Если с помощью GUI решить задачу непросто, то, может быть, стоит обратиться к утилитам командной строки, которые поставляются вместе с операционной системой или в составе Resource Kit? Желательно использовать данные утилиты всегда, когда в этом есть смысл. Но в Windows 2000 набор программ с графическим интерфейсом не соответствует в точности набору утилит командной строки, и некоторые утилиты могут не удовлетворять в полном объеме решаемой задаче. Пакетные файлы не всегда хорошо справляются с ситуацией, когда входной поток данных должен быть изменен. Кроме того, утилиты командной строки и сценарии не являются взаимоисключающими методами. Можно написать сценарии, основанные на применении утилит командной строки и при этом свободные от недостатков последних.

Scripting Host

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

Scripting host (машина сценариев) — это операционная среда сценария. Windows не имеет понятия о VBScript: если в командной строке ввести строчку кода на VBScript, система выдаст сообщение об ошибке. Когда Windows сталкивается с файлом, расширение которого указывает на файл-сценарий, операционная система передает файл машине сценариев для интерпретации. Машина интерпретирует предложенный сценарий, а затем передает сообщения сценария (по сути — запрос на регистрацию данных) в операционную систему Windows для исполнения.

Windows поддерживает две машины сценариев: Microsoft Internet Explorer (IE) и Windows Script Host (WSH). Выбор той или иной машины влияет на используемые в сценарии возможности. Если применяется WSH, как чаще всего и бывает, то в сценарии могут использоваться объекты WSH, но не IE, и наоборот. Машина сценария не обязана понимать содержание всех мыслимых сценариев; воспринимается только сценарий, написанный на языке машины, и тот, который ею поддерживается. Для WSH и IE «понятными» являются языки VBScript и JScript.

Элементы сценария

Каждая строка сценария — это оператор, который сообщает компьютеру, что следует сделать. Исполняемые операторы обычно имеют форму типа «действие-объект»: описываются само действие и тот объект, над которым действие совершается. Сценарий может содержать условия, при наличии которых указанные операторы должны быть выполнены. Хост сценария интерпретирует строки кода слева направо и сверху вниз, так что можно, например, получив некоторые данные в строке 10, использовать их в 30-й строке. Исключение составляют процедуры. Процедуры (функции и подпрограммы) — это набор операторов, которые выполняются только при явном обращении к ним. В данном случае процедура сразу же начинает выполняться независимо от того, из какого места кода было обращение.

Исполняемые части сценария называются операторами. Неисполняемая часть сценария называется комментарием и должна предваряться апострофом (‘) или ключевым словом Rem. Например:

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

VBScript «понимает» четыре типа данных: числа (number); строки (string); дата и время (date and time); булевы данные (boolean). Примеры чисел — скажем 2 или 9458. Строки — это любая комбинация символов, заключенная в двойные кавычки, например «рыба» и «Это строка %@#^>». Дата и время должны находиться внутри символов решетки (#) и выглядеть соответственно. Так, например, #16 January 1968# и #1/01/02 11:45 PM# — нормальные с точки зрения VBScript данные. Булевы данные — TRUE или FALSE, например x Криста Андерсон — независимый автор и консультант журнала Windows NT Magazine. Ее последняя книга — «Mastering Local Area Networks». С ней можно связаться по адресу: candersn@adelphia.net.

Читайте также:  What is path environment variable in linux

Советы по составлению сценариев

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

  • строки сценария должны быть короткими: они легче читаются. VBScript допускает использование знака подчеркивания для разрыва строки, а конструкция If . Then . Else поможет избавиться от нагромождения логики в одной строке;
  • не скупитесь на комментарии. Сейчас вы еще помните, зачем нужна данная строка кода. Но вспомните ли вы об этом через полгода? А другой человек — разберется ли он без посторонней помощи в чужом коде? Убедитесь, что логика кода исчерпывающе объясняется в комментариях;
  • смешивайте регистр написания кода. Переменная oDiskSpace читается легче, чем odiskspace или ODISKSPACE. VBScript в большинстве случаев не зависит от регистра (единственное исключение — вычисление значения ASCII-символа);
  • при работе с Windows Script Host (WSH) следует использовать среду командной строки (command-line environment). WSH может исполняться в двух средах — в среде командной строки и в графической среде (по умолчанию). В первом случае вывод направляется в командное окно, если только программист не перенаправит поток данных в другое место. В графической среде вывод поступает в окна сообщений. Чаще всего используется командная среда. Некоторые операции в графической среде не работают, и если несколько строк кода генерирует вывод, то для каждой из них понадобится свое окошко сообщений. В результате работа сценария будет приостанавливаться до тех пор, пока оператор не нажмет кнопку ОК. Для исполнения сценария в командной среде следует воспользоваться одним из двух способов: предварять каждую команду сценария вызовом cscript, например:

либо установить среду командной строки в виде среды по умолчанию:

  • присваивайте имена переменным в соответствии с типом представляемых данных (т. е. имена строковых переменных должны начинаться с s, объектных — с o). Подобная практика поможет при отладке кода. В ряде случаев при несоответствии типов данных объявленным переменным работа сценария будет протекать не так, как ожидается. А если тип данных ассоциируется с названием переменной, ошибки из-за несоответствия типов переменных и данных будут выявляться быстрее;
  • заранее и в явном виде описывайте переменные. Хотя переменные разрешено описывать неявно (просто присваивая им значения), их применение можно запретить. Для этого используйте утверждение Option Explicit в самом начале файла-сценария. С этого момента любая применяемая в коде программы переменная должна явно описываться оператором Dim, что позволит ограничить число ошибок из-за случайно или неверно набранных переменных;
  • пишите сценарии в текстовом редакторе. Не применяйте для этих целей текстовый процессор с последующим сохранением данных в редакторе.
  • В сценариях часто используются кавычки, и, если текстовый процессор так или иначе преобразует их, сценарий просто не будет работать.

    Занятие 2. Создание клиентских сценариев средствами Microsoft VBScript

    (Продолжительность занятия 60 минут)

    Язык VBScript — оптимизированная для работы в Интернете версия популярного языка программирования Visual Basic for Applications. Этот высокопроизводительный язык разработки сценариев предназначен для создания активных Web-страниц. Средствами VBScript Вы можете связывать и автоматизировать множество объектов на Web-страницах, включая Java-апплеты и элементы управления ActiveX. На этом занятии Вы узнаете, как применять VBScript для построения клиентских сценариев.

    Изучив материал этого занятия, Вы сможете:

    • создать Web-страницу, использующую Microsoft VBScript;
    • пользоваться переменными в сценарии на Microsoft VBScript;
    • применять операторы управления последовательностью выполнения команд сценария;
    • с помощью VBScript создавать событейные процедуры для стандартных элементов управления HTML и ActiveX;
    • обрабатывать ошибки, возникающие при выполнении VBScript-сценария.

    Синтаксис языка VBScript

    Язык VBScript применяют для обращения к свойствам и методам элементов управления ActiveX и Java-апплетов, расположенных на HTML-странице.

    Синтаксисы VBScript и Visual Basic for Applications идентичны. Однако VBScript учитывает необходимость быстрой загрузки страниц по Интернету, поэтому поддержка многих элементов (как языковых, так и времени выполнения) Visual Basic for Applications не включена в VBScript. Кроме того, некоторые элементы языка — например, средства работы с файлами — изъяты по соображениям безопасности.

    Встроенные функции Visual Basic

    VBScript поддерживает некоторые встроенные функции Visual Basic, включая Msg-box, Date и IsNumeric.

    Пример Этот сценарий на VBScript открывает на экране окно сообщения, если переменная Var является числовой:

    If IsNumeric(Var) Then

    MsgBox «Var is a number.»

    Некоторые функции в VBScript реализованы иначе. Например, функция Visual Basic Format — в VBScript в виде четырех различных версии:

    • FormatCurrency;
    • FormatDateTime;
    • FormatNumber;
    • FormatPercent.

    Примечание Полный перечень функции, поддерживаемых VBScript 2.0, — на Web-узле VBScript (www.microsoft.com/vbscript) и в комплекте документации Internet Client SDK.

    В VBScript имеется два вида процедур: подпрограммы и процедуры-функции. Как и весь код сценария, процедуры должны располагаться внутри тэга

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

    > Использование переменных в VBScript

    1. Откройте Web-узел Exercise9 в Frontpage 98.
    2. Откройте главную страничку в Frontpage Editor.
    3. Поместите точку вставки в форме на Web-странице.
    4. В меню Insert выберите команду Advanced, Script.
    5. Введите в окне кода следующий код VBScript:

    End Sub Sub Ch’angeValuesAgain( )

    1. Щелкните кнопку Script Wizard.
    2. Раскройте в дереве объектов объект Window и щелкните его событие OnLoad.
    3. В окне кода введите следующий код VBScript и нажмите ОК:

    В редакторе Frontpage Editor откройте вкладку Preview и просмотрите Вашу Web-страницу.

    Вы получите сообщение об ошибке, гласящее, что переменная Х не определена. Это произошло потому, что Х действительна только в подпрограмме SetValues, где она была объявлена оператором Dim. Переменная Y же находится в области видимости, так как она была объявлена оператором Private вне процедуры.

  • Щелкните кнопку Yes, чтобы закрыть окно сообщения, и вернитесь к обычному представлению страницы.
  • Добавьте следующую строку кода в подпрограмму Change ValuesAgain:

    Сохраните изменения и откройте Web-страницу.

    Обратите внимание, что ошибка не возникает: теперь Х находится в области видимости благодаря оператору Dim, который Вы только что добавили в подпрограмму ChangeValuesAgain.

  • Закройте Internet Explorer и Frontpage 98.
  • Управление работой сценария

    Для управления ходом выполнения сценария пользуйтесь соответствующими операторами Visual Basic.

    VBScript поддерживает большую часть структур Visual Basic for Applications для управления работой программы.

    Структуры для организации циклов

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

    Оператор

    Назначение

    Выполняет цикл, пока условие истинно либо пока оно не станет истинным

    While. Wend

    Выполняет цикл, пока условие истинно

    For. Next

    С помощью счетчика выполняет набор операторов заданное число раз

    Пример Здесь создается массив, который заполняется значениями:

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

    Оператор

    Назначение

    Выполняет один из двух фрагментов кода в зависимости от того, истинно или ложно выражение

    Select. Case

    Выполняет один из фрагментов кода в зависимости от значения переменной

    Вы можете использовать выражение с оператором If. Then. Else, чтобы выяснить истинность или ложность условия и, в зависимости от результата, выполнить один из двух фрагментов кода.

    Пример Это условное выражение вычисляет процент премии в зависимости от значения переменной Sales:

    Elself Sales > 50000 Then

    VBScript 2.0 теперь поддерживает оператор Select. Case, который полезен, когда переменная-условие имеет больше двух значений. Хотя и в этом случае можно обойтись оператором If. Then, Select. Case проще и удобнее.

    Пример Здесь выполняются те же действия, что и в предыдущем случае, но средствами оператора Select. Case:

    Case 50000, 75000

    Примечание В операторе Select. Case не допускается использование диапазонов значений и символов сравнения «больше чем» (>) или «меньше чем» ( Использование конструкции Select Case в VBScript

    1. Откройте Web-узел Exercise9 в Frontpage 98.
    2. Откройте Home Page в Frontpage Editor.
    3. Правой кнопкой мыши щелкните кнопку Square и выберите Script Wizard.
    4. В событие OnClick кнопки btnSquareIt введите приведенный ниже код и на жмите ОК:

    On Error Resume Next

    Select Case Result

    MsgBox T1.Value & » в квадрате = » & Result

    1. Сохраните изменения и откройте страницу в Internet Explorer.
    2. Когда Web-страница появится в Internet Explorer, введите в текстовое поле число 2 и нажмите кнопку Square.
    3. Введите в поле число 10 и снова нажмите кнопку Square.

    Обратите внимание на различие результатов: при вводе чисел от 1 до 3 появляется сообщение об интервале, а любое другое числа вызывает выполнение блока Case Else.

  • Закройте Internet Explorer и Frontpage 98.
  • В Web-страницу, как и в обычное приложение Visual Basic, можно включить сценарий обработки ошибок.

    Оператор On Error

    Вы вправе изменить стандартный механизм обработки ошибок на Web-странице, добавив в начало сценария оператор On Error Resume Next. Он указывает программе просмотра (например, Internet Explorer) на необходимость продолжать выполнение сценария. Этим оператором нужно снабдить каждую процедуру, в которую Вы хотите включить обработку ошибок.

    При возникновении ошибки Internet Explorer сохраняет информацию о ней в объекте Err. Данные о следующей ошибке заносятся в тот же объект Err, сведения же о предыдущей ошибке при этом теряются.

    Чтобы отключить обработку ошибок, используйте оператор On Error GoTo 0. Internet Explorer вернется к стандартной процедуре обработке ошибок и будет сообщать о них пользователю.

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

    Чтобы обнаружить ошибки времени выполнения, проверяйте свойство Number объекта Err после каждого оператора, который может их вызвать. Если значение свойства Number равно нулю, ошибки нет; ненулевое значение свидетельствует о ее возникновении.

    Чтобы получить информацию об ошибке, обратитесь к свойству Description. Когда возникает ошибка, объект Err хранит информацию о ней до тех пор, пока не появится следующая. При успешном выполнении выражения объект Err не очищается, поэтому после возникновения ошибки нужно уничтожить информацию о ней, вызвав метод Clear объекта Err.

    Пример Здесь показана общая схема обработки ошибок:

    ‘Выражение, которое может вызвать ошибку

    Msgbox «Произошла ошибка. » & Err.Description

    Чтобы проверить Ваш код обработки ошибок, можете специально создать ошибочную ситуацию средствами метода Raise объекта Err.

    VBScript использует не все возможные номера для идентификации ошибок. Если Вы хотите поверить собственный код, начните нумерацию ошибок в нем с 65535 (максимально допустимое значение) с последующим уменьшением номеров.

    Пример Этот код вызовет ошибку с номером 65 000:

    Управление объектами на VBScript

    Сценарии позволяют управлять объектами и реагировать на события (рис. 9.2). Прежде чем создать такой сценарий, необходимо идентифицировать объекты на Web-странице, например встроенные элементы управления в формах: кнопки, текстовые поля и т.п. Кроме объектов в формах, на странице могут находиться элементы управления ActiveX и Java-апплеты.

    Рис.9.2 Объекты на Web-странице, которыми можно управлять средствами VBScript

    Чтобы воспользоваться объектом в сценарии клиентской части, сначала постройте объект, а затем присвойте ему имя для создания событийных процедур и для обращения к свойствам и методам объекта. Синтаксис присвоения имени зависит от типа объекта.

    Стандартные элементы управления HTML

    Чтобы присвоить имя стандартному элементу управления HTML, достаточно присвоить значение атрибуту NAME.

    Пример В этом коде элементу управления Button присваивается имя cmdValidateOrder:

    Элементы управления ActiveX

    Чтобы присвоить имя элементу управления ActiveX, Вы устанавливаете атрибут ID тэга

    Чтобы присвоить имя Java-апплету, нужно установить атрибут NAME тэга .

    Пример Здесь Java-апплету Outline присваивается имя myoutline:

    Создание событийных процедур

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

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

    Элементы управления ActiveX и Java-апплеты на Web-странице поддерживают те же события, что и в других средах, например в Visual Basic или Visual J++.

    Создание событийной процедуры

    Событийную процедуру для объекта можно создать несколькими способами.

    Присвоить процедуре имя ИмяОбъекта_Событие

    Если Вы дадите процедуре имя типа ИмяОбъекта_Событие, она будет автоматически запускаться при возникновении указанного события для данного объекта. Это — та же система именования, что и для создания событийных процедур в Visual Basic.

    Пример Процедура, приведенная здесь, запускается, когда пользователь щелкает элемент управления Button1:

    Создать отдельный раздел

    Этот способ создания событийных процедур элементов управления ActiveX и стандартных элементов управления HTML подходит как для JavaScript, так и для VBScript.

    Назначить событийную процедуру при создании объекта

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

    Этот метод поддерживают как VBScript, так и JavaScript.

    Включить сценарий в тэг HTML

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

    Пример Здесь сообщение «Привет всем!» выводится на экран, когда пользователь щелкает кнопку Hello:

    Разработка событийных процедур

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

    Вы расширите функциональные возможности Web-страницы списка товаров Products.htm (воспользуйтесь оригиналом, находящимся в папке WA\Practice\Ch09).

    > Добавление тэгов SCRIPT в Web-страницу Products

    1. Запустите Microsoft Frontpage 98.
    2. Создайте новую пустую страницу (Empty Web) и назовите ее Lab09.
    3. В меню File выберите Import.
    4. Щелкните Add File, выберите файл Lab09.htm в папке WA\Practice\Ch09 и нажмите ОК.
    5. Дважды щелкните Lab09.htm, чтобы открыть этот файл в редакторе Frontpage Editor.
    6. Поместите точку вставки справа от кнопки Calculate.
    7. В меню Insert укажите на Advanced и выберите Script.
    8. Введите приведенный ниже код и нажмите ОК:

    On Error Resume Next

    price = txtQ1.Text * 2.99

    price = price + txtQ2.Text * 75.59

    price = price + txtQ3.Text * 1.75

    price = price + txtQ4.Text * 7.99

    price = price + txtQ5.Text * 4.99

    > Применение мастера создания сценариев

    1. Щелкните правой кнопкой мыши кнопку Calculate и выберите в меню команду Script Wizard.
    2. В нижней части диалогового окна щелкните кнопку Code View.
    3. Свяжите с событием CalcTotal_OnClick формы frmButtonContainer приведенную ниже событийную процедуру:
  • Нажмите ОК, чтобы закрыть окно мастера создания сценариев.
  • Сохраните изменения.
  • Щелкните кнопку Preview in Browser на панели инструментов.
  • Заполните поля заказа товаров и нажмите Calculate.
  • Элементы управления для изменения значений пока не содержат сценарного кода, поэтому значения приходится вводить вручную.

    > Добавление событийной процедуры для элементов управления

    1. Переключитесь в окно Frontpage Editor.
    2. Правой кнопкой мыши щелкните счетчик в правом верхнем углу Web-стра ницы.
    3. Выберите Script Wizard.
    4. В событие spin1_SpinUp введите следующий код:

    txtql.text = txtql.text + 1

    В событие счетчика spinl_SpinDown добавьте следующий код:

    If txtql.text > 0 Then txtql.text = txtql.text — 1

  • Повторите пункты 2—4 для каждой кнопки счетчиков Web-страницы, соответствующим образом изменяя имена текстовых полей (txtq2, txtq3, txtq4, и т.д.).
  • Сохраните Web-страницу.
  • Щелкните кнопку Preview in Browser на панели инструментов.

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

  • Введите какие-нибудь значения и попробуйте поменять их с помощью кнопок.
  • Использование свойств и методов элементов управления

    Обращение к свойствам и вызов методов — самые частые задачи, выполняемые событийными процедурами объектов.

    Обращение к свойствам

    Синтаксис Для установки значения свойства применяется следующий синтаксис:

    Синтаксис Для извлечения значения свойства применяется синтаксис:

    Пример Здесь считывается дата, выбранная в элементе управления Calendar, вычисляется

    стоимость доставки в этот день и результат отображается в стандартном текстовом

    Читайте также:  Как создавать загрузочную флешку windows 10
    Оцените статью