• 締切済み

フォルダ検索

初心者なりにいろんなサイトを閲覧しましたがどうしてもわかりませんので どなたか助けてください。 ドライブからして不明な、どこかにあるはずのフォルダを探すプログラムを書きたいのですが・・・  「(不明ドライブ)\(不明フォルダ数個)\フォルダA\フォルダB」という条件で、 フォルダBの絶対パスを取得する方法はあるのでしょうか? ドライブの名前や数も不明という条件下で使えるものにしたいのですが。 説明もへたくそですみません、宜しくお願いします。 (VB2008です。)

みんなの回答

  • usokoku
  • ベストアンサー率29% (744/2559)
回答No.4

>ファイル名の検索まで必要なんですね・・ ディレクトリの属性で検索をかけることはできます。 しかし、この方法を使うと、いくつか検索から外れるディレクトリがでるので、システムを使用しないで、ユーザー側で分離しています。

jetli2010
質問者

お礼

補足をありがとうございます。 結局この部分は手動ですることにしました。 お手数おかけしました。

  • usokoku
  • ベストアンサー率29% (744/2559)
回答No.3

VB6.0、Win98 なので大幅に異なっているはずです。 [HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Setup] "MemphisDetectedLastDrive"="Z" を読みとって、最終ドライブ名を取得。失敗したら、最終ドライブは「Z:」 IER& = GetVolumeInformation(strRootPathName$, strVolumeNameBuffer, MAX_PATH&, lngVolumeSerialNumber&, lngMaximumComponentLength&, lngFileSystemFlags&, strFileSystemNameBuffer, FileSystemNameBufferLen&) か IER& = GetDriveType(strRootPathName$) で、ボリウムの属性などを取得できたらば、そのドライブが存在する。 これでドライブ名の一覧が作れます。 FindNo& = FindFirstFile(IAdir$ & A$, FindData) IA& = FindNextFile(FindNo&, FindData) IA& = FindClose(FindNo&) で、すべてのファイル名を探して、 If (FindData.Attributes And FILE_ATTRIBUTE_DIRECTORY&) <> 0 Then ならば、ディレクトリ。 私の持っているルーチンは保存ルーチンを含めて、100行ぐらいです。 ただし、Declare やType のような大域宣言を除く。

jetli2010
質問者

お礼

回答ありがとうございます。 ファイル名の検索まで必要なんですね・・・ 簡単ではないことがわかりました(苦笑

  • ken2r
  • ベストアンサー率25% (1/4)
回答No.2

System.IO.Path.GetFullPath() ではダメですか?

jetli2010
質問者

お礼

回答ありがとうございます。 提案いただいた構文で試してみましたが、今のところ うまくいってません(多分私が悪い・・・) http://msdn.microsoft.com/ja-jp/library/system.io.path.getfullpath(VS.80).aspx ↑このサイトの宣言と構文を利用すると"pathはstringじゃない"というエラーが 出るのですが、利用の仕方が間違ってるのでしょうか。 その他のサイトで、この構文を説明しているものもいくつか試しましたが やはりうまくいってません。 もうちょっと頑張ってみます!

  • tom11
  • ベストアンサー率53% (134/251)
回答No.1

>「(不明ドライブ)\(不明フォルダ数個)\フォルダA\フォルダB」という条件 不明なものは、存在する全部を指定しないと、いけないような。

jetli2010
質問者

お礼

早々の回答ありがとうございました。 ということは、やはり長ったらしいプログラムにならざるを得ないって ことですよね・・・