Отчет об использовании дискового пространства

Отчет об использовании дискового пространства

Напишем сценарий DrivesReport.js, который будет создавать таблицу использования дискового пространства для дисков всех типов (съемных, жестких и сетевых), имеющихся на компьютере, в следующем формате:

Диск: буква_диска 
Метка тома: метка  Общий объем, Mb: n1 
Используется, Mb: n2  Свободно, Mb: n3 

Для этого в сценарии вывод информации производится в текстовый файл rep.txt (переменная RepFile), который затем открывается с помощью Блокнота (рис. 5.8):

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

WshShell=WScript.CreateObject("WScript.Shell");

//Запускаем Блокнот (notepad.exe) и открываем в нем файл rep.txt

WshShell.Run("notepad.exe rep.txt"); 

Данные об одном диске формируются в функции WriteDriveInfo(drive), где в качестве параметра drive подставляется объект Drive для нужного диска. Соответствующие объекты Drive для всех дисков, имеющихся в системе, создаются в функции LoopDrives():

// Функция для перебора в цикле всех устройств (дисков)

function LoopDrives() {

 var Drives;

 //Создаем коллекцию дисков

 Drives = new Enumerator( FSO.Drives );

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

 for(; !Drives.atEnd(); Drives.moveNext()) WriteDriveInfo(Drives.item());

}

Рис. 5.8. Сформированный отчет об использовании дискового пространства

В функции WriteDriveInfo(drive) сначала проверяется готовность устройства drive — если свойство IsReady объекта Drive равно true, то для этого устройства определяются общий объем (свойство TotalSize), объем свободного пространства (свойство FreeSpace), буква диска (свойство DriveLetter) и метка тома (свойство FreeSpace):

//Вычисляем общий объем диска в мегабайтах

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");

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

// Вспомогательные функции 

//Выравнивание строки s вправо в поле длиной l символов

function RFillStr(l,s) { 

 var ss,i,ll;

 ll=l-s.length;

 if (s.length>=l) {

  return(s);

 } else {

  ss=s;

  for (i=1;i<=ll;i++) {

   ss=" "+ss;

  }

  return(ss);

 }

}

//Выравнивание строки s влево в поле длиной l символов

function LFillStr(l,s) {

 var ss,i,ll;

 ll=l-s.length;

 if (s.length>=l) {

  return(s);

 } else {

  ss=s;

  for (i=1;i<=ll;i++) {

   ss=ss+" ";

  }

  return(ss);

 }

}

//Выравнивание строки s по центру в поле длиной l символов

function FillStr(l,s) {

 var ss,i,ll,s1,l2;

 ll=l-s.length;

 if (s.length>=l) {

  return(s);

 } else {

  ss=s;

  l2=Math.round((l-s.length)/2);

  ss=LFillStr(s.length+l2,s);

  ss=RFillStr(l,ss);

  return(ss);

 }

}

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг:

Проблемы при использовании

Из книги автора

Проблемы при использовании Даже если положиться на то, что спрайты поддерживаются (почти) всеми браузерами на данный момент, все равно остается достаточно много вопросов, которые они не только не решают, а скорее сами создают. Во-первых, это проблемы при использовании


8.6.2. Освобождение дискового пространства

Из книги автора

8.6.2. Освобождение дискового пространства Теперь вы знаете, как определить, сколько места займет на диске устанавливаемый пакет, и каков объем свободного пространства на диске. Рассмотрим, что можно сделать, если свободного места не достаточно. Надо заметить, что при


16.2. Структура дискового раздела в ext2fs

Из книги автора

16.2. Структура дискового раздела в ext2fs Производители жестких дисков обычно поставляют свои изделия отформатированными на низком уровне. Насколько я знаю, это означает, что все дисковое пространство с помощью специальных меток разбито на "сектора", размером 512 байт. Такой


Простота в использовании

Из книги автора

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


2.1.9. Передача данных при использовании UDP

Из книги автора

2.1.9. Передача данных при использовании UDP Мы наконец-то добрались до изучения того, ради чего сокеты и создавались: как передавать и получать с их помощью данные. По традиции начнем рассмотрение с более простого протокола UDP. Функции, которые рассматриваются в этом разделе,


2.1.11. Передача данных при использовании TCP

Из книги автора

2.1.11. Передача данных при использовании TCP При программировании TCP и UDP применяются одни и те же функции, но их поведение при этом различно. Для передачи данных с помощью TCP необходимо сначала установить соединение, и после этого возможен обмен данными только с тем адресом, с


Отчет об ошибках

Из книги автора

Отчет об ошибках На вкладке Дополнительно в окне Свойства системы нажимаем кнопку Отчет об ошибках. Откроется одноименное окно Отчет об ошибках (рис. 4.5), в котором устанавливаем переключатель в положение Отключить отчет об ошибках и оставляем установленным флажок Но


11.3.3. Отображение объема свободного дискового пространства

Из книги автора

11.3.3. Отображение объема свободного дискового пространства Модуль diskfree.so (исходный текст приведен в листинге 11.8) генерирует страницу с информацией о свободном дисковом пространстве в файловых системах, смонтированных на серверном компьютере. Эта информация берется из


Отчет о кандидатах на работу

Из книги автора

Отчет о кандидатах на работу В программе реализована возможность составления отчета о кандидатах, желающих устроиться на работу в компанию. Чтобы перейти в режим настройки и формирования данного отчета, нужно выполнить команду главного меню


Отчет о вакансиях в компании

Из книги автора

Отчет о вакансиях в компании В данном разделе мы рассмотрим, каким образом в системе осуществляется настройка и формирование отчета о вакансиях, имеющихся в компании.Для перехода в режим работы с данным отчетом предназначена команда главного меню


4.4 Отчет о тестировании

Из книги автора

4.4 Отчет о тестировании В отчете о тестировании должны быть суммированы цели и результаты тестирования (описанные в протоколах тестирования для каждого теста). Отчет о тестировании должен иметь следующую структуру.1 Обозначение продукта.2 Вычислительные системы,


1.2. Производительность и объем дискового пространства

Из книги автора

1.2. Производительность и объем дискового пространства Windows 7 уже не кажется неповоротливым монстром, пожирающим системные ресурсы вашего компьютера. Тому есть две причины. Первая причина — в Microsoft действительно уделили много внимания оптимизации системы. Например,