FileSystemObject のプログラミング

FileSystemObject (FSO) オブジェクト モデルでプログラミングする手順は次のとおりです。

  • CreateObject メソッドを使用して FileSystemObject オブジェクトを作成します。
  • 作成したオブジェクトの適切なメソッドを使用します。
  • オブジェクトのプロパティにアクセスします。

FSO オブジェクト モデルは、Scrrun.dll ファイルの中のスクリプティング タイプ ライブラリに格納されています。したがって、Web サーバー上の適切なシステム ディレクトリに Scrrun.dll を配置して FSO オブジェクト モデルを使用する必要があります。

FileSystemObject オブジェクトを作成する

まず、CreateObject メソッドで FileSystemObject オブジェクトを作成します。VBScript では、次のコードを使って FileSystemObject のインスタンスを作成します。

Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
[JScript]
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");

これらの例で、Scripting はタイプ ライブラリの名前、FileSystemObject は作成するオブジェクトの名前です。FileSystemObject のインスタンスは、ほかのインスタンスを何回作成しても 1 つしか作成されません。

適切なメソッドを使用する

次に、FileSystemObject オブジェクトの適切なメソッドを使用します。たとえば、オブジェクトを作成するには、CreateTextFile メソッドまたは CreateFolder メソッドを使用します (FSO オブジェクト モデルでは、ドライブの作成と削除はサポートしていません)。

オブジェクトを削除するには、FileSystemObject オブジェクトの DeleteFile メソッドおよび DeleteFolder メソッド、または File オブジェクトおよび Folder オブジェクトの Delete メソッドを使用します。適切なメソッドを使用して、ファイルおよびフォルダをコピーしたり移動したりすることもできます。

メモ FileSystemObject オブジェクト モデルには、重複した機能があります。たとえば、ファイルをコピーするには、FileSystemObject オブジェクトの CopyFile メソッドかまたは File オブジェクトの Copy メソッドを使用できます。2 つのメソッドは機能的に同じであり、柔軟にプログラミングできるように用意されています。

既存のドライブ、ファイル、およびフォルダにアクセスする

既存のドライブ、ファイル、またはフォルダにアクセスするには、FileSystemObject オブジェクトに用意された次の "get" メソッドから、適切なものを選んで使用します。

  • GetDrive
  • GetFolder
  • GetFile

既存のファイルにアクセスするには、次のコードを使用します。

    Dim fso, f1
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set f1 = fso.GetFile("c:\test.txt")
    [JScript]
    var fso, f1;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    f1 = fso.GetFile("c:\\test.txt");

作成されたオブジェクトには、"create" 関数によって既にハンドルが返されているので、"get" メソッドを使用しないでください。たとえば、CreateFolder メソッドでフォルダを作成する場合、GetFolder メソッドで Name、Path、Size などのプロパティにはアクセスしないようにします。CreateFolder 関数に変数を設定し、作成されたフォルダへのハンドルを取得した後、そのフォルダのプロパティ、メソッド、およびイベントにアクセスしてください。この処理を VBScript で行うには、次のコードを使用します。

To set a variable to the CreateFolder function, use this syntax:

    Sub CreateFolder
       Dim fso, fldr
       Set fso = CreateObject("Scripting.FileSystemObject")
       Set fldr = fso.CreateFolder("C:\MyTest")
       Response.Write "作成されたフォルダ: " & fldr.Name
    End Sub
    [JScript]
    function CreateFolder()
    {
       var fso, fldr;
       fso = new ActiveXObject("Scripting.FileSystemObject");
       fldr = fso.CreateFolder("C:\\MyTest");
       Response.Write("作成されたフォルダ: " + fldr.Name);
    }

オブジェクトのプロパティにアクセスする

オブジェクトのハンドルを取得すれば、そのオブジェクトのプロパティにアクセスできます。たとえば、特定のフォルダの名前を取得するには、まずオブジェクトのインスタンスを作成してから、そのオブジェクトのハンドルを特定のメソッドによって取得します (この場合、フォルダは既に存在するので、GetFolder メソッドを使用します)。

GetFolder へのハンドルを取得するには、次のコードを使用します。

    Set fldr = fso.GetFolder("c:\")
    [JScript]
    var fldr = fso.GetFolder("c:\\");

Folder オブジェクトのハンドルを取得したので、Name プロパティを確認できます。

    Response.Write "フォルダ名: " & fldr.Name
    [JScript]
    Response.Write("フォルダ名: " + fldr.Name);

ファイルの最終変更日時を確認するには、次の構文を使用します。

    Dim fso, f1
    Set fso = CreateObject("Scripting.FileSystemObject")
    ' 照会する File オブジェクトを取得します。
    Set f1 = fso.GetFile("c:\detlog.txt")   
    ' 情報を表示します。
    Response.Write "最終変更日時: " & f1.DateLastModified 
    [JScript]
    var fso, f1;
    fso = new ActiveXObject("Scripting.FileSystemObject");
    // 照会する File オブジェクトを取得します。
    f1 = fso.GetFile("c:\\detlog.txt");   
    // 情報を表示します。
    Response.Write("最終変更日時: " + f1.DateLastModified);