//Записываем информацию о букве диска
s='|'+FillStr(51,'Диск '+DriveLetter)+'|';
RepFile.WriteLine(s);
RepFile.WriteLine('+---------------------------------------------------+');
//Записываем информацию о метке тома
s='|'+LFillStr(25,'Метка тома: '+VolumeName)+'|';
//Записываем информацию об общем объеме диска
s+=LFillStr(25,'Общий объем, Mb: '+Total)+'|';
RepFile.WriteLine(s);
RepFile.WriteLine('+---------------------------------------------------+');
//Записываем информацию об использованном пространстве
s='|'+LFillStr(25,'Используется, Mb: '+Used.toString())+'|';
//Записываем информацию о свободном пространстве
s+=LFillStr(25,'Свободно, Mb: '+Free.toString())+'|';
RepFile.WriteLine(s);
RepFile.WriteLine('+---------------------------------------------------+');
Если же устройство drive
IsReady
равно false
), то с помощью свойства DriveType
проверяется, не является ли ли диск сетевым (в этом случае DriveType=3
), после чего в файл выводится соответствующее сообщение:
if (drive.DriveType == 3) { //Проверяем, является ли диск сетевым
//Записываем информацию о букве диска
RepFile.WriteLine( 'Диск ' + drive.DriveLetter + ' является сетевым' );
//Записываем пустые строки
RepFile.WriteLine();
RepFile.WriteLine();
} else {
//Устройство не готово
RepFile.WriteLine( 'Устройство ' + drive.DriveLetter + ': не готово' );
//Записываем пустые строки
RepFile.WriteLine();
RepFile.WriteLine();
}
Полный текст сценария DrivesReport.js приведен в листинге 5.16.
/*******************************************************************/
/* Имя: DrivesReport.js */
/* Язык: JScript */
/* Описание: Формирование отчета об использовании дискового */
/* пространства для всех устройств на компьютере */
/*******************************************************************/
//Объявляем переменные
var FSO, RepFile, MDate,WshShell, ForWriting = 2;
// Функция для перебора в цикле всех устройств (дисков)
function LoopDrives() {
var Drives;
//Создаем коллекцию дисков
Drives = new Enumerator( FSO.Drives );
//Цикл по всем дискам
for(; !Drives.atEnd(); Drives.moveNext()) WriteDriveInfo(Drives.item());
}
// Функция для вывода информации об одном устройстве (диске)
function WriteDriveInfo(drive) {
var s,Total,Free,Used,DriveLetter,VolumeName;
if (drive.IsReady) { //Проверяем готовность устройства
//Вычисляем общий объем диска в мегабайтах
Total = Math.round(drive.TotalSize/1048576);
//Вычисляем объем свободного пространства в мегабайтах
Free = Math.round(drive.FreeSpace/1048576);
//Вычисляем объем использованного пространства в мегабайтах
Used = Total - Free;
//Определяем букву диска
DriveLetter=drive.DriveLetter+':';
//Определяем метку тома
VolumeName=drive.VolumeName;
RepFile.WriteLine('+---------------------------------------------------+');
//Записываем информацию о букве диска
s='|'+FillStr(51,'Диск '+DriveLetter)+'|';
RepFile.WriteLine(s);
RepFile.WriteLine('+---------------------------------------------------+');
//Записываем информацию о метке тома
s='|'+LFillStr(25,'Метка тома: '+VolumeName)+'|';
//Записываем информацию об общем объеме диска
s+=LFillStr(25,'Общий объем, Mb: '+Total)+'|';
RepFile.WriteLine(s);
RepFile.WriteLine('+---------------------------------------------------+');
//Записываем информацию об использованном пространстве
s='|'+LFillStr(25,'Используется, Mb: '+Used.toString())+'|';
//Записываем информацию о свободном пространстве
s+=LFillStr(25,'Свободно, Mb: '+Free.toString())+'|';
RepFile.WriteLine(s);
RepFile.WriteLine('+---------------------------------------------------+');
//Записываем пустые строки
RepFile.WriteLine();
RepFile.WriteLine();
} else if (drive.DriveType == 3) { //Проверяем, является ли диск сетевым
//Записываем информацию о букве диска
RepFile.WriteLine( 'Диск ' + drive.DriveLetter + ' является сетевым' );
//Записываем пустые строки
RepFile.WriteLine();
RepFile.WriteLine();
} else {
//Устройство не готово
RepFile.WriteLine( 'Устройство ' + drive.DriveLetter + ': не готово' );
//Записываем пустые строки
RepFile.WriteLine();
RepFile.WriteLine();
}