Объект WScript.Shell метод ExpandEnvironmentStrings и свойство CurrentDirectory — Переменные среды Windows и текущий каталог

Объект WScript.Shell метод ExpandEnvironmentStrings и свойство CurrentDirectory — Переменные среды Windows и текущий каталог Объектная модель Windows Script Host

Доброго времени суток всем гостям блога scriptcoding.ru. В данной статье будет рассмотрен метод ExpandEnvironmentStrings и свойство CurrentDirectory класса WScript_Shell.

Давайте для начала рассмотрим теоретические основы, а уже потом займемся программированием. Как мы помним из прошлых уроков, прежде всего нам нужно создать ссылку на класс WScript_Shell:

Язык VBScript:

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

Язык JScript:

WshShel1 = WScript.CreateObject("WScript.Shell");

В данном случае, для создания ссылки на объект мы используем функцию CreateObject, видим, что для языка VBScript нужно дополнительно прописывать ключевое слово set.

ExpandEnvironmentStrings(strString) – Данные метод ExpandEnvironmentStrings позволяет работать с переменными средами Windows. Метод содержит только один строковой параметр, в котором указывается имя переменной Windows среды (переменные_среды могут создаваться как пользователем, так и системой). ТутstrString является названием переменной среды Windows, которое должно заключаться в символ процента (%). При обзоре метода Environment я уже рассматривал работу с переменными_окружения.

Имена некоторых переменных сред Windows полезно знать:

  • WINDIR – путь к папке Windows.
  • PATH – путь для поиска исполняемых файлов.
  • PATHEXT – список расширений файлов, которые рассматриваются как исполняемые.

CurrentDirectory – Данное свойство хранит полный путь к текущему сценарию. Стоит учитывать один момент, что, если путь содержит пробелы, то при попытке использовать данное свойство для запуска текущего сценария возникнет ошибка. В таких случаях путь должен быть с обеих сторон заключен в двойные кавычки, но есть одна проблема, язык vbscript не позволяет экранировать двойную кавычку, в отличии от JScript. Поэтому, тут нужно применить функцию Chr с кодом 34 (Урок 12 по VBScript: Строковые функции vbs).

Windows переменные среды

Хорошо, с теорией разобрались, теперь давайте приступим к программированию. Для начала напишем программный код на языке VBScript:

'*************************************************************************' Метод ExpandEnvironmentStrings и свойство CurrentDirectory' Windows переменные среды и текущий каталог' expandenvironmentstrings.vbs'**************************************************************************OptionExplicit dim WshShell1, list, cur_dir, res ' формируем ссылку на объектset WshShell1 = WScript.CreateObject("WScript.Shell"With WshShell1 ' текущий каталог cur_dir = .CurrentDirectory ' папка Windows и исполняемые файлы list = .ExpandEnvironmentStrings("%WinDir%") & vbCrLf & .ExpandEnvironmentStrings("%Path%") & vbCrLf ' расширения и текущий каталог list = list & .ExpandEnvironmentStrings("%PathExt%") & vbCrLf & cur_dirEndWith 'Список заданных Windows переменных средMsgBox list ' Запрашиваем у пользователя разрешение на запуск текущей копии сценарияres = MsgBox("Запустить еще раз сценарий ?", vbYesNo + vbQuestion + vbDefaultButton2, "Запуск сценария"If res = vbYes ThenWshShell1.Run(chr(34) & cur_dir & "" & WScript.ScriptName & chr(34))EndIf

В этом примере мы сначала создаём ссылку на нужный класс, которая будет храниться в WshShell1. Далее в cur_dir сохраняем путь к текущему сценарию. В блоке with мы записываем данные вlist, которая хранит информацию о трех Windows переменных средах и путь к текущему сценарию. Далее, с помощью метода MsgBox мы выводим диалоговое окно – если пользователь нажмет ОК, то произойдёт повторный запуск текущего скрипта с помощью функции Run, в противном случае, работа скрипта завершиться. Видим, что для вставки кавычек мы использовали chr(34), тут 34 – код двойных кавычек.

Работа с переменными Windows средами

А вот аналогичный пример, но уже на языке jscript:

//*************************************************************************// Метод ExpandEnvironmentStrings и свойство CurrentDirectory// Windows переменные среды и текущий каталог// expandenvironmentstrings.js//************************************************************************* var WshShell, list1="", cur_dir1, res;var vbOKCancel =1, vbInformation =64; // формируем ссылку на объектWshShell = WScript.CreateObject("WScript.Shell"); with(WshShell){// текущий каталог cur_dir1 = CurrentDirectory;// папка Windows и исполняемые файлы list1+= ExpandEnvironmentStrings("%WinDir%")+"n"+ ExpandEnvironmentStrings("%Path%")+"n";// расширения и текущий каталог list1+= ExpandEnvironmentStrings("%PathExt%")+"n"+ cur_dir1;}//Список заданных переменных окруженияWScript.Echo(list1); // Запрашиваем у пользователя разрешение на запуск текущей копии сценарияres = WshShell.Popup("Запустить еще раз сценарий ?",5,"Запуск сценария", vbOKCancel + vbInformation); if(res ==1){WshShell.Run("""+ cur_dir1 +"\"+ WScript.ScriptName+""");}

Скачать архив для скачивания

Тут вместо функции MsgBox мы использовали функцию Popup объекта Wscript_Shell, а для экранирования кавычек применили ESC-последовательность. В остальном, особых изменений нет, разве что… нам пришлось объявить дополнительные константы vbOKCancel и vbInformation, так как они определены по умолчанию только для языка VBScript.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий