フォルダの存在を調べる方法について

このQ&Aのポイント
  • 以下の質問文章では、特定の条件に合うフォルダが存在するかを調べる方法について質問しています。
  • 具体的には、指定したフォルダ内に、特定の文字列で始まるフォルダが存在するかを判定したいとのことです。
  • 質問者は、System.IO.Directory.Existsメソッドを使用しましたが、ワイルドカード「*」は使用できないためうまく動作しませんでした。代替の方法を教えて欲しいとのことです。
回答を見る
  • ベストアンサー

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

条件に合うフォルダが存在するかを調べたい 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自体に「*」が使用できないと思うのですが、何か他によい方法があればどうかご教授ください。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • pkh4989
  • ベストアンサー率62% (162/260)
回答No.2

こんにちは。 VB6なら以下の方法で、出来ると思いますが・・・     If Dir("c:\a\f0004*", vbDirectory) <> "" Then         MsgBox ("ある")     Else         MsgBox ("ない")     End If

masaokun2
質問者

お礼

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

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

サブフォルダーを含まない場合では 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以降該当なら)も見てください。

masaokun2
質問者

お礼

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

回答No.1

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 どうでしょうか

masaokun2
質問者

お礼

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

関連するQ&A

  • FTPでリモートサーバーのディレクトリーの存在確認をしたい。

    FTPでの転送プログラムを組んでいるところですが、FTPサーバーに既に存在するディレクトリー名と同じディレクトリー名で作成しようとすると、エラーになります。 それで、同じディレクトリーが存在するかどうかのチェックを行いたいのですが、下記のやり方では旨くチェックしてくれません。 既に存在するディレクトリーを存在しないと嘘を教えます。 以上宜しくお願い致します。 If IO.Directory.Exists(uri) = False Then MsgBox(uri & "が存在しません。") End if

  • フォルダが存在するかどうかを判断したい

    シェルの中で、特定のフォルダが存在するかどうかを判断し、 存在しなかった場合だけ、ある処理を行うようにしたいと思います。 どのようにすればよろしいのでしょう? ちなみに、ファイルがあるかどうかは以下で確認できました。 if [ -f ファイル名 ] ; then 処理 ;fi

  • 【file_exists】ファイルが存在するのに、存在しないとなります

    いつもお世話になっております。 ■環境■ PHP5 Windows ■状況■ フォルダ内にtextファイルが20~45個入っております(個数は状況によって変わります)。 ■目的■ フォルダのtextファイルの中身を参照し、各textファイルに必ず含まれる数字を取り出す。でございます。 ■方法■ (1)フォルダにあるファイル名を取りだす (2)fopenで読み込み(r)で全部を見、数字を別ファイルに書き込む と考えたのですが、(1)で.、..というよくわからないファイルも一緒に出てきてしまったので、file_existsでファイルが存在するか確認してから(2)に移ろうとお思いました。 が、ファイル名は全部ないといわれてしまうのです。 しかしfile_exists($filename)の$filenameを表示させ、ブラウザにこぴぺするとtextデータは出てきます。 以下プログラムの一部です ※$cは(1)で得たフォルダ内にあるファイル名をループでまわしている値です for($b=0;$b<$a;$b++){  $filename="C:/Inetpub/wwwroot/php/kore/1/".$c; if (file_exists($filename)) { print "あるよ<BR>"; } else { print "ないよ<BR>"; } } 結果は(一部です) C:/Inetpub/wwwroot/php/kore/1/.text⇒ないよ C:/Inetpub/wwwroot/php/kore/1/..text⇒ないよ C:/Inetpub/wwwroot/php/kore/1/0155442A5.txt⇒ないよ C:/Inetpub/wwwroot/php/kore/1/01762602A.txt⇒ないよ です。 上記の C:/Inetpub/wwwroot/php/kore/1/01762602A.txt C:/Inetpub/wwwroot/php/kore/1/0155442A5.txt は確実に存在しております。 どこがおかしいのか、ご教授いただければ幸いです よろしくお願いいたします

    • ベストアンサー
    • PHP
  • VB .netでドキュメントにフォルダの作成の仕方

    VB .netで自分のドキュメントにフォルダを作成する方法を教えて下さい。 普通のフォルダ作成はできました。 System.IO.Directory.CreateDirectory("c:\test\test") 自分のドキュメントに作りたいので以下のようにやってみましたがダメでした。 System.IO.Directory.CreateDirectory("%USERPROFILE%\Documents\test") 何かやり方がありますか? それとも以下のようなベタ書きしかできませんか? System.IO.Directory.CreateDirectory("c:\Users\user1\Documents\test")

  • VB6.0フォルダの存在をチェックするには?

    Win2000prosp4,VB6.0sp6で指定したフォルダがあるかどうかチェックするにはどうすればよいでしょうか? Dir関数を使えばよいかなと思ったのですが、ヘルプには「パターンと一致するフォルダ名を大文字で戻り値として返す」 とあるのに例えば Msgbox Dir("c:\test") としても表示されるのは""となってしまいます。 フォルダ名の指定の仕方がまずいのかと思い Msgbox Dir("c:\test\") としてみると今度はtestフォルダ内のファイル名が戻り値となってしまいます。 引数がファイル名ならきちんと存在を判定できるのですが、フォルダだとどうすればよいのでしょうか?

  • vb.net コピーの進捗をプログレスバーで

    質問ばかりでもうしわけないのですが タイトルにあるようにコピーの状況を プログレスバーで表示できたらなと思い作成したのですが うまく動きません。 プログレスバー自身単独では動くのですがコピーと合わせると フリーズしてしまいます。 プログラミング経験と発想力が乏しいのでご教授いただけたら幸いです Private Sub Bt_1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bt_1.Click Dim fname1 As String = "C:\フォルダ名A" Dim fname2 As String = "C:\フォルダ名B" Dim ber1 As Integer If IO.Directory.Exists(fname1) = True Then Me.Lb_1.Text = "テキスト文字" For ber1 = 0 To 20 Me.ProgressBar1.Value = ber1 System.IO.File.Copy("コピー元テキストファイルA", "コピー先テキストファイルA", True) My.Computer.FileSystem.CopyDirectory("コピー元フォルダA", "コピー先フォルダA", True) My.Computer.FileSystem.CopyDirectory("コピー元フォルダB", "コピー先フォルダB", True) Next ber1 If IO.Directory.Exists(fname2) = True Then System.IO.File.Copy("コピー元ファイルB", "コピー先ファイルB", True) End If MessageBox.Show("終了報告テキスト", "タブ名") ' System.IO.Directory.Delete("コピー元", True) Me.ProgressBar1.Value = 0 Application.Exit() こんな感じで作成しております。 ファイル自身が1GBぐらいあるので フリーズしていないかプログレスバーや%表示でしらせたいので 教えていただけると助かります。 よろしくお願いします。

  • ファイル内の文字列検索

    PCに特定のファイルの有無を確認するために、VBで… Sub Main() If system.IO.Directory.Exists("c:\ファイル名") Then Console.Writeline("ファイル名はCドライブにあります") else Console.Writeline("ファイル名はCドライブにありません") としてファイルの存在を確認しています。 もう一歩踏み込んでファイルの中の文字列の有無を確認することはできるでしょうか?

  • ファイルの存在確認方法について(Java)

    あるディレクトリに、 "ファイルが1つ以上存在する"(=もしくは、"ファイルは0個である")というのを判別する方法はありますでしょうか? 今は、既に存在しているファイル名の一つを使って File objFile = new File("C:\\work\\test.txt"); if (objFile.exists()) {  System.out.println("前回のファイルが残っています。削除してから操作してください"); } というように1ファイルずつ名前を指定して書いているのですが、 上記の「\\work」ディレクトリの中にファイルが複数ある時に全てを記載するのは効率が悪いです。 分かる方、教えてください。

    • ベストアンサー
    • Java
  • [VB2008]ファイル存在確認について

    質問です。VB2008を使ってる者ですが、以下のソースが分りません。 例で言います。 最初に以下のファイル存在を確認します。 C:\TEST\test1.txt C:\TEST\test2.txt C:\TEST\test3.txt 全て存在する ここまでは良いのですが、この後 例えば C:\TEST\test1.txt C:\TEST\test2.txt C:\TEST\test3.txt C:\TEST\test4.txt ←これ(これ) ファイルの存在確認で同じフォルダ("TEST")に 存在確認の必要としない不要ファイル("これ")を検出して 削除したいのですが、方法が分りません。 "これ"の不要ファイルの名前は、必ずしも"test4"では無い 存在チェック以外の不要ファイルを削除したいのです。 Dim checkFile As String = "C:\Work\Test.txt" If System.IO.File.Exists(checkFile) Then Console.WriteLine("ファイルが存在します") Else Console.WriteLine("ファイルが存在しせん") End If 上記の後、必要の無いファイルを検出して削除するには どうすれば良いでしょうか? 凄く困ってるので、教えて下さい

  • フォルダー名に特殊文字?が存在する場合にエラー発生

    以下のコードでフォルダー名を取得しています。 しかし、フォルダー名に特殊文字?が存在する場合に下記でエラーが発生します。  例えば「Oxygène」 でeの上に’があるなど   If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then      実行エラー 53: ファイルが見つかりません。 これは、excelの仕様で処理できないのでしょうか ? 他のコードで処理できれば教えて下さい。 --------------------------------------- Sub フォルダ名取得() Dim MyName Dim MyPath Dim i As Long ’仮の消込(初期化: 前回の記入文をクリアー) Range("A5:H50").Clear i = 1 ' フォルダーを自由に選べること。 参考:officeTANAKA With Application.FileDialog(msoFileDialogFolderPicker) If .Show = True Then ' MsgBox .SelectedItems(1) If Len(.SelectedItems(1)) = 3 Then ' c:\の場合とサブフォルダーの場合 MyPath = .SelectedItems(1) Else MyPath = .SelectedItems(1) & "\" End If End If End With If MyPath = Empty Then MsgBox "フォルダー名表示をキャンセルしました。": Exit Sub 'Range("b2:c2").ShrinkToFit = True ' 縮小してセル内に表示 MyName = Dir(MyPath, vbDirectory) ' 最初のフォルダ名を返します。 '親フォルダー Range("A2") = MyPath Do While MyName <> "" ' ループを開始します。 ' 現在のフォルダと親フォルダは無視します。 If MyName <> "." And MyName <> ".." Then ' ビット単位の比較を行い、MyName がフォルダかどうかを調べます。 If (GetAttr(MyPath & MyName) And vbDirectory) = vbDirectory Then Range("a" & i + 4) = MyPath & MyName ' アクティブシートA5セルから下方にフルパス表示。 Range("b" & i + 4) = MyName ' アクティブシートB5セルから下方にフォルダ名表示 i = i + 1 End If End If MyName = Dir ' 次のフォルダ名を返します。 Loop MsgBox MyPath & "の中にフォルダーは" & (i - 1) & "個のフォルダーがありました。" End Sub

専門家に質問してみよう