作成 2010.01.21
更新 2010.01.22
VBScript でユーザー プロファイル フォルダのサイズを取得する
エラーメッセージ

Windows Vista, 7 では Folder オブジェクトSize プロパティを取得する際、以下のエラーが表示されることがある。
プロファイル フォルダやフォルダ リダイレクトの対象がこれに該当する。

エラー:	書き込みできません。
コード:	800A0046
ソース: Microsoft VBScript 実行時エラー
コード

やり方がわからなかったので力技で。

Option Explicit
Dim FSO, WshShell, objFolder
Dim strProfilePath
Set FSO = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")
strProfilePath = WshShell.ExpandEnvironmentStrings("%USERPROFILE%")
Set objFolder = FSO.GetFolder(strProfilePath)
WScript.Echo GetFolderSize(objFolder)

Function GetFolderSize(fld)
  Dim size_sum, f1
  On Error Resume Next
  size_sum = fld.Size
  If Err.Number <> 0 Then
    On Error Goto 0
    size_sum = 0
    For Each f1 in fld.SubFolders
      If (f1.Attributes And 1024) = 0 Then
        size_sum = size_sum + GetFolderSize(f1)
      End If
    Next
    For Each f1 in fld.Files
      size_sum = size_sum + f1.Size
    Next
  End If
  On Error Goto 0
  GetFolderSize = size_sum
End Function
タグ: VBScript

©2004-2017 UPKEN IPv4