Коллекция Drives

Коллекция Drives

Доступная только для чтения коллекция Drives содержит объекты Drive для всех доступных дисков компьютера, в том числе для сетевых дисков и дисководов со сменными носителями.

В свойстве Count коллекции Drives хранится число ее элементов, т.е. число доступных дисков.

С помощью метода Item(drivespec) можно получить доступ к объекту Drive для диска, заданного параметром drivespec. Например:

var FSO, DriveCol, D; //Создаем объект FileSystemObject

FSO = WScript.CreateObject("Scripting.FileSystemObject");

//Создаем коллекцию имеющихся в системе дисков

DriveCol = FSO.Drives;

// Извлечение элемента коллекции (диск С:)

D = DriveCol.Item("С:");

//Вывод на экран метки тома диска С:

WScript.Echo("Диск С: имеет метку", D.VolumeName);

Для перебора всех элементов коллекции Drives нужно, как обычно, использовать объект Enumerator. 

В листинге 5.8 приведен файл ListDrives.js, в котором с помощью объекта Enumerator на экран выводятся сведения обо всех доступных дисках (рис. 5.4).

Рис. 5.4. Список всех дисков, имеющихся в системе

Листинг 5.8. Построение списка всех имеющихся дисков

/*******************************************************************/

/* Имя: ListDrives.js                                              */

/* Язык: JScript                                                   */

/* Описание: Получение списка всех имеющихся дисков                */

/*******************************************************************/

//Объявляем переменные

var FSO,s,ss,Drives,D;

//Создаем объект FileSystemObject

FSO = WScript.CreateObject("Scripting.FileSystemObject");

//Создаем коллекцию дисков, имеющихся в системе

Drives = new Enumerator(FSO.Drives);

s="";

//Цикл по всем дискам в коллекции

for (;!Drives.atEnd();Drives.moveNext()) {

 //Извлекаем текущий элемента коллекции

 D=Drives.item();

 //Получаем букву диска

 s+=D.DriveLetter;

 s+=" - ";

 if (D.DriveType == 3) //Проверяем, не является ли диск сетевым

  //Получаем имя сетевого ресурса

  ss=D.ShareName;

 else

  //Диск является локальным

  if (D.IsReady)  //Проверяем готовность диска

   //Если диск готов, то получаем метку тома для диска

   ss=D.VolumeName;

  else ss="Устройство не готово";

 s+=ss+" ";

}

//Выводим полученные строки на экран

WScript.Echo(s);

/*************  Конец *********************************************/