Свойства StdErr, StdIn, StdOut
Свойства 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.