連載
» 2008年05月15日 00時00分 公開

基礎解説 演習方式で身につけるチェック式WSH超入門:第17回 FileSystemObjectオブジェクトを利用する(2) (2/5)

[牟田口大介(Microsoft MVP Data Center Management - Admin Frameworks),著]

 次は、今回のメインテーマであるファイル・システムを構成するアイテムのコレクションとオブジェクトの話題に移ろう。

 FileSystemObjectオブジェクトのオブジェクト・モデルには、1つのファイルを表すFileオブジェクト、複数のFileオブジェクトの集合を表すFilesコレクション、1つのフォルダを表すFolderオブジェクト、複数のFolderオブジェクトの集合を表すFoldersコレクション、1つのドライブを表すDriveオブジェクト、複数のDriveオブジェクトの集合を表すDrivesコレクションが含まれている。これらのオブジェクトはCreateObjectメソッド(もしくは関数)では直接生成できないので、FileSystemObjectオブジェクト(ProgIDは“Scripting.FileSystemObject”)の以下のメンバから間接的に呼び出す。これらのメンバで生成したオブジェクトのメンバからさらに呼び出さないとたどり着けないオブジェクト/コレクションもある。

プロパティ/メソッド 用途
Drivesプロパティ Drivesコレクションを返す
GetDriveメソッド Driveオブジェクトを返す
GetFolderメソッド Folderオブジェクトを返す
GetSpecialFolderメソッド 特殊フォルダのFolderオブジェクトを返す
GetFileメソッド Fileオブジェクトを返す

 まずはそれぞれのオブジェクト/コレクションを概説しよう。

  • Fileオブジェクト
      1つのファイルを表すオブジェクト。Fileオブジェクトは、ファイルの名前、サイズ、更新日時などのプロパティを持ち、移動、コピーなどのメソッドを持っている。このオブジェクトは、FileSystemObjectオブジェクトのGetFileメソッドやFilesコレクションのItemプロパティなどで取得(≒インスタンスの生成)できる。
  • Folderオブジェクト
      1つのフォルダを表すオブジェクト。プロパティ/メソッドはFileオブジェクトと同じものを持ち、それに加えて、当該フォルダ直下のすべてのファイルを含んだFilesコレクション、すべてのサブフォルダを含んだFoldersコレクションを参照できるプロパティがある。このオブジェクトは、FileSystemObjectオブジェクトのGetFolderメソッド、FoldersコレクションのItemプロパティなどで取得できる。
  • Driveオブジェクト
      1つのドライブを表すオブジェクト。ボリューム・ラベル、空き容量など、ドライブの情報を格納したプロパティを持っている。ドライブのルート・フォルダをFolderオブジェクトとして取得するプロパティもある。このオブジェクトは、FileSystemObjectオブジェクトのGetDriveメソッドあるいはDrivesコレクションのItemプロパティから取得できる。
  • Filesコレクション
      複数のFileオブジェクトの集合を表すコレクション。フォルダ内のすべてのファイルの集合に対応する。FolderオブジェクトのFilesプロパティから取得できる。For Each〜Nextステートメントを使って、コレクションに含まれるファイルに対応するFileオブジェクトが取得できる。
  • Foldersコレクション
      複数のFolderオブジェクトの集合を表すコレクション。フォルダ(ドライブ)内のすべてのサブフォルダの集合に対応する。FolderオブジェクトのSubFoldersプロパティなどで取得できる。For Each〜Nextステートメントを使うことで含まれるフォルダに対応するFolderオブジェクトが取得できる。
  • Drivesコレクション
      複数のDriveオブジェクトの集合を表すコレクション。システムに含まれるすべてのドライブ(A:〜Z:、ネットワーク・ドライブを含む)に対応する。FileSystemObjectオブジェクトのDrivesプロパティで取得できる。For Each〜Nextステートメントを使って、コレクションに含まれるドライブに対応するDriveオブジェクトを取得できる。

 次に、これらのオブジェクト/コレクションにどんなプロパティやメソッドが含まれているか、次の5つに分類して紹介しよう。

1.Fileオブジェクト/Folderオブジェクトに共通のメンバ

プロパティ/メソッド 用途
Nameプロパティ ファイル/フォルダ名(値の設定可)
ShortNameプロパティ DOS(いわゆる8+3形式)でのファイル/フォルダ名
Pathプロパティ フルパス
ShortPathプロパティ DOSでのパス
ParentFolderプロパティ 親フォルダのパス
Driveプロパティ ドライブのパス
DateCreatedプロパティ 作成日時
DateLastAccessedプロパティ アクセス日時
DateLastModifiedプロパティ 更新日時
Sizeプロパティ サイズ(bytes)
Typeプロパティ ファイルタイプ名
Attributesプロパティ 属性(値の設定可)
Copyメソッド コピーする
Deleteメソッド 削除する
Moveメソッド 移動する

2.Fileオブジェクトのメンバ

プロパティ/メソッド 用途
OpenAsTextStreamメソッド テキスト・ファイルとして開き、TextStreamオブジェクトを返す

3.Folderオブジェクトのメンバ

プロパティ/メソッド 用途
IsRootFolderプロパティ ルート・フォルダ(C:\など)ならTrueを返す
Filesプロパティ そのフォルダにあるすべてのファイルに対応するFileオブジェクトを含んだFilesコレクションを返す
SubFoldersプロパティ そのフォルダにあるすべてのサブフォルダに対応するFolderオブジェクトを含んだFoldersコレクションを返す

4.Driveオブジェクトのメンバ

プロパティ/メソッド 用途
DriveLetterプロパティ ドライブ・レター(アルファベット1文字)
DriveTypeプロパティ ドライブの種類(HDD、CD-ROM、RAM、Removable、Network)
FileSystemプロパティ ファイル・システム(FAT、FAT32、NTFS、CDFS)
IsReadyプロパティ ドライブが準備できていたらTrueを返す
VolumeNameプロパティ ボリューム・ラベル(値の設定可)
ShareNameプロパティ ネットワークでの共有名
SerialNumberプロパティ シリアル・ナンバー
AvailableSpaceプロパティ 空きディスク領域(bytes)
FreeSpaceプロパティ 空きディスク領域(bytes)
TotalSizeプロパティ ドライブの容量
RootFolderプロパティ ドライブのルート・フォルダのFolderオブジェクトを返す

5.Filesコレクション/Foldersコレクション/Drivesコレクションに共通のメンバ

プロパティ/メソッド 用途
Countプロパティ 要素に含まれるオブジェクトの数を返す。例えばFilesコレクションなら、含まれるFileオブジェクトの数
Itemプロパティ 要素に含まれるオブジェクトを返す。引数にはファイル名/フォルダ名/ドライブ名を指定可
Addメソッド 新しいFolderオブジェクトを作成し、それを含んだFoldersコレクションを新たに返す(Foldersコレクションのみ)

Fileオブジェクト/Folderオブジェクトに共通のメンバ

 以下、これらのオブジェクト/コレクションのメンバの使い方について述べていく。今回は「1.Fileオブジェクト/Folderオブジェクトに共通のメンバ」のみ解説する。その前に、どのオブジェクトがどのオブジェクトのメンバから取得できるのかをまとめた表を示しておく。

取得するオブジェクト/コレクション 使用するオブジェクト/コレクション 使用するプロパティ/メソッド
Fileオブジェクト FileSystemObjectオブジェクト GetFileメソッド
Filesコレクション Itemプロパティ
Folderオブジェクト FileSystemObjectオブジェクト GetFolderメソッド
FileSystemObjectオブジェクト CreateFolderメソッド
FileSystemObjectオブジェクト GetSpecialFolderメソッド
Foldersコレクション Itemプロパティ
Driveオブジェクト RootFolderプロパティ
Driveオブジェクト FileSystemObjectオブジェクト GetDriveメソッド
Drivesコレクション Itemプロパティ
Filesコレクション Folderオブジェクト Filesプロパティ
Foldersコレクション Folderオブジェクト SubFoldersプロパティ
Foldersコレクション Addメソッド
Drivesコレクション FileSystemObjectオブジェクト Drivesプロパティ

 例えば「Fileオブジェクトを取得するには、FileSystemObjectオブジェクトのGetFileメソッドか、FilesコレクションのItemプロパティを使う」ということが、この表から分かる。なお、オブジェクトは対応するコレクションをFor Each〜Nextステートメントで列挙することでも得られる。これからの説明で分からなくなった場合は参考にしてもらいたい。

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。