Книга: Windows Script Host для Windows 2000/XP

Получение свойств WSH и запущенного сценария

Получение свойств WSH и запущенного сценария

На практике часто бывает необходимо знать определенные атрибуты WSH (например, с помощью какого приложения-сервера был запущен сценарий) и сценария, работающего в данный момент (например, имя этого сценария или путь к каталогу, в котором он находится). Некоторые параметры WSH и исполняемого сценария можно определить непосредственно с помощью соответствующих методов объекта WScript:

? полный путь к приложению-серверу (cscript.exe или wscript.exe);

? имя каталога, в котором находится приложение-сервер;

? номер используемой версии WSH;

? полный путь к исполняемому сценарию;

? имя исполняемого сценария.

Для проверки режима, в котором был запущен сценарий, можно предложить функцию IsCScript (ниже приведена реализация этой функции на языке JScript), которая будет возвращать true, если использовался хост cscript.exe (консольный режим), и false, если использовался wscript.exe (графический режим):

function IsCScript() {
 //Проверка режима, в котором запущен сценарий
 return ("с"== WScript.FullName.toLowerCase().charAt(WScript.FullName.length - 11));
}

Как мы видим, вся работа функции IsCScript состоит в определении того, с какой буквы начинается имя приложения-сервера ("с" для cscript.exe или "w" для wscript.exe).

Полный путь к текущему каталогу, т.е. к каталогу, из которого был запущен сценарий, хранится в свойстве CurrentDirectory объекта WshShell.

Если сценарий был запущен не из того каталога, в котором находится сам файл со сценарием, то текущий каталог не будет совпадать с каталогом сценария. Для того чтобы получить путь к каталогу сценария, нужно выделить этот путь из свойства WScript.ScriptFullName, содержащему полный путь к выполняемому сценарию (включая имя файла). На языке JScript это можно реализовать с помощью функции GetScriptDir следующего содержания:

function GetScriptDir() {
 var ScriptDir;
 ScriptDir = WScript.ScriptFullName;
 ScriptDir = ScriptDir.substring(0, ScriptDir.lastIndexOf(""));
 return ScriptDir;
}

Полные тексты сценариев на языках JScript (PropScript.js) и VBScript (PropScript.vbs), выводящих на экран сведения о свойства WSH и запущенного сценария, приведены в листингах 2.19 и 2.20 соответственно; результат работы сценария PropScript.js представлен на рис. 2.7.


Рис. 2.7. Результаты выполнения сценария PropScript.js в графическом режиме

Листинг 2.19. Вывод свойств WSH и запущенного сценария (JScript)

/*******************************************************************/
/* Имя: PropScript.js                                              */
/* Язык: JScript                                                   */
/* Описание: Вывод свойств запущенного сценария                    */
/*******************************************************************/
//Проверка режима, в котором запущен сценарий
function IsCScript() {  
 return ("c"== WScript.FullName.toLowerCase().charAt(WScript.FullName.length - 11));
}
//Возвращает каталог, содержащий запущенный сценарий
function GetScriptDir() {
 var ScriptDir;
 ScriptDir = WScript.ScriptFullName;
 ScriptDir = ScriptDir.substring(0, ScriptDir.lastIndexOf(""));
 return ScriptDir;
}
/*******************  Начало  **********************************/
var WshShell,s; //Объявляем переменные
//Создаем объект WshShell
WshShell=WScript.CreateObject("WScript.Shell");
s="                   Свойства запущенного сценария:nn";
//Проверяем, в каком режиме был запущен сценарий
if (IsCScript()) s+="Запущен в консольном режимеn";
else s+="Запущен в графическом режимеn";
//Определяем остальные параметры
s+="Путь к серверу: "+WScript.FullName+"n";
s+="Каталог сервера: "+WScript.Path+"n";
s+="Версия WSH: "+WScript.Version+"nn";
s+="Текущий каталог: "+ WshShell.CurrentDirectory+"n";
s+="Путь к сценарию: "+WScript.ScriptFullName+"n";
s+="Каталог сценария: "+GetScriptDir()+"n";
s+="Имя сценария: "+WScript.ScriptName+"n";
WScript.Echo(s);  //Выводим сформированные строки
/*************  Конец *********************************************/

Листинг 2.20. Вывод свойств WSH и запущенного сценария (VBScript)

'*******************************************************************
' Имя: 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   ' Выводим сформированные строки
'*************  Конец *********************************************

Оглавление книги


Генерация: 0.033. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз