Объект Drive — Информация о жестком диске

Объект Drive — Информация о жестком диске Объектная модель Windows Script Host

Всем привет, с вами автор блога scriptcoding.ru. Сегодня мы рассмотрим, как можно получить информацию о жестком диске программным способом, с использованием простого текстового блокнота…

Прежде всего, нужно усвоить, что мы будет пользоваться возможностями сервера сценариев Windows Script Host для программирования нужных скриптов. Информация о жестком диске извлекается с помощью объекта Drive и коллекции Drives. Объект Drive содержит свойства для получения такой информации о диске как: серийный номер, тип файловой системы, размер, метку и так далее, коллекция Drives содержит объекты Drive для всех доступных жестких дисков компьютера, в том числе для сетевых и со сменными носителями, у нее нет дополнительных свойств или методов. Что бы получить доступ к объекту Drive, используется метод GetDrive (в качестве параметра передается имя, допустимые варианты: "C ", "C: ", "C: ") объекта FileSystemObject.

Информация о жестком диске – практическая сторона

Прежде всего, давайте познакомимся со свойствами объекта Drive, которые позволяют получить нужную информацию о жестком диске:

AvailableSpace – Позволяет получить объем доступного для пользователя места в байтах.

DriveLetter – Вернет букву (без двоеточия или черточки), которая ассоциируется с локальным устройством или сетевым ресурсом. Это свойство доступно только для чтения.

DriveType – Позволяет определить тип тома. Используемые типы (в скобках указано цифровое значение):

  • Unknown — Неизвестный тип (тип не определяется) (0).
  • Removable — Привод со сменным носителем (например, флешка) (1)
  • Fixed – Фиксированное устройство. Этот тип также включает сменные жесткие носители (2).
  • Remote — Сетевой. Выводится только для подключенных ресурсов (совместно используемых дисков и папок) (3).
  • CDROM — Привод CD-ROM, CD-R и CD-RW не различаются (4).
  • RAMDisk – Смонтированный образ. Виртуальный носитель можно создать с помощью такой программы как Deamon Tools (5).

FileSystem – Информация о жестком диске, такая как тип файловой системы, например, FAT, NTFS или CDFS.

FreeSpace — Позволяет получить объем доступного места в байтах на локальном или сетевом ресурсе. Доступно только для чтения

IsReady — Содержит true, если устройство готово для чтения, и false в противном случае. Для устройств со сменными носителями и приводов CD-ROM, Свойство IsReady возвращает true только в том случае, когда в дисковод вставлен соответствующий носитель, и устройство готово предоставить доступ к этому носителю

Path – Информация о жестких дисках в виде пути к ним, вернет, например: «C:», «D:» и так далее.

RootFolder – Корневой каталог, вернет строку вида «C:», «D:» и так далее. Также, содержит ссылку на объект Folder.

SerialNumber — Информация о носителе (жестком диске) в виде десятичного серийного номера тома.

ShareName – Сетевое имя. Если объект не является сетевым, то свойство вернет пустую строку («»).

TotalSize — Позволяет получить общий объем в байтах на локальном или сетевом ресурсе.

VolumeName – Информация о жестких дисках в виде метки тома, если метки нет, вернет пустую строку («»). Свойство доступно как для чтения, так и для записи:

FSO = WScript.CreateObject("Scripting.FileSystemObject");D = FSO.GetDrive("d:\");D.VolumeName="Новая Метка";

Для смены метки нужны права администратора.

получение информации о жестком диске

Ну что же, теперь можно приступить к программированию. Давайте сделаем так, я сначала покажу вам программный код сценариев, а уже в конце статьи дам краткое описание программного кода.

Вот пример скрипта на языке VBScript, который выводит информацию о жестких дисках компьютера:

' ***********************************************************************' Объект Drive' Информация о жестком диске' informatciya-o-diskah.vbs' ***********************************************************************OptionExplicit' Константы типов дисковConst Unknown = 0Const Removable = 1 Const Fixed = 2 Const Remote = 3 Const CDROM = 4 Const RAMDisk = 5 Dim Text, TitleDim fso, oDrive, curDrive Dim drtype(6)drtype(0) = " Неизвестный носитель "drtype(1) = " Сменный носитель "drtype(2) = " Фиксированный диск "drtype(3) = " Сетевой ресурс "drtype(4) = " CDROM "drtype(5) = " Смонтированный образ "Text = "Информация об имеющихся жестких дисках" & vbCrLf & vbCrLfTitle = "Выводим информацию о доступных жестких дисках"Set fso = WScript.CreateObject("Scripting.FileSystemObject")' Получаем доступ к коллекции DrivesSet oDrive = fso.Drives  'Перебор всех устройствForEach curDrive In oDriveText = Text & curDrive.DriveLetter & vbTab 'Определяем типText = Text & drtype(curDrive.DriveType) & vbTabSelectCase curDrive.DriveTypeCase Fixed If curDrive.IsReady ThenText = Text & "Объем:" & curDrive.TotalSize & vbTab & "Метка:" & curDrive.VolumeName & vbTab & "Файловая система:" & curDrive.FileSystem & vbTabEndIfCase Removable If curDrive.IsReady ThenText = Text & "Объем:" & curDrive.TotalSize & vbTab & "Метка:" & curDrive.VolumeName & vbTab & "Файловая система:" & curDrive.FileSystem & vbTab EndIfCase CDROM If curDrive.IsReady ThenText = Text & "Объем:" & curDrive.TotalSize & vbTab & "Метка:" & curDrive.VolumeName & vbTab & "Файловая система:" & curDrive.FileSystem & vbTab EndIfCase RemoteText = Text & curDrive.ShareName & vbTabCaseElse Text = Text & curDrive.VolumeName & vbTabEndSelectText = Text & vbCrLfNextMsgBox Text, vbOKOnly + vbInformation, Title
сбор информации о жестком диске

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

// ***********************************************************************// Вывод информации о дисках// informatciya-o-diskah.js// ***********************************************************************var Text1, Title;var fso, oDrive, curDrive1, WshShell;var drtype; drtype =newArray(6)drtype[0]=" Неизвестный носитель ";drtype[1]=" Сменный носитель ";drtype[2]=" Фиксированный диск ";drtype[3]=" Сетевой ресурс ";drtype[4]=" CDROM ";drtype[5]=" Смонтированный образ "; var vbOKOnly =0;var vbInformation =64; var Unknown =0var Removable =1var Fixed =2var Remote =3var CDROM =4var RAMDisk =5 Text1 ="Информация об имеющихся жестких дискахnn";Title ="Выводим информацию о доступных дисках"; FSO = WScript.CreateObject("Scripting.FileSystemObject");WshShell = WScript.CreateObject("WScript.Shell"); // Получаем доступ к коллекции DrivesoDrive =new Enumerator(FSO.Drives);for(;!oDrive.atEnd();oDrive. moveNext()){ curDrive1=oDrive.item(); Text1+=curDrive1.DriveLetter+"t";//Определяем тип Text1+=drtype[curDrive1.DriveType]+"t";if(curDrive1.DriveType==Fixed){if(curDrive1.IsReady){Text1+="Объем:"+ curDrive1.TotalSize+"t";Text1+="Метка:"+ curDrive1.VolumeName+"t";Text1+="Файловая система:"+ curDrive1.FileSystem+"t";}}elseif(curDrive1.DriveType==Removable){if(curDrive1.IsReady){Text1+="Объем:"+ curDrive1.TotalSize+"t";Text1+="Метка:"+ curDrive1.VolumeName+"t";Text1+="Файловая система:"+ curDrive1.FileSystem+"t";}}elseif(curDrive1.DriveType==CDROM){if(curDrive1.IsReady){Text1+="Объем:"+ curDrive1.TotalSize+"t";Text1+="Метка:"+ curDrive1.VolumeName+"t";Text1+="Файловая система:"+ curDrive1.FileSystem+"t";}}elseif(curDrive1.DriveType==Remote) Text1+="Файловая система:"+ curDrive1.ShareName+"t";else Text1+="Метка:"+ curDrive1.VolumeName+"t"; Text1+="n";}WshShell.Popup(Text1,0,Title, vbOKOnly + vbInformation);

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

Хорошо, с программированием закончили, теперь можно дать и объяснение. Весь процесс получения информации и дисках вертится в одном цикле, так, в программном коде на языке vbscript мы использовали цикл For Each, а в программном коде на языке jscript мы использовали цикл for. Суть в том, что в цикле происходит перебор всех возможных устройств для хранения данных, проверяется тип каждого устройства (жесткий диск, сетевой ресурс и так далее). Далее в переменную Text происходит запись информации: файловая система, объем и метка носителя. После того как цикл завершит обработку всех носителей, произойдет вывод диалогового окна, в котором будет отображаться информация о жестких дисках, найденных в системе.

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