• 締切済み

フォルダ検索

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

みんなの回答

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

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

jetli2010
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。
  • usokoku
  • ベストアンサー率29% (744/2561)
回答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
質問者

お礼

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

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 指定フォルダの絶対パス取得

    初歩的なことですが教えてください。 VB.netにて、指定したフォルダの相対パスに対する絶対パスの取得を行いたいのですが、良い方法が見つかりません。 「Path.GetFullPath メソッド」を使用して見ましたが、存在しないパス「例:\A\」を指定すると、勝手に「例:C:\A\」のように絶対パスが割り付けられてしまいます。実際に存在するパスを検索して取得することは出来ないのでしょうか? 例:「ABC」というフォルダが「C:\program files」や「D:\」などに存在するという結果です。

  • VB2005で自分自身のPathの取得

    VB2005初心者です。宜しくお願いします。 プログラムを作って任意のフォルダーにそのプログラムがインストールされたとします。自分が置かれているPathを取得する方法を教えて頂けないでしょうか?

  • VBAのフォルダ検索について

    指定したパス以下のフォルダをすべて取得する処理を行っているのですが、 再帰処理をしているため、フォルダ数に従って処理が重くなります。 何とかならないでしょうか。 下記のサイトを参考にし、受け取ったパスをシート上のリストボックスに格納しています。 http://www.tsware.jp/tips/tips_478.htm

  • Default Userフォルダのパス取得について

    VB.NET又はVBScriptで、Default Userフォルダ内にあるApplication Dataフォルダのパスを取得する方法をご教示いただけないでしょうか。 初心者ですが、よろしくお願いします。

  • フォルダ内にさらにフォルダがあるか知りたい

    Windows2000 VB6 で開発をしています。 フォルダ内にあるフォルダ名称だけを取得することって出来るのでしょうか? フォルダ内のファイル数が多く、一つずつ確認するのでは時間がかかりそうなので、 もっと簡単に早くできる方法がないか模索中です。 よろしくお願いします。

  • VBでのファイル検索(API以外で)

    誰か教えていただければうれしいです VBでファイル検索をしたいのですが まず利用可能なドライブを取得して ドライブごとに検索してファイルがあれば その絶対パスとファイルのあったドライブ名を グローバル変数に格納したいのですが API関数を使わない方法がわかりません わかるかたがいらっしゃれば教えていただけないでしょうか

  • フォルダ内のサブフォルダ名やファイル名の取得

    VB初心者です。 あるフォルダ内のサブフォルダ名や数、ファイル名を取得したいのですが・・・ コントロールのDirListBoxを使用するか、Dir関数を使用したいのですが、上手くできません。 ご存知の方、教えてください

  • MSOUTLOOKにてフォルダを検索するには

    Microsoft Outlook 2010を使用しています。 受信トレイの配下に多数のサブフォルダを作成しています。 先日ドラッグミスで、あるフォルダ(仮にaaaという名前のフォルダ)を無関係なフォルダの中へ ドラッグしてしまい行方不明となりました。 高度な検索メニュー等ではメールそのものは検索できてもフォルダの検索はできませんでした。 VBマクロでフォルダ位置を取得する系のマクロを使用すれば検索することは可能なのですが 通常の検索機能では不可能なのでしょうか?

  • エクセルVBAでセルにあるファイル名のファイルを同じくセルにあるフォルダ名のフォルダにコピー

    お世話になります。 絶対パスがあり、コピー元、コピー先(格納先)としてシート上の操作で ファイルをフォルダにコピーしたいのですが、VBAでできるでしょうか? ・B列B6以下にコピー元のファイル名(絶対パス) ・D6に格納先のフォルダ名(絶対パス) があります。 この条件だけでコピー→格納するコードを教えていただけたら助かります。よろしくお願いします。

  • C#のプログラムで作業フォルダを取得できない (IIS5.1+.NET

    C#のプログラムで作業フォルダを取得できない (IIS5.1+.NET 2005) IIS5.1のサイトで、C#で作ったプログラムを実行します。 プログラムは同じフォルダーにあるiniファイルを読み込んで作業します。 問題は、正しい作業フォルダーを取得できないとのことです。 下記のメソッドの戻り値は「c:\windows\system32」になっています。 Directory.GetCurrentDirectory() Environment.CurrentDirectory しかし、それはEXEファイルのフォルダーではないです。 どうやって本当の作業フォルダーを取れますか? ちなみに、当サイトでvb6で作ったプログラムもあります。 そちらは「App.Path」で本当の作業フォルダーを取れます。