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
作成 2010.01.08
更新 2011.10.24
更新 2011.10.24
VBScript でディスクの空き容量を取得する2
コード
実行結果
df コマンド風に取得するつもりがうまく行かなかった。
C:\>cscript ディスクの空き容量を取得する2.vbs Microsoft (R) Windows Script Host Version 5.8 Copyright (C) Microsoft Corporation 1996-2001. All rights reserved. Letter Full(Byte) Free(Byte) FileSystem Description ----------------------------------------- ------------- ------------- ---------- ----------- C: 119926681600 82213801984 NTFS ローカル固定ディスク D: CD-ROM ディスク X: 8795958759424 8210852638720 NTFS ローカル固定ディスク \\?\Volume{2ffd7e43-bfdb-11e0-8cc8-806e6f6e6963}\ 104853504 73773056 NTFS システムで予約済み C:\>