VBScriptでファイルの存在チェック

指定したファイルが存在するかをチェックします。

ファイルが存在するかのチェック方法はいろいろありますが、ここでは、以下の2つのプログラム例を紹介します。

プログラム例1では、FileSystemObjectのFileExists関数を使用します。

プログラム例2では、FileSystemObjectのCopyFile関数を使用します。こちらはアスタリスク指定が可能です。

プログラム例1

FileSystemObjectを使用して、C:¥temp¥test.txtファイルが存在するかチェックし、メッセージボックスに結果を表示します。

ファイル名:CheckFileExists01.vbs

Option Explicit

‘変数を宣言
Dim fso ,ret

 

‘FileSystemObjectオブジェクトの生成
Set fso = CreateObject(“Scripting.FileSystemObject”)

 

‘C:\temp\test.txtが存在するかチェック
ret = fso.FileExists(“C:\temp\test.txt”)

 

‘メッセージボックス表示
If ret = True Then
    MsgBox “ファイルは存在します”
Else
    MsgBox “ファイルは存在しません”
End If

FileSystemObjectのFileExists関数は指定したファイル(例の場合:C:¥temp¥test.txt)の存在チェックはできますが、ワイルドカードは指定できません。

プログラム例2

FileSystemObjectのCopyFile関数、MoveFile関数、DeleteFile関数ではワイルドカードを使うことができます。プログラム例2は、CopyFile関数を使用して、ワイルドカードを指定してC:¥temp¥* が存在するかをチェックをするプログラムです。

ファイル名:CheckFileExists02.vbs

Option Explicit

‘変数を宣言
Dim ret

 

‘C:\temp\*が存在するかチェック
ret = wFileExists(“C:\temp\*”)

 

‘メッセージボックス表示
If ret = True Then
    MsgBox “ファイルは存在します”
Else
    MsgBox “ファイルは存在しません”
End If

 

Function wFileExists(fileName)

    ‘変数を宣言
    Dim fso ,folderName

 

    ‘FileSystemObjectオブジェクトの生成
    Set fso = CreateObject(“Scripting.FileSystemObject”)

 

    ‘親フォルダのパスを取得
    folderName = fso.GetParentFolderName(fileName)

 

    If folderName=”” Then folderName=”.”
    On Error Resume Next
    fso.CopyFile fileName, folderName
    wFileExists=Err.Number<>53

 

End Function

CopyFile関数の実行エラー53は「ファイルが見つかりません。」です。実行エラー53以外の場合、wFileExistsはTrueを返します。

まとめ

指定したファイルの存在チェックは、ファイル名を指定する場合はFileSystemObjectのFileExists関数を使用し、ワイルドカードを使用する場合は、FileSystemObjectのCopyFile関数を使用しました。

以上、VBScriptでファイルの存在チェックをするプログラムでした。