Работать с потоками StdOut
и StdErr
можно с помощью методов Write
, WriteLine
, WriteBlankLines
, а с потоком StdIn
— с помощью методов Read
, ReadLine
, ReadAll
, Skip
, SkipLine
. Эти методы кратко описаны в табл. 1.3.
Таблица1.3. Методы для работы с потоками
Метод |
Описание |
Read(n) |
Считывает из потока StdIn заданное параметром n число символов и возвращает полученную строку |
ReadAll() |
Читает символы из потока StdIn до тех пор, пока не встретится символ конца файла ASCII 26 (+), и возвращает полученную строку |
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.
Строковый параметр strProgID
, указываемый в методе CreateObject
,называется программным идентификатором объекта (Programmic Identifier, ProgID).
Если указан необязательный параметр strPrefix
, то после создания объекта в сценарии можно обрабатывать события, возникающие в этом объекте (естественно, если объект предоставляет интерфейсы для связи с этими событиями). Когда объект сообщает о возникновении определенного события, сервер сценариев вызывает функцию, имя которой состоит из префикса strPrefix
и имени этого события. Например, если в качестве strPrefix
указано " MYOBJ_
", а объект сообщает о возникновении события " OnBegin
", то будет запущена функция " MYOBJ_OnBegin
", которая должна быть описана в сценарии.
Читать дальше