Андрей Попов - Windows Script Host для Windows 2000/XP
Объект WScript
Свойства объекта WScript позволяют получить полный путь к использующемуся серверу сценариев (wscript.exe или cscript.exe), параметры командной строки, с которыми запущен сценарий, режим его работы (интерактивный или пакетный). Кроме этого, с помощью свойств объекта WScript можно выводить информацию в стандартный выходной поток и читать данные из стандартного входного потока. Также WScript предоставляет методы для работы внутри сценария с объектами автоматизации и вывода информации на экран (в текстовом режиме) или в окно Windows.
Отметим, что в сценарии WSH объект WScript можно использовать сразу, без какого-либо предварительного описания или создания, т. к. его экземпляр создается сервером сценариев автоматически. Для использования же всех остальных объектов нужно применять либо метод CreateObject, либо определенное свойство другого объекта.
Свойства объекта WScript представлены в табл. 1.2.
Таблица 1.2. Свойства объекта WScript
Свойство Описание Application Предоставляет интерфейс IDispatch для объекта WScript Arguments Содержит указатель на коллекцию WshArguments, в которой находятся параметры командной строки для исполняемого сценария FullName Содержит полный путь к исполняемому файлу сервера сценариев (в Windows ХРобычно это C:WINDOWSSYSTEM32CSCRIPT.EXE или C:WINDOWSSYSTEM32WSCRIPT.EXE) Name Содержит название объекта Wscript (Windows Script Host) Path Содержит путь к каталогу, в котором находится cscript.exe или wscript.exe (в Windows ХРобычно это C:WINDOWSSYSTEM32) ScriptFullName Содержит полный путь к запущенному сценарию ScriptName Содержит имя запущенного сценария StdErr Позволяет запущенному сценарию записывать сообщения в стандартный поток для ошибок StdIn Позволяет запущенному сценарию читать информацию из стандартного входного потока StdOut Позволяет запущенному сценарию записывать информацию в стандартный выходной поток Version Содержит версию WSHОпишем более подробно те свойства объекта 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: