Войти

Показать полную графическую версию : Свободное место на диске


InnoSanctum
16-02-2009, 15:48
Стоит задача - слежение за свободным местом на жестких дисках серверов под управлением windows 2003.
У меня была идея испольщовать команду dir, но уж больно хлопотно вырезать оттуда циферки.

Замечательно удобная программа Conrtol Agent несет в себе такой функционал - позволяет следить за местом, не особенно загружая при этом систему, но увы - безбожно врет.

Смотрел SpaceQuard Quota Server - отличная софтина, мощная, наглядная, но уж больно тяжеловесная и не дружит с Акронисом.

Подскажите, пожалуйста, есть ли какой-то удобный способ узнать количество свободного (или занятого) места на диске из командной строки win2003? или, быть может, какое-то готовое решение?
Спасибо.

Lex7er
16-02-2009, 17:03
"fsutil volume diskfree c:\"

Delirium
17-02-2009, 02:21
в добавление к посту Lex7er: fsutil volume diskfree c:\ >C:\freespace.txt
Данные запишутся в C:\freespace.txt, можно данную задачу запихать в планировщик и потом просто смотреть содержимое файла.

Grub
17-02-2009, 09:32
А представить информацию не в байтах, а в КБ или МБ можно?

Telepuzik
17-02-2009, 10:02
Могу предложить скрипт free.js:


var fso, d, s;
var stdout = WScript.StdOut;
fso = new ActiveXObject("Scripting.FileSystemObject");
d = fso.GetDrive(fso.GetDriveName("c:"));
stdout.WriteLine(d.FreeSpace + " Bytes");
s = d.FreeSpace/1024;
stdout.WriteLine(s + " Kbytes");
s = s/1024;
stdout.WriteLine(s + " MBytes");
s = s/1024;
stdout.WriteLine(s + " GBytes");

Запускать: cscript free.js

amel27
17-02-2009, 11:51
тогда еще вариант:
WMIC LogicalDisk Where (Name = "C:") GET FreeSpace

Grub
17-02-2009, 12:04
куда он будет передавать это значение?

amel27
17-02-2009, 12:48
куда он будет передавать это значение »
куда угодно, хоть в переменную... но проблема в том, что размер хранится 64-битным числом, а CMD понимает только 32-битные целые числа, что соответствует лишь 4Гб размера в байтах... а если учесть только положительные, то и того меньше - до 2-х Гб точного значения свободного места в байтах
@Echo Off

For /F "UseBackQ" %%i In (`WMIC LogicalDisk Where Name^="C:" GET FreeSpace`) Do Set FreeSpace=%%i
SET /A FreeSpace=%FreeSpace% 2>Nul

IF ERRORLEVEL 1 (
Set Message=На диске свободно более 4-х Гб
GoTo MESSAGE
)

IF %FreeSpace% LSS 0 (
Set Message=На диске свободно от 2-х до 4-х Гб
GoTo MESSAGE
)

Set /A FreeSpaceKb = %FreeSpace% / 1024
Set /A FreeSpaceMb = %FreeSpaceKb% / 1024
Set Message=На диске свободно %FreeSpaceMb% Mb

:MESSAGE
@Echo %Message%

ADD: к слову, в репозитарии Microsoft есть варианты на VBScript (в процентах):

How Can I Determine the Percentage of Free Space on a Drive? (http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct04/hey1013.mspx)
How Can I Determine the Percentage of Free Space on a Drive? (http://www.microsoft.com/technet/scriptcenter/resources/qanda/oct07/hey1015.mspx)




© OSzone.net 2001-2012