« FileExists()でワイルドカードが使えない。その代替方法 | トップページ | 元フォルダの中身をすべて別の先フォルダに移動するバッチファイル »

2008年2月 8日 (金)

FileExists()でワイルドカードが使えない。その代替方法(その2)

性能はさておき、ワイルドカードを使って判定するには、Filter()が使えます。

Function FileExists(Spec)
Dim fso
Dim ParentFolderName
Dim Shell
Dim Folder
Dim FolderItems
Set fso=CreateObject("Scripting.FileSystemObject")
Spec=fso.GetAbsolutePathName(Spec)
ParentFolderName=fso.GetParentFolderName(Spec)
Set Shell=CreateObject("Shell.Application")
Set Folder=Shell.NameSpace(ParentFolderName)
Set FolderItems=Folder.Items()
FolderItems.Filter &H40,(fso.GetFileName(Spec))
FileExists=FolderItems.Count
End Function

ただし、Filter()はショートカットなどの非表示の拡張子を除外して判定します。

« FileExists()でワイルドカードが使えない。その代替方法 | トップページ | 元フォルダの中身をすべて別の先フォルダに移動するバッチファイル »