プロが教える店舗&オフィスのセキュリティ対策術

条件に合うフォルダが存在するかを調べたい

c:\a\ フォルダ内に、以下例のようなフォルダが存在するとします。


c:\a\
(以下c:\a\内フォルダ名)
f0001_r120
f0003_c511
f0004_t141
f0006_q546
f0009_k551
f0011_g151




このaフォルダ内に、例えば「f0004」で始まるフォルダ名のフォルダがあるかどうかを調べたいのです。
以下のようなプログラムを組んだのですが、うまく動作しません。
なお、この例でいう「f0004_t141」の「_t141」のフォルダ名部分は他プログラムでランダムに作成される文字列であり、検索する側で知りえる情報ではなく、私的にはワイルドカード「*」ようなもので処理することしか思いつきません。。(;;)


If System.IO.Directory.Exists("c:\a\f0004*") Then
MsgBox("ある")
Else
MsgBox("ない")
End If

おそらく、System.IO.Directory.Exists自体に「*」が使用できないと思うのですが、何か他によい方法があればどうかご教授ください。
どうぞよろしくお願いします。

A 回答 (3件)

こんにちは。



VB6なら以下の方法で、出来ると思いますが・・・

    If Dir("c:\a\f0004*", vbDirectory) <> "" Then
        MsgBox ("ある")
    Else
        MsgBox ("ない")
    End If
    • good
    • 2
この回答へのお礼

めちゃめちゃ簡単にできました!
助かりました!
ありがとうございました。

お礼日時:2010/07/15 08:55

サブフォルダーを含まない場合では


Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

Dim folder
folder = "C:\Documents and Settings\XXXX\My Documents\"
Dim searchPattern
searchPattern = "01化*.xls"
Dim files As ArrayList
Dim fs As String() = System.IO.Directory.GetFiles(folder, searchPattern)
'ArrayListに追加する
Dim k As Integer
For k = 0 To fs.Length - 1
MessageBox.Show(fs(k))
Next
End Sub
でボタンのクリックイベントにしてます。
私の場合上記フォルダ内に
01化.xls
01化B.xls
01化C.xls
の3つがありますが、3つともが表示されました。
ワイルドカードが使えるようです。
http://dobon.net/vb/dotnet/file/getfiles.html
の「NET Framework 1.1以前」を参考にしました。
その他(NET Framework 2.0以降該当なら)も見てください。
    • good
    • 0
この回答へのお礼

詳しく解説までありがとうございました!

お礼日時:2010/07/15 08:56

Dim blnExist As Boolean = False


For Each strPath As String In My.Computer.FileSystem.GetDirectories("c:\a\", FileIO.SearchOption.SearchTopLevelOnly, "f0004*")
Console.WriteLine(strPath)
blnExist = True
Exit For
Next strPath
If blnExist Then
MsgBox("ある")
Else
MsgBox("ない")
End If

どうでしょうか
    • good
    • 0
この回答へのお礼

早々の回答ありがとうございました!

お礼日時:2010/07/15 08:57

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!