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
這裡提供您另一個好消息:判斷可用磁碟空間的百分比也幾乎一樣容易。因為只需要一項簡單計算,就能得到可用磁碟空間的百分比:您可以將可用磁碟空間除以磁碟機的全部大小。假設我們擁有一個「非常」小的磁碟機,全部 10 位元組大小的磁碟機具有 2 位元組的可用磁碟空間。如果要判斷可用磁碟空間的百分比,我們可以將 2 除以 10 (可用空間除以全部大小),並取得 .20 的數值。換句話說,在這個極小的磁碟機上還有 20% 的可用空間。
這是相當簡單的方程式,而且我們已經擁有其中的一半:Win32_LogicalDisk 類別的 FreeSpace 屬性告訴我們可用空間的數量。而且雖然您可能並不瞭解,我們也已經擁有方程式的另一半:相同類別的 Size 屬性會告訴我們磁碟機的大小。我們只需要在指令碼中用 FreeSpace 除以 Size,就會得到需要的百分比:
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
很漂亮吧?這個指令碼唯一的問題,就是它會回報像 0.22457268101427 這樣的十進位數字。是的,技術上來說這的確是精確數值,不過這種答案看來實在不像百分比。因此讓我們使用 VBScript 的 FormatPercent 函數來取得像 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
這樣就好多了。
純粹只為有趣,在此提供另一種變化:依預設值,Win32_LogicalDisk 類別會查看您電腦上的「所有」磁碟機,包括軟碟機、卸除式 Zip 磁碟機等等。如果只要取回硬碟機上的可用空間資訊,請修改您的 WQL Query,以便讓查詢選取 DriveType 為 3 (這在 WMI 的世界中,代表一部硬碟機) 的所有磁碟機。換句話說:
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
|