タグ
  Active Directory (51)
  ANSI (1)
  bash (1)
  BAT (14)
  bind (1)
  CentOS (3)
  CSharp (1)
  C言語 (4)
  DNS (3)
  Excel (1)
  Fedora (4)
  FreeBSD (3)
  iSCSI (1)
  Java (11)
  JavaScript (6)
  Link (4)
  Linux (15)
  Mail (1)
  Microsoft (4)
  NIS (1)
  OpenLDAP (2)
  OpenSolaris (4)
  PHP (2)
  PostgreSQL (2)
  PowerShell (33)
  RFC (3)
  Solaris (10)
  SQL Server (1)
  Ubuntu (3)
  VBScript (65)
  Visual Basic (1)
  VMware (2)
  Windows (14)
  WMI (16)
  WSF (5)
  WSH (10)
  作成中 (5)
  慣用句 (1)
  正規表現 (6)
VBScript でディスクの空き容量を取得する2
Option Explicit

Dim wmiLocator
Dim wmiService
Dim objEnumerator
Dim objInstance
Dim strDisks()
Dim strDivide(5)
Dim intI
Dim intJ
Dim intK
Dim tmpSize

Set wmiLocator = CreateObject("WbemScripting.SWbemLocator")
Set wmiService = wmiLocator.ConnectServer
Set objEnumerator = wmiService.ExecQuery("Select * From Win32_LogicalDisk")

ReDim Preserve strDisks(5, 1)
strDisks(0, 0) = "Letter"
strDisks(1, 0) = "Full(Byte)"
strDisks(2, 0) = "Free(Byte)"
strDisks(3, 0) = "FileSystem"
strDisks(4, 0) = "Description"

intI = 1
For Each objInstance In objEnumerator
  ReDim Preserve strDisks(5, intI + 1)
  strDisks(0, intI) = objInstance.Name
  strDisks(1, intI) = objInstance.Size
  strDisks(2, intI) = objInstance.FreeSpace
  strDisks(3, intI) = objInstance.FileSystem
  strDisks(4, intI) = objInstance.Description
  intI = intI + 1
Next

Set objEnumerator = wmiService.ExecQuery("Select * From Win32_Volume")
For Each objInstance In objEnumerator
  If IsNull(objInstance.DriveLetter) Then
    ReDim Preserve strDisks(5, intI + 1)
    strDisks(0, intI) = objInstance.Name
    strDisks(1, intI) = objInstance.Capacity
    strDisks(2, intI) = objInstance.FreeSpace
    strDisks(3, intI) = objInstance.FileSystem
    strDisks(4, intI) = objInstance.Label
    intI = intI + 1
  End If
Next

' 位置調整
For intK = 0 To 4
  tmpSize = 0
  For intJ = 0 To intI - 1
    If tmpSize < Len(strDisks(intK, intJ)) Then tmpSize = Len(strDisks(intK, intJ))
  Next
  If intK = 1 Or intK = 2 Then
    strDisks(intK, 0) = Left(strDisks(intK, 0) & "                                ", tmpSize + 1)
    For intJ = 1 To intI - 1
      strDisks(intK, intJ) = Right("                                " & strDisks(intK, intJ) & " ", tmpSize + 1)
    Next
  Else
    For intJ = 0 To intI - 1
      strDisks(intK, intJ) = Left(strDisks(intK, intJ) & "                                ", tmpSize + 1)
    Next
  End If
  strDivide(intK) = Left("-----------------------------------------", tmpSize) & " "
Next

' 表示
WScript.Echo strDisks(0, 0) & strDisks(1, 0) & strDisks(2, 0) & strDisks(3, 0) & strDisks(4, 0)
WScript.Echo strDivide(0) & strDivide(1) & strDivide(2) & strDivide(3) & strDivide(4)
For intJ = 1 To intI - 1
  WScript.Echo strDisks(0, intJ) & strDisks(1, intJ) & strDisks(2, intJ) & strDisks(3, intJ) & strDisks(4, intJ)
Next
タグ: VBScript WMI
[リロード] [記事修正] [新規作成] [使用方法]
©2004-2010 UPKEN