Centrum Skryptów - Systemy operacyjne

Jak mogę określić, jak określić wolną powierzchnię twardego dysku w procentach? Udostępnij na: Facebook

Skrypciarze odpowiadają na Wasze pytania

Cześć Skrypciarze!

Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy.

Jak mogę określić, jak określić wolną powierzchnię twardego dysku w procentach?

Cześć Skrypciarze! Wiem, jak określić, jaka powierzchnia twardego dysku jest wolna, ale jak obliczyć, ile to procent całej powierzchni?

-- JP

Cześć JP. Masz rację: określenie wolnej powierzchni dysku to nie problem. Wystarczy taki prosty skrypt, by podać liczbę wolnych bajtów na dysku C:

 

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery _

    ("Select * from Win32_LogicalDisk Where DeviceID = 'C:'")

For Each objDisk in colDisks

    Wscript.Echo objDisk.FreeSpace

Next

Mamy dobre wiadomości: określenie, ile to procent powierzchni jest niemal tak samo proste. Wymaga to tylko prostego obliczenia: powierzchnię dostępną trzeba podzielić przez całkowitą powierzchnię dysku. Posłużmy się przykładem bardzo małego, 10-bajtowego dysku, na którym 2 bajty są wolne. I tak, żeby procent wolnej powierzchni, podzielimy 2 przez 10 (wolna powierzchnia przez całkowita powierzchnia), otrzymując 0,20. Oznacza to 20% wolnej powierzchni na naszym mikroskopijnym dysku.

To proste równanie i mamy już jego połowę: właściwość FreeSpace klasy Win32_LogicalDisk podaje, ile jest wolnych bajtów na dysku. Drugą połowę też mamy, chociaż może jeszcze o tym nie wiecie: właściwość Size tej samej klasy podaje rozmiar dysku. Teraz wystarczy podzielić wartość FreeSpace przez wartość Size, i już mamy procent:

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery _

    ("Select * from Win32_LogicalDisk Where DeviceID = 'C:'")

For Each objDisk in colDisks

    intFreeSpace = objDisk.FreeSpace

    intTotalSpace = objDisk.Size

    pctFreeSpace = intFreeSpace / intTotalSpace

    Wscript.Echo pctFreeSpace 

Next

Fajne, prawda? Problem z tym skryptem jest taki, że wyświetla on ułamek dziesiętny w rodzaju 0,22457268101427. Owszem, jest to dokładna wartość, ale nie za bardzo to czytelne. Użyjmy więc VBScriptowej funkcji FormatPercent, dzięki czemu uzyskamy bardziej czytelny format, na przykład 22,45%:

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery _

    ("Select * from Win32_LogicalDisk Where DeviceID = 'C:'")

For Each objDisk in colDisks

    intFreeSpace = objDisk.FreeSpace

    intTotalSpace = objDisk.Size

    pctFreeSpace = intFreeSpace / intTotalSpace

    Wscript.Echo FormatPercent(pctFreeSpace)

Next

O wiele lepiej!

I jeszcze jeden skrypt. Klasa Win32_LogicalDisk domyślnie sprawdza wszystkie dyski komputera, w tym napędy dyskietek, wymienne napędy Zip itp. Jeśli chcesz obliczyć wolną powierzchnię tylko na dyskach twardych, zmodyfikuj zapytanie WQL w ten sposób, by wybierało napędy o wartości DriveType równej 3 (co w świecie WMI oznacza właśnie twardy dysk). Innymi słowy:

strComputer = "."

Set objWMIService = GetObject("winmgmts:" _

    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colDisks = objWMIService.ExecQuery _

    ("Select * from Win32_LogicalDisk Where DriveType = 3")

For Each objDisk in colDisks

    intFreeSpace = objDisk.FreeSpace

    intTotalSpace = objDisk.Size

    pctFreeSpace = intFreeSpace / intTotalSpace

    Wscript.Echo objDisk.DeviceID, FormatPercent(pctFreeSpace)

Next

 

 Do początku strony Do początku strony


Centrum Skryptów - Systemy operacyjne