Чтение онлайн

на главную - закладки

Жанры

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

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

Свойство Arguments

В следующем примере (листинг 1.1) с помощью цикла for на экран выводятся все параметры командной строки, с которыми был запущен сценарий.

Листинг 1.1. Вывод на экран всех параметров сценария

/*******************************************************************/

/* Имя: ShowArgs.js */

/* Язык: JScript */

/* Описание: Вывод на экран параметров запущенного сценария */

/*******************************************************************/

var i, objArgs;

objArgs = WScript.Arguments; //Создаем объект WshArguments

for (i=0; i<=objArgs.Count-1; i++)

 WScript.Echo(objArgs(i)); //Выводим на экран i-й аргумент

/************* Конец *********************************************/

Другие примеры работы с аргументами командной строки приведены в листингах 1.4, 1.5, 2.22 и 2.23.

Свойства StdErr, StdIn, StdOut

Доступ к стандартным входным и выходным потокам с помощью свойств

StdIn
,
StdOut
и
StdErr
можно получить только в том случае, если сценарий запускался в консольном режиме с помощью cscript.exe. Если сценарий был запущен с помощью wscript.exe, то при попытке обратиться к этим свойствам возникнет ошибка "
Invalid Handle
" (рис. 1.9).

Рис. 1.9. Ошибка при обращении к

StdIn
в графическом режиме

Работать с потоками

StdOut
и
StdErr
можно с помощью методов
Write
,
WriteLine
,
WriteBlankLines
, а с потоком
StdIn
— с помощью методов
Read
,
ReadLine
,
ReadAll
,
Skip
,
SkipLine
. Эти методы кратко описаны в табл. 1.3.

Таблица 1.3. Методы для работы с потоками

Метод Описание
Read(n)
Считывает из потока
StdIn
заданное параметром n число символов и возвращает полученную строку
ReadAll
Читает символы из потока
StdIn
до тех пор, пока не встретится символ конца файла ASCII 26 (<Ctrl>+<Z>), и возвращает полученную строку
ReadLine
Возвращает строку, считанную из потока
StdIn
Skip(n)
Пропускает при чтении из потока
StdIn
заданное параметром n число символов
SkipLine
Пропускает целую строку при чтении из потока
StdIn
Write(string)
Записывает в поток
StdOut
или
StdErr
строку
string
(без символа конца строки)
WriteBlankLines(n)
Записывает в поток
StdOut
или
StdErr
заданное параметром n число пустых строк
WriteLine(string)
Записывает в поток
StdOut
или
StdErr
строку
string
(вместе с символом конца строки)

Напомним, что операционная система Windows поддерживает механизм конвейеризации (символ "|" в командной строке). Этот механизм делает возможным передачу данных от одной программы к другой. Таким образом, используя стандартные входные и выходные потоки, можно из сценария обрабатывать строки вывода другого приложения или перенаправлять выводимые сценарием данные на вход программ-фильтров (

FIND
или
SORT
). Например, следующая команда будет сортировать строки вывода сценария example.js и выводить их в файл sort.txt:

cscript //Nologo example.js | sort > sort.txt

Опция //Nologo здесь нужна для того, чтобы в файл sort.txt не попадали строки с информацией о разработчике и номере версии WSH.

Кроме этого, с помощью методов, работающих с входным потоком StdIn, можно организовывать диалог с пользователем, т. е. создавать интерактивные сценарии. Пример такого сценария представлен в листинге 1.2.

Листинг 1.2. Пример интерактивного сценария

/*******************************************************************/

/* Имя: Interact.js */

/* Язык: JScript */

/* Описание: Ввод/вывод строк в консольном режиме */

/*******************************************************************/

var s;

//Выводим строку на экран

WScript.StdOut.Write("Введите число: ");

//Считываем строку

s = WScript.StdIn.ReadLine;

//Выводим строку на экран

WScript.StdOut.WriteLine("Вы ввели число " + s);

/************* Конец *********************************************/

Объект

WScript
имеет несколько методов, которые описаны в табл. 1.4.

Таблица 1.4. Методы объекта

WScript

Метод Описание
CreateObject(strProgID [, strPrefix])
Создает объект, заданный параметром
strProgID
ConnectObject(strObject, strPrefix)
Устанавливает соединение с объектом
strObject
, позволяющее писать функции-обработчики его событий (имена этих функций должны начинаться с префикса
strPrefix
)
DisconnectObject(obj)
Отсоединяет объект
obj
, связь с которым была предварительно установлена в сценарии
Echo([Arg1] [, Arg2] [,…])
Выводит текстовую информацию на консоль или в диалоговое окно
GetObject(strPathname [, strProgID], [strPrefix])
Активизирует объект автоматизации, определяемый заданным файлом (параметр
strPathName
), или объект, заданный параметром
strProgID
Quit([intErrorCode])
Прерывает выполнение сценария с заданным параметром
intErrorCode
кодом выхода. Если параметр
intErrorCode
не задан, то объект
WScript
установит код выхода равным нулю
Sleep(intTime)
Приостанавливает выполнения сценария (переводит его в неактивное состояние) на заданное параметром
intTime
число миллисекунд

Приведем дополнительные пояснения и примеры использования для методов, приведенных в табл. 1.4.

Метод CreateObject

Строковый параметр

strProgID
, указываемый в методе
CreateObject
, называется программным идентификатором объекта (Programmic Identifier, ProgID).

Если указан необязательный параметр

strPrefix
, то после создания объекта в сценарии можно обрабатывать события, возникающие в этом объекте (естественно, если объект предоставляет интерфейсы для связи с этими событиями). Когда объект сообщает о возникновении определенного события, сервер сценариев вызывает функцию, имя которой состоит из префикса
strPrefix
и имени этого события. Например, если в качестве
strPrefix
указано "
MYOBJ_
", а объект сообщает о возникновении события "
OnBegin
", то будет запущена функция "
MYOBJ_OnBegin
", которая должна быть описана в сценарии.

Поделиться:
Популярные книги

Я все еще царь. Книга XXXI

Дрейк Сириус
31. Дорогой барон!
Фантастика:
юмористическое фэнтези
аниме
попаданцы
5.00
рейтинг книги
Я все еще царь. Книга XXXI

Запечатанный во тьме. Том 2

NikL
2. Хроники Арнея
Фантастика:
уся
эпическая фантастика
фэнтези
5.00
рейтинг книги
Запечатанный во тьме. Том 2

Ваше Сиятельство 2

Моури Эрли
2. Ваше Сиятельство
Фантастика:
фэнтези
альтернативная история
аниме
5.00
рейтинг книги
Ваше Сиятельство 2

Вперед в прошлое!

Ратманов Денис
1. Вперед в прошлое
Фантастика:
попаданцы
5.00
рейтинг книги
Вперед в прошлое!

Снайпер

Поселягин Владимир Геннадьевич
3. Жнец
Фантастика:
боевая фантастика
попаданцы
5.60
рейтинг книги
Снайпер

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Ненаглядная жена его светлости

Зика Натаэль
Любовные романы:
любовно-фантастические романы
6.23
рейтинг книги
Ненаглядная жена его светлости

Кукловод

Майерс Александр
4. Династия
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Кукловод

Воспоминания о Корнее Чуковском

Коллектив авторов
Документальная литература:
биографии и мемуары
6.25
рейтинг книги
Воспоминания о Корнее Чуковском

Личный аптекарь императора. Том 3

Карелин Сергей Витальевич
3. Личный аптекарь императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Личный аптекарь императора. Том 3

Граф

Первухин Андрей Евгеньевич
8. Ученик
Фантастика:
фэнтези
попаданцы
5.25
рейтинг книги
Граф

Наследник

Майерс Александр
3. Династия
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследник

Старый, но крепкий 8

Крынов Макс
8. Культивация без насилия
Фантастика:
рпг
уся
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Старый, но крепкий 8

Вечный. Книга II

Рокотов Алексей
2. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга II