Андрей Попов - Windows Script Host для Windows 2000/XP
//Вычисляем общий объем диска в мегабайтах
Total = Math.round(drive.TotalSize/1048576);
//Вычисляем объем свободного пространства в мегабайтах
Free = Math.round(drive.FreeSpace/1048576);
//Вычисляем объем использованного пространства в мегабайтах
Used = Total - Free;
//Определяем букву диска
DriveLetter=drive.DriveLetter+":";
//Определяем метку тома
VolumeName=drive.VolumeName;
Строки с полученными значениями затем приводятся к нужному виду с помощью вспомогательных функций LFillStr (выравнивание строки влево), FillStr (выравнивание строки по центру) и записываются в выходной файл RepFile:
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("+---------------------------------------------------+");
Если же устройство 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.
Листинг 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();
В }
}
/******************* Начало **********************************/
//Создаем объект FileSystemObject
FSO = WScript.CreateObject("Scripting.FileSystemObject");
//Открываем файл rep.txt
RepFile = FSO.OpenTextFile("rep.txt", ForWriting, true);
//Определяем текущую дату и время
MDate = new Date();
//Записываем дату и время в отчет
RepFile.WriteLine("Дата отчета: " + MDate);
RepFile.WriteLine();
//Вызываем функцию LoopDrives
LoopDrives();
//Закрываем файл rep.txt
RepFile.Close();
//Создаем объект WshShell
WshShell=WScript.CreateObject("WScript.Shell");
//Запускаем Блокнот (notepad.exe) и открываем в нем файл rep.txt
WshShell.Run("notepad.exe rep.txt");
/************* Конец *********************************************/