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

ЖАНРЫ

Windows Script Host для Windows 2000/XP

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

Шрифт:

' Создаем объект WshShell

Set WshShell=WScript.CreateObject("WScript.Shell")

s=" Свойства запущенного сценария:" & vbCrLf & vbCrLf

' Проверяем, в каком режиме был запущен сценарий

If IsCScript Then

 s=s & "Запущен в консольном режиме" & vbCrLf

Else

 s=s & "Запущен в графическом режиме" & vbCrLf

End If

' Определяем остальные параметры

s=s & "Путь
к серверу: " & WScript.FullName & vbCrLf

s=s & "Каталог сервера: " & WScript.Path & vbCrLf

s=s & "Версия WSH: " & WScript.Version & vbCrLf & vbCrLf

s=s & "Текущий каталог: "+ WshShell.CurrentDirectory & vbCrLf

s=s & "Путь к сценарию: " & WScript.ScriptFullName & vbCrLf

s=s & "Каталог сценария: " & GetScriptDir & vbCrLf

s=s & "Имя сценария: " & WScript.ScriptName & vbCrLf

WScript.Echo s ' Выводим сформированные строки

'************* Конец *********************************************

Работа с параметрами командной строки сценария

Используя аргументы командной строки, в сценарии можно передавать различную информацию, скажем, те или иные переключатели или имена пользователей и рабочих станций. При задании аргумента можно указать либо только его значение, либо имя вместе со значением в следующем формате: "Имя_аргумента:Значение".

Замечание

Как в имени аргумента, так и в его значении могут использоваться символы кириллицы.

Например, выполнив в командном окне строку

cscript Example.js /Имя:"Андрей Попов" /Возраст:30

или

cscript Example.js /Возраст:30 /Имя:"Андрей Попов"

мы передадим в сценарий Example.js два параметра: "Имя" со значением "Андрей Попов" и "Возраст" со значением "30". Значения этих параметров можно было передать и как безымянные параметры:

cscript Example.js "Андрей Попов" 30

Однако в последнем случае при задании безымянных аргументов будет важен порядок их указания в командной строке.

В WSH для обработки параметров командной строки служат следующие объекты-коллекции:

WshArguments
(содержит все параметры, как именные, так и безымянные);

WshNamed
(содержит только именные параметры);

WshUnnamed
(содержит только безымянные параметры).

Замечание

Описание аргументов командной строки в сценариях можно задавать с помощью XML-элементов

<runtime>
,
<named>
и
<unnamed>
(см. главу 3).

Для доступа к коллекциям, содержащим аргументы командной строки, в сценарии сначала нужно создать переменную-экземпляр объекта

WshArguments
; для этого используется свойство
Arguments
объекта
WScript
. Пример на языке JScript:

var objArgs=WScript.Arguments;

Для создания экземпляров коллекций

WshNamed
и
WshUnnamed
используются соответственно методы
Named
и
Unnamed
объекта
WshArguments
. Например:

var objNamedArgs=objArgs.Named;

var objUnnamedArgs=objArgs.Unnamed;

Методы и свойства коллекций

WshArguments
,
WshNamed
и
WshUnnamed
подробно описаны в главе 1. Отметим здесь только, что для корректной работы с параметрами командной строки, имена которых содержат символы кириллицы, эти имена в сценарии должны быть написаны в кодировке Windows.

В листингах 2.21 и 2.22 приведены примеры сценариев на языках JScript и VBScript, которые выводят на экран общее количество параметров командной строки, количество именных и безымянных аргументов, а также значения каждой из этих групп параметров. Результат работы этих сценариев, запущенных в консольном режиме, представлен на рис. 2.8.

Рис. 2.8. Результат работы сценария Args.js

Листинг 2.21. Доступ к параметрам командной строки запущенного сценария (JScript)

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

/* Имя: Args.js */

/* Язык: JScript */

/* Описание: Работа с аргументами запущенного сценария */

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

var

 i,objArgs,s,objNamedArgs,objUnnamedArgs; //Объявляем переменные

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

//Определяем общее количество аргументов

s="Всего аргументов: "+objArgs.Count+"\n";

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

 s+=objArgs(i)+"\n"; //Формируем строки со значениями аргументов

objUnnamedArgs=objArgs.Unnamed; //Создаем объект WshUnnamed

//Определяем количество безымянных аргументов

s+="\nБезымянных аргументов: "+objUnnamedArgs.length+"\n";

for (i=0; i<=objUnnamedArgs.length-1; i++)

 //Формируем строки со значениями безымянных аргументов

 s+=objUnnamedArgs(i)+"\n";

objNamedArgs=objArgs.Named; //Создаем объект WshNamed

//Определяем количество именных аргументов

s+="\nИменных аргументов: "+objNamedArgs.length+"\n";

//Проверяем, существует ли аргумент /Имя:

if (objNamedArgs.Exists("Имя")) s+=objNamedArgs("Имя")+"\n";

//Проверяем, существует ли аргумент /Comp:

if (objNamedArgs.Exists("Comp")) s+=objNamedArgs("Comp")+"\n";

WScript.Echo(s); //Выводим сформированные строки

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

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