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

ЖАНРЫ

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

Другие примеры использования метода

Echo
приведены в главе 2 (см. листинги 2.1, 2.2, 2.4 и 2.5).

Метод Sleep

В следующем примере сценарий переводится в неактивное состояние на 5 секунд:

WScript.Echo("Сценарий запущен, отдыхаем...");

WScript.Sleep(5000);

WScript.Echo("Выполнение завершено");

Метод

Sleep
необходимо применять при асинхронной работе сценария и какой-либо другой
задачи, например, при имитации нажатий клавиш в активном окне с помощью метода
WshShell.SendKeys
(см. листинги 1.13, 2.31, 2.32).

Объекты-коллекции

В WSH входят объекты, с помощью которых можно получить доступ к коллекциям, содержащим следующие элементы:

параметры командной строки запущенного сценария или ярлыка Windows (объекты

WshArguments
,
WshNamed
и
WshUnnamed
);

значения переменных среды (объект

WshEnvironment
);

пути к специальным папкам Windows (объект

WshSpecialFolders
).

Объект WshArguments

Объект

WshArguments
содержит коллекцию всех параметров командной строки запущенного сценария или ярлыка Windows. Этот объект можно создать только с помощью свойства
Arguments
объектов
WScript
и
WshShortcut
.

В принципе, работать с элементами коллекции

WshArguments
можно стандартным для JScript образом — создать объект
Enumerator
и использовать его методы
moveNext
,
item
и
atEnd
. Например, вывести на экран все параметры командной строки, с которыми запущен сценарий, можно следующим образом (листинг 1.4).

Листинг 1.4. Вывод всех параметров сценария (стандартные коллекции JScript)

/********************************************************************/

/* Имя: EnumArgs.js */

/* Язык: JScript */

/* Описание: Вывод на экран параметров запущенного сценария */

/********************************************************************/

var objArgs, e, x;

objArgs = WScript.Arguments; //Создаем объект WshArguments

//Создаем объект Enumerator для коллекции objArgs

e = new Enumerator(objArgs);

for (;!e.atEnd;e.moveNext) {

 x = e.item; //Получаем значение элемента коллекции

 WScript.Echo(x); //Выводим значение параметра на экран

}

/************* Конец *********************************************/

Однако намного удобнее использовать методы

Count
и
Item
самого объекта
WshArguments
(метод
Item
имеется у всех коллекций WSH). Метод
Count
возвращает число элементов в коллекции, т. е. количество аргументов командной строки, а метод
Item(n)
— значение n-го
элемента коллекции (нумерация начинается с нуля). Более того, чтобы получить значение отдельного элемента коллекции
WshArguments
, можно просто указать его индекс в круглых скобках после имени объекта.

Замечание

Число элементов в коллекции хранится и в свойстве

Length
объекта
WshArguments
.

Таким образом, предыдущий пример можно переписать более компактным образом (листинг 1.5).

Листинг 1.5. Вывод всех параметров сценария (методы WSH)

/*******************************************************************/

/* Имя: ShowArgs.js */

/* Язык: JScript */

/* Описание: Вывод на экран параметров запущенного сценария */

/*******************************************************************/

var i, objArgs;

objArgs = WScript.Arguments; //Создаем объект WshArguments

for (i=0; i<=objArgs.Count-1; i++)

 WScript.Echo(objArgs(i)); //Выводим на экран i-й аргумент

/************* Конец *********************************************/

С помощью объекта

WshArguments
можно также выделять и отдельно обрабатывать аргументы сценария, у которых имеются имена (например,
/Name:Andrey
) и безымянные аргументы. Ясно, что использование именных параметров более удобно, т. к. в этом случае нет необходимости запоминать, в каком порядке должны быть записаны параметры при запуске того или иного сценария.

Для доступа к именным и безымянным аргументам используются соответственно два специальных свойства объекта

WshArguments
:
Named
и
Unnamed
.

Свойство

Named
содержит ссылку на коллекцию
WshNamed
, свойство
Unnamed
— на коллекцию
WshUnnamed
.

Таким образом, обрабатывать параметры командной строки запущенного сценария можно тремя способами:

просматривать полный набор всех параметров (как именных, так и безымянных) с помощью коллекции

WshArguments
;

выделить только те параметры, у которых есть имена (именные параметры) с помощью коллекции

WshNamed
;

выделить только те параметры, у которых нет имен (безымянные параметры) с помощью коллекции

WshUnnamed
.

У объекта

WshArguments
имеется еще один метод
ShowUsage
. Этот метод служит для вывода на экран информации о запущенном сценарии (описание аргументов командной строки, пример запуска сценария и т.д.). В свою очередь, подобную информацию можно задать только при использовании WSH-сценариев с разметкой XML; более подробно о применении метода
ShowUsage
идет речь в главе 3 при рассмотрении элементов
<runtime>
,
<description>
,
<example>
,
<named>
и
<unnamed>
.

Поделиться с друзьями: