Андрей Попов - Windows Script Host для Windows 2000/XP
'*******************************************************************
' РРјСЏ: PropScript.vbs
' Язык: VBScript
' Описание: Вывод свойств запущенного сценария
'*******************************************************************
Option Explicit
' Проверка режима, в котором запущен сценарий
Function IsCScript()
В IsCScript=("c"=Mid(LCase(WScript.FullName),Len(WScript.FullName)-10,1))
End Function
' Возвращает каталог, содержащий запущенный сценарий
Function GetScriptDir()
В Dim ScriptDir
В ScriptDir = WScript.ScriptFullName
В ScriptDir = Left(ScriptDir, InstrRev(ScriptDir,"")-1)
В GetScriptDir=ScriptDir
End Function
'******************* Начало **********************************/
Dim WshShell,s  ' Объявляем переменные
' Создаем объект 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";