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

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

Жанры

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
", которая должна быть описана в сценарии.

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

Камень

Минин Станислав
1. Камень
Фантастика:
боевая фантастика
6.80
рейтинг книги
Камень

Слезы Эйдена 1

Владимиров Денис
11. Глэрд
Фантастика:
боевая фантастика
фэнтези
попаданцы
5.00
рейтинг книги
Слезы Эйдена 1

Рассвет русского царства 3

Грехов Тимофей
3. Новая Русь
Фантастика:
историческое фэнтези
альтернативная история
5.00
рейтинг книги
Рассвет русского царства 3

Гримуар темного лорда VI

Грехов Тимофей
6. Гримуар темного лорда
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Гримуар темного лорда VI

На границе империй. Том 10. Часть 4

INDIGO
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
попаданцы
5.00
рейтинг книги
На границе империй. Том 10. Часть 4

Точка Бифуркации

Смит Дейлор
1. ТБ
Фантастика:
боевая фантастика
7.33
рейтинг книги
Точка Бифуркации

Печать мастера

Лисина Александра
6. Гибрид
Фантастика:
попаданцы
технофэнтези
аниме
фэнтези
6.00
рейтинг книги
Печать мастера

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

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

Князь Андер Арес 5

Грехов Тимофей
5. Андер Арес
Фантастика:
историческое фэнтези
фэнтези
героическая фантастика
5.00
рейтинг книги
Князь Андер Арес 5

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

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

Я уже барон

Дрейк Сириус
2. Дорогой барон!
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Я уже барон

Рассвет русского царства

Грехов Тимофей
1. Новая Русь
Документальная литература:
историческая литература
5.00
рейтинг книги
Рассвет русского царства

Ермак. Регент

Валериев Игорь
10. Ермак
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Ермак. Регент

Око василиска

Кас Маркус
2. Артефактор
Фантастика:
городское фэнтези
попаданцы
аниме
5.00
рейтинг книги
Око василиска