ドライブとフォルダの操作
FileSystemObject (FSO) オブジェクト モデルでは、ドライブとフォルダをプログラムから操作できます。Windows エクスプローラで対話的に処理するのと同じように、フォルダのコピーおよび移動、ドライブおよびフォルダの情報の取得などを実行できます。
ドライブの情報を取得する
Drive オブジェクトでは、ドライブが物理的に接続されているかネットワーク経由であるかに関係なく、システムに接続された各種のドライブについての情報を取得することができます。Drive オブジェクトのプロパティによって、次の情報を取得できます。
- バイト単位によるドライブの合計サイズ (TotalSize プロパティ)
- バイト単位によるドライブの空き容量 (AvailableSpace プロパティまたは FreeSpace プロパティ)
- 割り当てられているドライブ文字 (DriveLetter プロパティ)
- ドライブの種類。リムーバブル、固定式、ネットワーク、CD-ROM、RAM ディスクなど (DriveType プロパティ)
- ドライブのシリアル番号 (SerialNumber プロパティ)
- ドライブが使用するファイル システム。FAT、FAT32、NTFS など (FileSystem プロパティ)
- ドライブを使用できるかどうか (IsReady プロパティ)
- 共有名とボリューム名の一方または両方 (ShareName プロパティと VolumeName プロパティ)
- ドライブのパスまたはルート フォルダ (Path プロパティと RootFolder プロパティ)
サンプル コードを参照すれば、これらのプロパティが FileSystemObject でどのように使用されているかを確認できます。
Drive オブジェクトの使用例
Drive オブジェクトを使用して、ドライブの情報を収集します。次のコードでは、実際の Drive オブジェクトを参照していません。代わりに GetDrive メソッドを使って既存の Drive オブジェクト (ここでは drv) に対する参照を取得しています。
次の例は、Drive オブジェクトを使用する方法を示します。
Sub ShowDriveInfo(drvPath)
Dim fso, drv, s
Set fso = CreateObject("Scripting.FileSystemObject")
Set drv = fso.GetDrive(fso.GetDriveName(drvPath))
s = "ドライブ " & UCase(drvPath) & " - "
s = s & drv.VolumeName & "<BR>"
s = s & "合計サイズ: " & FormatNumber(drv.TotalSize / 1024, 0)
s = s & " KB" & "<BR>"
s = s & "空き領域: " & FormatNumber(drv.FreeSpace / 1024, 0)
s = s & " KB" & "<<BR>"
Response.Write s
End Sub
[JScript]
function ShowDriveInfo1(drvPath)
{
var fso, drv, s ="";
fso = new ActiveXObject("Scripting.FileSystemObject");
drv = fso.GetDrive(fso.GetDriveName(drvPath));
s += "ドライブ " + drvPath.toUpperCase()+ " - ";
s += drv.VolumeName + "<br>";
s += "合計サイズ: " + drv.TotalSize / 1024;
s += " KB" + "<BR>";
s += "空き領域: " + drv.FreeSpace / 1024;
s += " KB" + "<BR>";
Response.Write(s);
}
フォルダを操作する
フォルダの一般的な処理とそれを実行するメソッドを、次の表に示します。
処理 | メソッド |
---|---|
フォルダを作成する | FileSystemObject.CreateFolder |
フォルダを削除する | Folder.Delete または FileSystemObject.DeleteFolder |
フォルダを移動する | Folder.Move または FileSystemObject.MoveFolder |
フォルダをコピーする | Folder.Copy または FileSystemObject.CopyFolder |
フォルダ名を取得する | Folder.Name |
ドライブに存在するフォルダを検出する | FileSystemObject.FolderExists |
既存の Folder オブジェクトのインスタンスを取得する | FileSystemObject.GetFolder |
フォルダの親フォルダの名前を検索する | FileSystemObject.GetParentFolderName |
システム フォルダのパスを検索する | FileSystemObject.GetSpecialFolder |
サンプル コードを参照すれば、これらのメソッドおよびプロパティが FileSystemObject でどのように使用されているかを確認できます。
次の例では、Folder オブジェクトおよび FileSystemObject オブジェクトを使ってフォルダを操作し、フォルダの情報を取得する方法を示します。
Sub ShowFolderInfo()
Dim fso, fldr, s
' FileSystemObject オブジェクトのインスタンスを取得します。
Set fso = CreateObject("Scripting.FileSystemObject")
' Drive オブジェクトを取得します。
Set fldr = fso.GetFolder("c:")
' 親フォルダの名前を表示します。
Response.Write "親フォルダの名前:" & fldr & "<BR>"
' ドライブの名前を表示します。
Response.Write "格納されているドライブ " & fldr.Drive & "<BR>"
' ルート ファイルの名前を表示します。
If fldr.IsRootFolder = True Then
Response.Write "これはルート フォルダです。"& ""<BR>"<BR>"
Else
Response.Write "これはルート フォルダではありません。"& "<BR><BR>"
End If
' FileSystemObject オブジェクトでフォルダを作成します。
fso.CreateFolder ("C:\Bogus")
Response.Write "作成したフォルダは C:\Bogus です。" & "<BR>"
' フォルダのベース名を表示します。
Response.Write "ベース名 = " & fso.GetBaseName("c:\bogus") & "<BR>"
' 作成されたフォルダを削除します。
fso.DeleteFolder ("C:\Bogus")
Response.Write "削除したフォルダは C:\Bogus です。" & "<BR>"
End Sub
[JScript]
function ShowFolderInfo()
{
var fso, fldr, s = "";
// FileSystemObject オブジェクトのインスタンスを取得します。
fso = new ActiveXObject("Scripting.FileSystemObject");
// Drive オブジェクトを取得します。
fldr = fso.GetFolder("c:");
// 親フォルダの名前を表示します。
Response.Write("親フォルダの名前:" + fldr + "<BR>");
// ドライブの名前を表示します。
Response.Write("格納されているドライブ " + fldr.Drive + "<BR>");
// ルート ファイルの名前を表示します。
if (fldr.IsRootFolder)
Response.Write("これはルート フォルダです。");
else
Response.Write("これはルート フォルダではありません。");
Response.Write("<BR><BR>");
// FileSystemObject オブジェクトでフォルダを作成します。
fso.CreateFolder ("C:\\Bogus");
Response.Write("作成したフォルダは C:\\Bogus です。" + "<BR>");
// フォルダのベース名を表示します。
Response.Write("ベース名 = " + fso.GetBaseName("c:\\bogus") + "<BR>");
// 作成されたフォルダを削除します。
fso.DeleteFolder ("C:\\Bogus");
Response.Write("削除したフォルダは C:\\Bogus です。" + "<BR>");
}