Drive.FreeSpace プロパティ

本ページには広告が含まれています。

指定したドライブまたはネットワーク共有上で、ユーザーが利用可能な空き領域の量を返します。

構文
  1. Double = Drive.FreeSpace
引数
戻り値
指定したドライブの空き容量(バイト単位)

Drive オブジェクトを返すメソッド・プロパティ

FSO.FreeSpace
指定したパスのドライブに対応するFSO.FreeSpaceを返します。
FSO.Drives プロパティ
コンピューター上のすべてのFSO.FreeSpaceを格納したDrivesコレクション返します。
File.Drive プロパティ
指定したファイルがあるFSO.FreeSpaceを返します。

使い方

Cドライブの空き容量を取得します。

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Drive = FSO.GetDrive("C")

PRINT Drive.FreeSpace + "Bytes"
結果
プレーンテキスト
31347015680Bytes

Drive.FreeSpace プロパティはバイト単位の値を返すため、適切な単位に合わせる場合はFreeSpace関数 (自作関数)を使います。

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Drive = FSO.GetDrive("C")
DIM size = Drive.FreeSpace

PRINT size + "Bytes"
PRINT formatBytes(size)
結果
プレーンテキスト
31346110464Bytes
29.19GB

プログラム実行例

すべてのドライブの情報を取得

.png
UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Drives = FSO.Drives
DIM types[] = "不明", "リムーバブルドライブ", "ハードディスク", "ネットワークドライブ", "CD-ROM", "RAMドライブ"

FOR Drive IN Drives
	WITH Drive
		IFB .IsReady = TRUE THEN
			PRINT "空き容量:" + formatBytes(.AvailableSpace)
			PRINT "ドライブ文字:" + .DriveLetter
			PRINT "種類:" + types[.DriveType]
			PRINT "ファイルシステム:" + .FileSystem
			PRINT "空き容量:" + formatBytes(.FreeSpace)
			PRINT "準備状態:" + .IsReady
			PRINT "パス:" + .Path
			PRINT "ルートフォルダ:" + .RootFolder
			PRINT "シリアルナンバー:" + .SerialNumber
			PRINT "ネットワーク共有名:" + .ShareName
			PRINT "ネットワーク共有のサイズ:" + formatBytes(.TotalSize)
			PRINT "ボリューム名:" + .VolumeName
		ENDIF
	ENDWITH
	PRINT "----------"
NEXT

//////////////////////////////////////////////////
// 【引数】
//   size : バイト単位で示されるデータサイズの値 
//   digits : 小数点以下の桁数 
//   unit : 変換後のデータサイズの単位。Bytes、KB、MB、GB、TB、PB、EB、ZB、YBのいずれかを指定。省略した場合は自動的に選択されます。 
// 【戻り値】
//   
//////////////////////////////////////////////////
FUNCTION formatBytes(size, digits = 2, unit = "")
	HASHTBL prefixes
	prefixes[0] = "Bytes"
	prefixes[1] = "KB"
	prefixes[2] = "MB"
	prefixes[3] = "GB"
	prefixes[4] = "TB"
	prefixes[5] = "PB"
	prefixes[6] = "EB"
	prefixes[7] = "ZB"
	prefixes[8] = "YB"
	DIM i = 0
	WHILE (unit <> "" OR size >= 1024) AND prefixes[i] <> unit
		size = size / 1024
		i = i + 1
	WEND
	RESULT = TRIM(FORMAT(size, LENGTH(size), digits)) + IIF(size <> 0 AND INT(size) = size, "." + strRepeat("0", digits), "") + prefixes[i]
FEND

//////////////////////////////////////////////////
// 【引数】
//   expr : 評価する式 
//   truepart : 評価した式がTrueのときに返す値 
//   falsepart : 評価した式がFalseのときに返す値 
// 【戻り値】
//   truepart : 評価した式がTrueのとき、falsepart : 評価した式がFalseのとき 
//////////////////////////////////////////////////
FUNCTION IIF(expr, truepart, falsepart)
	IFB EVAL(expr) THEN
		RESULT = truepart
	ELSE
		RESULT = falsepart
	ENDIF
FEND

//////////////////////////////////////////////////
// 【引数】
//   inputs : 繰り返す文字列 
//   multiplier : inputsを繰り返す回数 
// 【戻り値】
//   inputsをmultiplier回を繰り返した文字列を返します 
//////////////////////////////////////////////////
FUNCTION strRepeat(inputs, multiplier)
	DIM res = ""
	FOR n = 1 TO multiplier
		res = res + inputs
	NEXT
	RESULT = res
FEND
結果
CSV
空き容量:                   28.79GB
ドライブ文字:               C
種類:                       ハードディスク
ファイルシステム:           NTFS
空き容量:                   28.79GB
準備状態:                   True
パス:                       C:
ルートフォルダ:             C:\
シリアルナンバー:           -266948359
ネットワーク共有名:         
ネットワーク共有のサイズ:   150.00GB
ボリューム名:               S3A9247D001
----------
空き容量:                   63.92GB
ドライブ文字:               D
種類:                       ハードディスク
ファイルシステム:           NTFS
空き容量:                   63.92GB
準備状態:                   True
パス:                       D:
ルートフォルダ:             D:\
シリアルナンバー:           340155053
ネットワーク共有名:         
ネットワーク共有のサイズ:   523.75GB
ボリューム名:               DATA
----------
空き容量:                   98.52GB
ドライブ文字:               E
種類:                       リムーバブルドライブ
ファイルシステム:           exFAT
空き容量:                   98.52GB
準備状態:                   True
パス:                       E:
ルートフォルダ:             E:\
シリアルナンバー:           -361583784
ネットワーク共有名:         
ネットワーク共有のサイズ:   116.55GB
ボリューム名:               
----------
空き容量:                   0.00Bytes
ドライブ文字:               F
種類:                       CD-ROM
ファイルシステム:           UDF
空き容量:                   0.00Bytes
準備状態:                   True
パス:                       F:
ルートフォルダ:             F:\
シリアルナンバー:           -100688574
ネットワーク共有名:         
ネットワーク共有のサイズ:   4.36GB
ボリューム名:               KANOUSO_R
----------
空き容量:                   43.81GB
ドライブ文字:               N
種類:                       ネットワークドライブ
ファイルシステム:           NTFS
空き容量:                   43.81GB
準備状態:                   True
パス:                       N:
ルートフォルダ:             N:\
シリアルナンバー:           622466291
ネットワーク共有名:         \\192.168.3.23\home
ネットワーク共有のサイズ:   3.50TB
ボリューム名:               home
----------
空き容量:                   2.30GB
ドライブ文字:               P
種類:                       ハードディスク
ファイルシステム:           NTFS
空き容量:                   2.30GB
準備状態:                   True
パス:                       P:
ルートフォルダ:             P:\
シリアルナンバー:           640742038
ネットワーク共有名:         
ネットワーク共有のサイズ:   5.46TB
ボリューム名:               WS200U3_20210210
----------
空き容量:                   5.39TB
ドライブ文字:               Q
種類:                       ハードディスク
ファイルシステム:           NTFS
空き容量:                   5.39TB
準備状態:                   True
パス:                       Q:
ルートフォルダ:             Q:\
シリアルナンバー:           -692843773
ネットワーク共有名:         
ネットワーク共有のサイズ:   7.28TB
ボリューム名:               WS200U3_20221118
----------
使用関数

Cドライブの空き容量を割合で取得

Cドライブの空き容量を小数点以下第2位までの百分率(単位:%)で出力します。

UWSC
DIM FSO = CREATEOLEOBJ("Scripting.FileSystemObject")
DIM Drive = FSO.GetDrive("C")

WITH Drive
	PRINT ROUND(.FreeSpace / .TotalSize * 100, -2) + "%"
ENDWITH
結果
プレーンテキスト
19.47%
使用関数
解説

関連記事

FileSystemObject オブジェクト
FSO.Drives プロパティ
コンピューター上のすべてのFSO.FreeSpaceを格納したDrivesコレクション返します。
Drive.DriveLetter プロパティ (FSO)
ローカル ドライブまたはネットワーク共有を識別する 1 つの大文字のアルファベットを返します。
Drive.FileSystem プロパティ (FSO)
指定したドライブで使用されているファイル システムを返します。
Drive.VolumeName プロパティ (FSO)
指定したドライブのボリューム名を取得または設定します。