■ 現在のこのページの役立ち度:
表示されない場合こちらのリンクからもご覧になれます。
■ このページの役立ち度を評価する:
役立ち度を評価してください。
(1(左):あまり役立たない - 5(右):大変役立った):
■ ページの共有:
[ サイト内検索 ]
カスタム検索
#6986-0ディレクトリ検索方法ごうちゃん2000-03-29(水) 17:33
     #6992-0RE#6986:ディレクトリ検索方法せつら2000-03-29(水) 22:39
#6986-0
ディレクトリ検索方法
 こんにちは。
 
 ある特定のドライブ(例えば、C:\)配下から、任意のディレクトリ(例えば、ABC)を検索するような
ことをプログラムで出来ますか?

 Dim DirName as String

     Chdir "C:\"

     DirName = Dir("ABC",vbDirectory)

 このプログラムだと、C:\ の中だけでしか検索できないですよね?
 これをC:\のサブディレクトリを含めて検索したいのですが・・・。

 申し訳ありません。
#6992-0
RE#6986:ディレクトリ検索方法
サブディレクトリ以下もプログラムで探す場合、Dir の結果を GetAttr で確認して、それもディレ
クトリだったら現在のパスを記憶して、自分の関数自身を更に呼び出して、ファイルが見つかったら
ListBox にでも AddItem して、1ディレクトリ分終わって戻ってきたら先に覚えたところまで読み
飛ばして…、という事をコーディングすれば良いです。 「再帰呼び出し」とかをキーワードにして
探せば、どこかにサンプルが転がっているでしょう。(ここでも、私も何回かサンプル書いてます)

再帰呼び出しは判り難いかもしれないので、DOSプロンプトの命令を利用して検索してしまう例
なんぞ書いてみます。 フォーム上に文字列用の TextBox とボタン、結果表示用の ListBox を貼
っておいてください。

Private Sub Command1_Click()
    Const cFile As String = "c:\aaa.txt"
    Const cBat As String = "c:\aaa.bat"
    Const cRoot As String = "c:\"
    Const lTimeout As Long = 5
    Dim cw As String
    Dim l As Long
    Dim dw As Date

    If Dir(cFile) <> "" Then Kill cFile

    Open cBat For Output As #1
    Print #1, "dir /s /b " + cRoot + " | find /i " + Chr(34) _
        + Text1.Text + Chr(34) + " > " + cFile
    Close #1

    Shell cBat, vbHide

    While Dir(cFile) = ""
        DoEvents
    Wend

    dw = Now
    Do While FileLen(cFile) = 0
        If lTimeout < DateDiff("s", dw, Now) Then Exit Do
        DoEvents
    Loop

    List1.Clear
    If FileLen(cFile) = 0 Then
        MsgBox "タイムアウト"
        Exit Sub
    End If

    Open cFile For Input As #1
    While EOF(1) = 0
        Line Input #1, cw
        List1.AddItem cw
    Wend
    Close #1
End Sub

API とか使わないで終了を待つため、ちょっといい加減な終了待ちを行ってます。 再帰使うより、
かえって長くなったかも?
お探しの情報は見つかりましたか?お困りの問題は解決しましたか?
サイト内検索, 似た記事検索で見つからなくてもあきらめずに掲示板で質問してみましょう。
VB初心者友の会があなたのお役に立てれば幸いです。また、本ページの投稿者の方々にこの場を借りて感謝致します。
本ページは過去ログを集めて自動構成しています。よろしければこのページに関するフィードバックをお願いします。
(※ 構成の誤り、広告等の不適切な記事、リンク切れ、読めないページの報告など)