WSH: Свободное место на дисках

Запуск:

cscript freespace.js freespace.txt


Скрипт freespace.js:

/*
Вывод в файл информации о свободном месте на жестких дисках.

Параметры:
[outpufile] - файл в который записывается информация. создается если не было.

*/

var wsh = WScript.CreateObject("WScript.Shell");
var fso = WScript.CreateObject("Scripting.FileSystemObject");
var net = WScript.CreateObject("WScript.Network");

// Должен быть задан выходной файл
if (WScript.Arguments.length == 0) {
WScript.Quit();
}
else {
outpufile = WScript.Arguments(0);
}

// 2 - ForWriting
var log = fso.OpenTextFile(outpufile, 2, true);

function GetFormat( value ) {
var kK = 1024;
var kM = 1024*1024;
var kG = 1024*1024*1024;
var kT = 1024*1024*1024*1024;

if (value > kT) {
return Math.round( value/kT )+' TB';
}
if (value > kG) {
return Math.round( value/kG )+' GB';
}
if (value > kM) {
return Math.round( value/kM )+' MB';
}
if (value > kM) {
return Math.round( value/kK )+' KB';
}
return value+' B';
}

function GetDriveInfo ( Drive ) {
var s;
// процент свободного места
percent = Math.round( Drive.FreeSpace / Drive.TotalSize * 100 );

s = 't'+Drive.DriveLetter+':t'+Drive.VolumeName +'t'+percent + '%t'+ GetFormat( Drive.TotalSize) + 't' + GetFormat(Drive.FreeSpace);

return s;
}

var now = new Date();
var ComputerName = net.ComputerName;
log.WriteLine( now );
log.WriteLine('Computer: '+ComputerName );
log.WriteLine('tDrivetLabelt%tFreetTotal');
log.WriteLine('t-------------------------------------------');

var Drives = fso.Drives;
var eDrives = new Enumerator(fso.Drives);

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

Drive = eDrives.item();

// Обрабытываем только HDD
if ( Drive.DriveType != 2 ) {
continue;
}

//
log.WriteLine( GetDriveInfo( Drive ) );
}