Windows Script Host для Windows 2000/XP | страница 13



можно получить только в том случае, если сценарий запускался в консольном режиме с помощью 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 (+), и возвращает полученную строку
>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                                                   */