タグ
  ANSI (1)
  ASP.NET (10)
  Active Directory (55)
  BAT (16)
  Backup (2)
  CSharp (11)
  CentOS (4)
  C言語 (4)
  DNS (4)
  Excel (2)
  FFmpeg (1)
  Fedora (4)
  FreeBSD (6)
  IPv6 (3)
  Java (11)
  JavaScript (8)
  LAN (1)
  Link (4)
  Linux (15)
  Mac (1)
  Mail (2)
  Microsoft (3)
  NIS (1)
  Node.js (6)
  OpenIndiana (1)
  OpenLDAP (2)
  OpenSSL (1)
  OpenSolaris (4)
  PHP (2)
  Perl (2)
  Postfix (1)
  PostgreSQL (2)
  PowerShell (34)
  RFC (3)
  SQL Server (5)
  Solaris (10)
  Ubuntu (9)
  VBScript (73)
  VCpp (2)
  VMware (3)
  Visual Basic (1)
  WMI (17)
  WSF (5)
  WSH (10)
  Windows (19)
  bash (1)
  bind (1)
  iSCSI (1)
  作成中 (8)
  慣用句 (3)
  正規表現 (6)
  運用 (8)
作成 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-2012 UPKEN IPv4