- Файл сценария Windows — Windows Script File
- Изоляция ошибок
- Поддержка смешанного языка
- Отображение констант
- Файл сценария Windows — Windows Script File
- Изоляция ошибок
- Поддержка смешанного языка
- Отображение констант
- Расширение файла сценария windows
- Почему именно сценарии?
- Scripting Host
- Элементы сценария
- Советы по составлению сценариев
Файл сценария Windows — Windows Script File
A Файл скрипта Windows (WSF ) — это тип файла, используемый Microsoft Windows Script Host . Он позволяет смешивать языки сценариев JScript и VBScript в одном файле или другие языки сценариев, такие как Perl , Object REXX , Python или Kixtart , если он установлен пользователем. Эти типы сценариев также могут использоваться для связывания многих других внешних сценариев вместе с помощью параметра src в теге » или «
Изоляция ошибок
WSF может быть полезно для выявления ошибок. Его модульный характер не позволяет одной ссылке на скрипт мешать работе другой. Вот пример WSF с одним модулем, который выдает ошибку, а другой — нет:
Первый модуль скрипта выдаст ошибку «деление на ноль». Обычно это приводит к тому, что сценарий завершается на Windows Script Host , но этот модульный метод позволяет сценарию продолжить и выполнить второй модуль сценария.
Поддержка смешанного языка
Файл сценария Windows поддерживает несколько языков, как описано в справочнике Windows Script Host . Одна из особенностей этого формата файла заключается в том, что вы можете использовать несколько файлов одновременно. Это означает, что один язык сценариев может использовать код другого языка сценариев. Самый запоминающийся пример для давних пользователей VBScript — использование Microsoft JScript для обслуживания запроса сортировки для VBScript , поскольку он не имеет встроенного функция сортировки для массива значений. Пользователи VBScript могут написать свой собственный метод сортировки или заимствовать его из существующего объекта, такого как ADO (объекты данных ActiveX ) Recordset или .NET (.NET Framework ) ArrayList , но самый быстрый способ отсортировать массив — использовать метод, встроенный в JScript . Вот базовый пример того, как это работает:
Результат выглядит так, отсортированный по ASCII коду последовательность:
Отображение констант
Еще одна очень полезная функция WSF заключается в том, что оболочка XML может быть привязана к ссылке на объект или элементу управления, чтобы вы могли использовать константы вместо того, чтобы объявлять их. В обычных файлах VBScript и JScript вам необходимо будет объявить значение константы (за пределами тех, которые являются внутренними для Windows Script Host ), чтобы использовать константа. Пример этого показан ниже:
Если в документации по объекту упоминается только имя константы, а не значение константы, у вас не было бы возможности узнать значение без помощи интегрированной среды разработки , которая сообщила бы вам, чему они приравниваются. Используя объявление ссылки WSF, вы можете использовать константы без объявления их значений. В приведенном ниже примере перечислены значения нескольких общих констант в ADO (объекты данных ActiveX ) Recordset .
Запуск вышеуказанного сценария из файла с «.WSF» расширение, например, с именем «EnumerateConstantsADO.wsf» , даст результат, показанный ниже:
Кроме того, использование ссылки на объект для предоставления констант делает написание скрипта более похожим на написание на стандартном языке программирования. Фактически, содержимое примера сценария, написанного на VBScript, будет фактически компилироваться в программу Visual Basic и выполняться таким же образом, пока эта программа использует ту же ссылку на ADODB.
Файл сценария Windows — Windows Script File
A Файл скрипта Windows (WSF ) — это тип файла, используемый Microsoft Windows Script Host . Он позволяет смешивать языки сценариев JScript и VBScript в одном файле или другие языки сценариев, такие как Perl , Object REXX , Python или Kixtart , если он установлен пользователем. Эти типы сценариев также могут использоваться для связывания многих других внешних сценариев вместе с помощью параметра src в теге » или «
Изоляция ошибок
WSF может быть полезно для выявления ошибок. Его модульный характер не позволяет одной ссылке на скрипт мешать работе другой. Вот пример WSF с одним модулем, который выдает ошибку, а другой — нет:
Первый модуль скрипта выдаст ошибку «деление на ноль». Обычно это приводит к тому, что сценарий завершается на Windows Script Host , но этот модульный метод позволяет сценарию продолжить и выполнить второй модуль сценария.
Поддержка смешанного языка
Файл сценария Windows поддерживает несколько языков, как описано в справочнике Windows Script Host . Одна из особенностей этого формата файла заключается в том, что вы можете использовать несколько файлов одновременно. Это означает, что один язык сценариев может использовать код другого языка сценариев. Самый запоминающийся пример для давних пользователей VBScript — использование Microsoft JScript для обслуживания запроса сортировки для VBScript , поскольку он не имеет встроенного функция сортировки для массива значений. Пользователи VBScript могут написать свой собственный метод сортировки или заимствовать его из существующего объекта, такого как ADO (объекты данных ActiveX ) Recordset или .NET (.NET Framework ) ArrayList , но самый быстрый способ отсортировать массив — использовать метод, встроенный в JScript . Вот базовый пример того, как это работает:
Результат выглядит так, отсортированный по ASCII коду последовательность:
Отображение констант
Еще одна очень полезная функция WSF заключается в том, что оболочка XML может быть привязана к ссылке на объект или элементу управления, чтобы вы могли использовать константы вместо того, чтобы объявлять их. В обычных файлах VBScript и JScript вам необходимо будет объявить значение константы (за пределами тех, которые являются внутренними для Windows Script Host ), чтобы использовать константа. Пример этого показан ниже:
Если в документации по объекту упоминается только имя константы, а не значение константы, у вас не было бы возможности узнать значение без помощи интегрированной среды разработки , которая сообщила бы вам, чему они приравниваются. Используя объявление ссылки WSF, вы можете использовать константы без объявления их значений. В приведенном ниже примере перечислены значения нескольких общих констант в ADO (объекты данных ActiveX ) Recordset .
Запуск вышеуказанного сценария из файла с «.WSF» расширение, например, с именем «EnumerateConstantsADO.wsf» , даст результат, показанный ниже:
Кроме того, использование ссылки на объект для предоставления констант делает написание скрипта более похожим на написание на стандартном языке программирования. Фактически, содержимое примера сценария, написанного на VBScript, будет фактически компилироваться в программу Visual Basic и выполняться таким же образом, пока эта программа использует ту же ссылку на ADODB.
Расширение файла сценария windows
В этой статье я хотела бы пояснить, когда следует использовать механизмы сценариев, рассказать о некоторых базовых концепциях их составления, а также дать ряд практических советов (см. врезку «Советы по составлению сценариев» ). Кроме того, я представлю код на 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.
Советы по составлению сценариев
В следующей статье будут приведены более конкретные советы по программированию на VBScript, а сейчас ограничимся общими правилами, которых нужно придерживаться всегда:
- строки сценария должны быть короткими: они легче читаются. VBScript допускает использование знака подчеркивания для разрыва строки, а конструкция If . Then . Else поможет избавиться от нагромождения логики в одной строке;
- не скупитесь на комментарии. Сейчас вы еще помните, зачем нужна данная строка кода. Но вспомните ли вы об этом через полгода? А другой человек — разберется ли он без посторонней помощи в чужом коде? Убедитесь, что логика кода исчерпывающе объясняется в комментариях;
- смешивайте регистр написания кода. Переменная oDiskSpace читается легче, чем odiskspace или ODISKSPACE. VBScript в большинстве случаев не зависит от регистра (единственное исключение — вычисление значения ASCII-символа);
- при работе с Windows Script Host (WSH) следует использовать среду командной строки (command-line environment). WSH может исполняться в двух средах — в среде командной строки и в графической среде (по умолчанию). В первом случае вывод направляется в командное окно, если только программист не перенаправит поток данных в другое место. В графической среде вывод поступает в окна сообщений. Чаще всего используется командная среда. Некоторые операции в графической среде не работают, и если несколько строк кода генерирует вывод, то для каждой из них понадобится свое окошко сообщений. В результате работа сценария будет приостанавливаться до тех пор, пока оператор не нажмет кнопку ОК. Для исполнения сценария в командной среде следует воспользоваться одним из двух способов: предварять каждую команду сценария вызовом cscript, например:
либо установить среду командной строки в виде среды по умолчанию:
В сценариях часто используются кавычки, и, если текстовый процессор так или иначе преобразует их, сценарий просто не будет работать.