Метод
В следующем примере сценарий переводится в неактивное состояние на 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 содержит коллекцию всех параметров командной строки запущенного сценария или ярлыка Windows. Этот объект можно создать только с помощью свойства Arguments объектов WScript и WshShortcut.
В принципе, работать с элементами коллекции WshArguments можно стандартным для JScript образом — создать объект Enumerator и использовать его методы moveNext, item и atEnd. Например, вывести на экран все параметры командной строки, с которыми запущен сценарий, можно следующим образом (листинг 1.4).
/********************************************************************/
/* Имя: 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).
/*******************************************************************/
/* Имя: 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 идет речь в
