Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   Свободное место на диске (http://forum.oszone.net/showthread.php?t=132160)

InnoSanctum 16-02-2009 15:48 1040242

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

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

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

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

Lex7er 16-02-2009 17:03 1040326

"fsutil volume diskfree c:\"

Delirium 17-02-2009 02:21 1040799

в добавление к посту Lex7er:
Код:

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

Grub 17-02-2009 09:32 1040943

А представить информацию не в байтах, а в КБ или МБ можно?

Telepuzik 17-02-2009 10:02 1040972

Могу предложить скрипт 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 1041061

тогда еще вариант:
Код:

WMIC LogicalDisk Where (Name = "C:") GET FreeSpace

Grub 17-02-2009 12:04 1041075

куда он будет передавать это значение?

amel27 17-02-2009 12:48 1041129

Цитата:

Цитата Grub
куда он будет передавать это значение »

куда угодно, хоть в переменную... но проблема в том, что размер хранится 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?
How Can I Determine the Percentage of Free Space on a Drive?


Время: 19:41.

Время: 19:41.
© OSzone.net 2001-