Объект 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
'************************************************************
Option Explicit
 
Dim SpecObj, WshShell
Dim list_1, list_2, index, i                     
 
list_1 = "Список системных папок Windows:" & vbCrLf & vbCrLf
list_2 = "Список системных папок Windows:" & vbCrLf & vbCrLf
 
' Создаем ссылку на класс WScript_Shell
set WshShell = WScript.CreateObject("WScript.Shell")
 
' Создаем ссылку на коллекцию SpecialFоldеrs
set SpecObj = WshShell.SpecialFolders
 
' Используем пройстой цикл
for i=0 to SpecObj.Count-1
     list_1 = list_1 & SpecObj(i) & vbCrLf
next
 
MsgBox list_1
 
' Используем специальный цикл
For Each index In WshShell.SpecialFolders
     list_2 = list_2 & index & vbCrLf
Next
 
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:\n\n";
list_2 = "Список системных папок Windows:\n\n";
 
// Создаем ссылку на класс WScript_Shell
WshShell = WScript.CreateObject("WScript.Shell");
 
// Создаем ссылку на коллекцию SресialFolders
SpecObj = WshShell.SpecialFolders;
 
// Объект Enumerator
col = 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
'************************************************************
Option Explicit
 
Dim SpecObj, WshShell, list                 
 
' Создаем ссылку на класс WScript_Shell
set WshShell = WScript.CreateObject("WScript.Shell")
 
' Создаем ссылку на коллекцию SреcialFolders
set 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_Shell
WshShell = WScript.CreateObject("WScript.Shell");
 
// Создаем ссылку на коллекцию SресialFolders
SpecObj = 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.

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