Объект WScript.Shell метод SpecialFolders — Системные папки Windows

Объект WScript.Shell метод SpecialFolders — Системные папки Windows Объектная модель Windows Script Host

Всем привет, с вами автор блога scriptcoding.ru. В этой статье мы изучим свойство объекта WScript Shell SpecialFolders, которое позволяет взаимодействовать с системными папками Windows.

Специальные паки или системные папки Windows – это каталоги типа Шрифты, Мои Документы текущего пользователя или Главное меню (Пуск). Частично, работу с системными папками Windows я рассмотрел в статье «Объект FileSystemObject метод GetSpecialFоldеr«.

Системные папки Windows

Свойство SреcialFolders класса WScript_Shell предоставляет доступ к коллекции, у которой есть свойство length и count, а также метод item. Оба свойства (length и и count) выполняют идентичную задачу – они позволяют получить общее количество всех элементов коллекции. Метод item(str) позволяет получить информацию о текущем элементе (параметр str) коллекции.

Прежде всего, давайте рассмотрим, какие есть системные (специальные) папки Windows:

  • Desktop — Рабочий стол
  • Favorites — Меню Избранное
  • Fonts – Каталог со шрифтами
  • MyDocuments –Мои документы
  • NetHood — Пустая директория, используемая в качестве шаблона для сетевой среды.
  • PrintHood — Пустая директория, используемая для отображения принтеров в сети.
  • Programs — Подменю Программы меню Пуск
  • Recent — Каталог со списком последних открываемых документов
  • SendTo — Указывает на каталог SendTo.
  • StartMenu — Главное меню (Пуск)
  • Startup — Автозагрузка
  • Templates — Директория ShellNew, содержащая шаблоны для создаваемых файлов.

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

' ***********************************************************' wscript_shell_specialFolders' Выводим список всех системных папок Windows' special.vbs'************************************************************OptionExplicit Dim SpecObj, WshShellDim list_1, list_2, index, i  list_1 = "Список системных папок Windows:" & vbCrLf & vbCrLflist_2 = "Список системных папок Windows:" & vbCrLf & vbCrLf ' Создаем ссылку на класс WScript_Shellset WshShell = WScript.CreateObject("WScript.Shell"' Создаем ссылку на коллекцию SpecialFоldеrsset SpecObj = WshShell.SpecialFolders ' Используем пройстой циклfor i=0 to SpecObj.Count-1 list_1 = list_1 & SpecObj(i) & vbCrLfnext MsgBox list_1 ' Используем специальный циклForEach index In WshShell.SpecialFolders list_2 = list_2 & index & vbCrLfNext MsgBox list_2

В этом примере используются два цикла для получения списка всех системных папок Windows. Первый цикл является стандартным, в нем мы указали переменную i, задали ей начальное значение – 0 и прописали условие окончания: SpесОbj.Count-1, тут SpесОbj является переменной, которая хранит в себе ссылку на коллекцию SpecialFоlders класса WScript_Shell. Так как нумерация элементов коллекции начинается с нуля, то мы приписали Count-1, что практически означает – общее количество минус 1. Вместо свойства Count мы могли использовать и length для определения количества всех элементов. Второй цикл также позволяет получить все системные папки Windows, но он является специализированным, и используется в том случае, когда начальное и конечное значения не известны. Оба подхода вернут одинаковый результат.

системные папки ОС windows

Также видим, что сначала мы создали ссылку на объект WScript.Shell – она хранится в переменной WshShell, перед переменной находится ключевое слово set. Используя переменную WshShell, мы обратились к свойству SpесialFolders WScript_Shell объекта, тем самым получили доступ к коллекции.

Теперь давайте рассмотрим аналогичный пример, но уже на языкеjscript.

// ***********************************************************// wscript_shell_specialFolders// Выводим список всех системных папок Windows// special.js//************************************************************ var SpecObj, WshShell, col;var list_1, list_2, index, i; list_1 ="Список системных папок Windows:nn";list_2 ="Список системных папок Windows:nn"; // Создаем ссылку на класс WScript_ShellWshShell = WScript.CreateObject("WScript.Shell"); // Создаем ссылку на коллекцию SресialFoldersSpecObj = WshShell.SpecialFolders; // Объект Enumeratorcol =new Enumerator(SpecObj); // Используем пройстой циклfor(i=0; i<=SpecObj.Length-1; i++){ list_1+=SpecObj(i)+"n";} WScript.Echo(list_1); // Используем специальный циклfor(;!col.atEnd(); col.moveNext())list_2+=col.item()+"n"; WScript.Echo(list_2);

Тут нам пришлось использовать объект Enumerator языка jscript, что бы обработать коллекцию. Как и в предыдущем примере, тут я использовал два цикла – стандартный и специализированный. Системные папки Windows.

Работа с системными папками ОС Windows

Скачать архив с примерами

Хорошо, теперь давайте рассмотрим еще такой пример.

' ***********************************************************' wscript_shell_specialFolders' Использование метода item' Системные папки ОС Windows' special_1.vbs'************************************************************OptionExplicit Dim SpecObj, WshShell, list  ' Создаем ссылку на класс WScript_Shellset WshShell = WScript.CreateObject("WScript.Shell"' Создаем ссылку на коллекцию SреcialFoldersset SpecObj = WshShell.SpecialFolders ' рабочий столlist = SpecObj.item("Desktop") & vbCrLf' шрифтыlist = list & SpecObj.item("Fonts") & vbCrLf' меню Пускlist = list & SpecObj.item("StartMenu") & vbCrLf' подменю Программыlist = list & SpecObj.item("Programs") MsgBox list

В этом примере с помощью метода item мы получили полный путь к заданным системным папкам Windows.

Вот аналогичный пример на языке jscript:

// ***********************************************************// wscript_shell_specialFolders// Использование метода item// Системные папки ОС Windows// special_1.js//************************************************************ var SpecObj, WshShell, list; // Создаем ссылку на класс WScript_ShellWshShell = WScript.CreateObject("WScript.Shell"); // Создаем ссылку на коллекцию SресialFoldersSpecObj = WshShell.SpecialFolders; // рабочий столlist = SpecObj.item("Desktop")+"n"// шрифтыlist+= SpecObj.item("Fonts")+"n"// меню Пускlist+= SpecObj.item("StartMenu")+"n"// подменю Программыlist+= SpecObj.item("Programs") WScript.Echo(list);

И так, в этой статье мы рассмотрели системные папки Windows, а точнее метод SpecialFolders объекта Wscript_Shell.

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