Объект 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
' ***********************************************************************
Option Explicit
' Константы типов дисков
Const Unknown = 0
Const Removable = 1   
Const Fixed = 2           
Const Remote = 3       
Const CDROM = 4       
Const RAMDisk = 5       
Dim Text, Title
Dim fso, oDrive, curDrive   
Dim drtype(6)
drtype(0) = " Неизвестный носитель "
drtype(1) = " Сменный носитель "
drtype(2) = " Фиксированный диск "
drtype(3) = " Сетевой ресурс "
drtype(4) = " CDROM "
drtype(5) = " Смонтированный образ "
Text = "Информация об имеющихся жестких дисках" & vbCrLf & vbCrLf
Title = "Выводим информацию о доступных жестких дисках"
Set fso = WScript.CreateObject("Scripting.FileSystemObject")
' Получаем доступ к коллекции Drives
Set oDrive = fso.Drives     
 
'Перебор всех устройств
For Each curDrive In oDrive                
    Text = Text & curDrive.DriveLetter & vbTab   
    'Определяем тип
    Text = Text & drtype(curDrive.DriveType) & vbTab
    Select Case curDrive.DriveType
        Case Fixed                   
            If curDrive.IsReady Then
                Text = Text & "Объем:" & curDrive.TotalSize & vbTab & "Метка:" & curDrive.VolumeName & vbTab & "Файловая система:" & curDrive.FileSystem & vbTab
            End If   
        Case Removable                   
            If curDrive.IsReady Then
                Text = Text & "Объем:" & curDrive.TotalSize & vbTab & "Метка:" & curDrive.VolumeName & vbTab & "Файловая система:" & curDrive.FileSystem & vbTab       
            End If
        Case CDROM                   
            If curDrive.IsReady Then
                                        Text = Text & "Объем:" & curDrive.TotalSize & vbTab & "Метка:" & curDrive.VolumeName & vbTab & "Файловая система:" & curDrive.FileSystem & vbTab       
            End If
        Case Remote
            Text = Text & curDrive.ShareName & vbTab              
        Case Else                       
            Text = Text & curDrive.VolumeName & vbTab      
    End Select
    Text = Text & vbCrLf
Next
MsgBox Text, vbOKOnly + vbInformation, Title
сбор информации о жестком диске

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

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

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