wsh_drive

FSOオブジェクト自体の持つドライブ関係のメソッド/プロパティは以下の3種類である。
|DriveExistsメソッド|ドライブが存在するかどうかを調査する|
|GetDriveメソッド|Driveオブジェクトを返す|
|Drivesプロパティ|ドライブの一覧を返す|

DriveExistsメソッドは、パラメータとしてドライブ名を取り、
ドライブが存在すればTrueを、存在しなければFalseを返す。
GetDriveメソッドは、渡されたドライブ名に対応するDriveオブジェクトを返す。
これら2つのメソッドには、ドライブ文字(C)のほか、コロンの付いたドライブ名(C:)、
コロンと「\」記号の付いたドライブ名(C:\)、
ネットワーク・ドライブのUNC名(\\Server\Share)なども渡すことができる。
DrivesプロパティはFiles、SubFoldersなどと同様に、
ドライブの一覧をコレクションとして返す。

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
WScript.Echo CStr(objFSO.DriveExists("A"))
WScript.Echo CStr(objFSO.DriveExists("B:"))
WScript.Echo CStr(objFSO.DriveExists("C:\"))
WScript.Echo CStr(objFSO.DriveExists("\\Server04\public"))
 
D:\WSH>cscript driveexists.vbs
True
False
True
True

D:\WSH>

Driveオブジェクト

Driveオブジェクトはドライブを表すオブジェクトである。
FSOオブジェクトのGetDriveメソッド、Drivesプロパティ、File オブジェクトと
FolderオブジェクトのDriveプロパティから取得できる。
Driveオブジェクトには以下の12種類のプロパティがある。
|プロパティ|機能|
|AvailableSpaceプロパティ|利用可能な空きスペースの大きさを取得する|
|DriveLetterプロパティ|ドライブ名(「C」など)を取得する|
|DriveTypeプロパティ|ドライブの種類を取得する|
|FileSystemプロパティ|ドライブのファイルシステムを取得する|
|FreeSpaceプロパティ|ディスクの空きスペースの大きさを取得する|
|IsReadyプロパティ|ドライブが準備できているかどうかを取得する|
|Pathプロパティ|コロン付きのドライブ名を取得する|
|RootFolderプロパティ|ルートフォルダを表すFolderオブジェクトを取得する|
|SerialNumberプロパティ|ディスクのシリアルナンバーを取得する|
|ShareNameプロパティ|ネットワーク・ドライブの共有名を取得する|
|TotalSizeプロパティ|ディスクの総容量を取得する|
|VolumeNameプロパティ|ドライブのボリューム名を取得する|

AvailableSpaceプロパティとFreeSpaceプロパティは通常同じ値を返す。
ディスクにクォータ制限がかかっている場合には、この2つの値は異なる値を返す。

DriveTypeプロパティは、ドライブの種類によって0から5までの整数値を返す。
0は不明なドライブ、1はリムーバブル・ディスク、2はハードディスク、
3はネットワーク・ドライブ、4はCD-ROM、5はRAMディスクを表す。

FileSystemプロパティは、「NTFS」「FAT」「CDFS」のどれかを返す。

ShareNameプロパティは、ネットワーク・ドライブ以外のドライブでは空文字列("")を返す。

次の例ではDドライブの情報を表示する。
1: Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
2: Set objDrive = objFSO.GetDrive("D")
3: WScript.Echo "AvailableSpace : " & objDrive.AvailableSpace
4: WScript.Echo "DriveLetter    : " & objDrive.DriveLetter
5: WScript.Echo "DriveType      : " & objDrive.DriveType
6: WScript.Echo "FileSystem     : " & objDrive.FileSystem
7: WScript.Echo "FreeSpace      : " & objDrive.FreeSpace
8: WScript.Echo "IsReady        : " & objDrive.IsReady
9: WScript.Echo "Path           : " & objDrive.Path
10: WScript.Echo "RootFolder     : " & objDrive.RootFolder.Path
11: WScript.Echo "SerialNumber   : " & objDrive.SerialNumber
12: WScript.Echo "ShareName      : " & objDrive.ShareName
13: WScript.Echo "TotalSize      : " & objDrive.TotalSize
14: WScript.Echo "VolumeName     : " & objDrive.VolumeName
 
D:\WSH>cscript drive.vbs
AvailableSpace : 3479191552
DriveLetter    : D
DriveType      : 2
FileSystem     : NTFS
FreeSpace      : 3479191552
IsReady        : True
Path           : D:
RootFolder     : D:\
SerialNumber   : -1333760323
ShareName      :
TotalSize      : 4713082880
VolumeName     : ローカル ディスク

D:\WSH>
パス文字列の処理

最後に、パス文字列を処理するためのメソッドを紹介する。
ファイル名の取得や親フォルダなどは、
FileオブジェクトやFolderオブジェクトを使っても取得できるが、
文字列のまま処理することで、
実際には存在しないパスも扱うことができるのが利点といえる。

パス文字列を処理するメソッドには以下の7種類がある。
|メソッド|機能|
|GetDriveNameメソッド|パスのドライブ名を取得する|
|GetFileNameメソッド|パスのファイル名を取得する|
|GetBaseNameメソッド|パスの拡張子を除いた名前を取得する|
|GetExtensionNameメソッド|パスの拡張子を取得する|
|GetParentFolderNameメソッド|パスの親フォルダのパスを取得する|
|GetAbsolutePathNameメソッド|相対パスを絶対パスに変換する|
|BuildPathメソッド|パスとファイル名を結合する|

GetDriveNameメソッド、GetFileNameメソッド、GetBaseNameメソッド、GetExtensionNameメソッド、GetParentFolderNameメソッドは
パス文字列から一部分を抽出するメソッドである。例えば、「D:\WSH\test.txt」であれば次のようになる。
Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
strPath = "D:\WSH\test.txt"
WScript.Echo "GetDriveName        : " & objFSO.GetDriveName(strPath)
WScript.Echo "GetFileName         : " & objFSO.GetFileName(strPath)
WScript.Echo "GetBaseName         : " & objFSO.GetBaseName(strPath)
WScript.Echo "GetExtensionName    : " & objFSO.GetExtensionName(strPath)
WScript.Echo "GetParentFolderName : " & objFSO.GetParentFolderName(strPath)
 
D:\WSH>cscript path1.vbs
GetDriveName        : D:
GetFileName         : test.txt
GetBaseName         : test
GetExtensionName    : txt
GetParentFolderName : D:\WSH

D:\WSH>

GetAbsolutePathNameメソッドは、カレント・ディレクトリに基づいて、
相対パスを絶対パスに変換する。絶対パスを渡した場合も、
そのまま絶対パスが返される。BuildPathはパラメータを2つ取り、
2つの文字列を「\」記号で連結した文字列を返す。
「\」記号の数は BuildPathメソッドによって調整されるが、
絶対パス/相対パスなどは処理されない。

Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
WScript.Echo objFSO.GetAbsolutePathName("Folder1")
WScript.Echo objFSO.GetAbsolutePathName("\Test1\Test2")
WScript.Echo objFSO.GetAbsolutePathName("C:\Test1\Test2")
WScript.Echo objFSO.GetAbsolutePathName("..\Test2")
WScript.StdOut.WriteLine
WScript.Echo objFSO.BuildPath("D:\Dummy", "File1")
WScript.Echo objFSO.BuildPath("Dummy", "File1")
WScript.Echo objFSO.BuildPath("D:\Dummy\", "\Test1\Test2")
WScript.Echo objFSO.BuildPath("D:\Dummy\", "..\Test2")
 
D:\WSH>cscript path.vbs
D:\WSH\Folder1
D:\Test1\Test2
C:\Test1\Test2
D:\Test2

D:\Dummy\File1
Dummy\File1
D:\Dummy\Test1\Test2
D:\Dummy\..\Test2

D:\WSH>
最終更新:2009年02月02日 16:18