ひまわりユーザー プログラム掲示板 バックアップ
注意
ひまわりのススメ  □ ひまわり本家Home  □ 新着記事  □ 新規投稿  □ SEARCH  □ 参考プログラム集
ツリー表示

MESSAGE サブルーチン用途:ファイル検索の汎用サ.. /KO-CHAN (02/02/24(Sun) 01:06) [509]
......MESSAGE 仕様について /moka (02/02/24(Sun) 07:35) [512]
............MESSAGE Re[2]: 仕様について /KO-CHAN (02/02/24(Sun) 23:52) [515]
............MESSAGE 配列で返すことについて /KO-CHAN (02/02/26(Tue) 00:48) [527]
......MESSAGE 感想 /北神 陽太 (02/02/25(Mon) 10:34) [518]
............MESSAGE Re[2]: 感想 /KO-CHAN (02/02/26(Tue) 00:28) [526]
..................MESSAGE 具体的には /北神 陽太 (02/02/26(Tue) 09:54) [529]
........................MESSAGE Re[4]: 具体的には /KO-CHAN (02/03/01(Fri) 02:04) [540]
..............................MESSAGE Re[5]: 具体的には /北神 陽太 (02/03/01(Fri) 10:22) [541]
....................................MESSAGE Re[6]: 具体的には /KO-CHAN (02/03/01(Fri) 14:21) [542]
..........................................MESSAGE そのとおり /北神 陽太 (02/03/01(Fri) 16:38) [543]
................................................MESSAGE Re[8]: そのとおり (願:ミネさんの返信) /KO-CHAN (02/03/01(Fri) 23:53) [546]
......................................................MESSAGE Re[9]: そのとおり (願:ミネさんの返信) /北神 陽太 (02/03/02(Sat) 13:15) [548]
............................................................MESSAGE ということは・・・ /KO-CHAN (02/03/02(Sat) 23:19) [549]
............................................................MESSAGE Re[10]: そのとおり (願:ミネさんの返.. /KO-CHAN (02/03/06(Wed) 00:43) [571]
..................................................................MESSAGE その他 /北神 陽太 (02/03/06(Wed) 10:16) [573]
........................................................................MESSAGE Re[12]: その他 /KO-CHAN (02/03/07(Thu) 00:15) [576]
......MESSAGE Re[1]: ファイル検索サブルーチンV.1.10 /KO-CHAN (02/02/26(Tue) 00:08) [525]
......MESSAGE ファイル検索サブルーチンV.1.11 /KO-CHAN (02/02/26(Tue) 23:56) [531]
............MESSAGE Re[2]: ファイル検索サブルーチンV.1.11 /クジラ飛行机 (02/03/03(Sun) 00:36) [551]
..................MESSAGE Re[3]: ファイル検索サブルーチンV.1.11 /KO-CHAN (02/03/03(Sun) 01:13) [554]
..................MESSAGE URL間違いに気づきませんでした。ごめん.. /KO-CHAN (02/03/03(Sun) 01:16) [556]


親記事 / ▼[ 512 ] ▼[ 518 ] ▼[ 525 ] ▼[ 531 ]
NO.509  サブルーチン用途:ファイル検索の汎用サブルーチン
□投稿者/ KO-CHAN -(2002/02/24(Sun) 01:06:26)
□U R L/
{---プログラム掲示板投稿フォーム---
【ソフト名】ファイルを探すサブルーチン (バージョン 1.00)
【作 成 者】KO-CHAN (連絡先:ko-chan@mv.tramonline.net)
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.25〜
【転  載】可 (転載条件は下記参照)
【改変運用】可 (できればその内容を報告して欲しいです。)
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】

何かのファイルを全てのハードディスクから検索します。

このサブルーチンはあらかじめ取り込んでおいて、
必要なときに呼び出す形で実行します。
単独での実行はできません。あくまでサブルーチン用途として
ファイルをハードディスクから探すことにのみ特化しています。
対象をCD-ROMやフロッピーディスクも対象にする場合は、
全てのHDD判定の変数「ドライブx」を全て1にすればOKです。
これについては特定のバイパスを作っていませんが、
ドライブ種類の判定の後に手作業で追加すればOKです。
ただし、検索に少し時間がかかるようになります。

探したいファイル名は「探したい」という名前で、
このサブルーチンを呼ぶ前に指定します。

検索の結果は「検索結果パス」という変数で返します。

同じファイル名が検索中に複数存在する場合は、
リストを出して一覧から選択するようにしています。

検索の範囲は以下のように広げています。

1)母艦があるフォルダの1つ上より下位のフォルダ
 ここで探したいファイルが見つかればここでサブルーチンは
 終了し、パスを返します。

2)全てのハードディスクから探したいファイルを探します。
 検索順は、「c->d->a->b->e->f->g->h->i->j」の順です。
 ただし、ハードディスク以外は検索を行いません。
 (はじめに書いた、検索対象ディスクの拡張を行った場合を除く)

3)ファイルが見つからなければ「みつからない」と、返します。

4)複数選択リストの段階でキャンセルされた場合は、
 「キャンセル」と、返します。
 ただし、「キャンセルできない=0」の場合に限られます。
 「キャンセルできない=1」の場合は、キャンセルを空白として
 扱い、リスト選択がキャンセルできないようになります。

転載・同梱についてですが、自由です。
できれば、使っていただいたら何らかの形で報告などを
いただければ幸いです。

---投稿フォームここまで---}



戻る。



*ファイル検索サブルーチン
探したい=「」。
ドライブ数=1
ドライブ=『』。
検索結果パス=「」。
結果temp=「」。



*ファイル検索の下準備
『a:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブa=1。
もし、それが、「固定」でなければ、ドライブa=0。
『b:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブb=1。
もし、それが、「固定」でなければ、ドライブb=0。
『c:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブc=1。
もし、それが、「固定」でなければ、ドライブc=0。
『d:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブd=1。
もし、それが、「固定」でなければ、ドライブd=0。
『e:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブe=1。
もし、それが、「固定」でなければ、ドライブe=0。
『f:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブf=1。
もし、それが、「固定」でなければ、ドライブf=0。
『g:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブg=1。
もし、それが、「固定」でなければ、ドライブg=0。
『h:\』が、存在するか。
もし、それが、「固定」ならば、ドライブh=1。
もし、それが、「固定」でなければ、ドライブh=0。
『i:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブi=1。
もし、それが、「固定」でなければ、ドライブi=0。
『j:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブj=1。
もし、それが、「固定」でなければ、ドライブj=0。

それ=「」。

*まずは母艦の場所から
はじめのフォルダ=母艦のパス
(はじめのフォルダ&『..\』)へ、作業ディレクトリ変更。
はじめのフォルダ=作業ディレクトリ。
探したいは、はじめのフォルダ&探すファイル名。


探したいの、全ファイル列挙。

もし、それが、「」でなければ、いきなりあったへ、飛ぶ。

もし、それが、「」ならば、なかったへ、飛ぶ。



*探す
探したいは、ドライブ&探すファイル名。


探したいの、全ファイル列挙。


もし、それが、「」でなければ、あったへ、飛ぶ。

もし、それが、「」ならば、なかったへ、飛ぶ。


*いきなりあった
結果temp=結果temp&それ。
最後の処理へ、飛ぶ。


*あった
結果temp=結果temp&それ。
なかったへ、飛ぶ。


*最後の処理
本体場所=結果temp。
もし、本体場所=「」ならば、見つからないへ、飛ぶ。
本体場所の、行数。
もし、それ>=2ならば、複数から選択へ、飛ぶ。

パス取りへ、飛ぶ。

*複数から選択
本体場所を「|」で、区切る。
聞きたい=探すファイル名&「の場所を選択してください。」
*選択やり直し
もし、キャンセルできない=0ならば、(ダイアログキャンセルの値=「キャンセル」。)。
聞きたいを、本体場所の、リストから選択。
もし、それ=「キャンセル」ならば、キャンセルしたいへ、飛ぶ
もし、それ=「」ならば、選択やり直しへ、飛ぶ。
本体場所=それ。

パス取りへ、飛ぶ。

*なかった
'「空白」と、言う。

もし、ドライブ数=0ならば、ドライブ変更0へ、飛ぶ。
もし、ドライブ数=1ならば、ドライブ変更1へ、飛ぶ。
もし、ドライブ数=2ならば、ドライブ変更2へ、飛ぶ。
もし、ドライブ数=3ならば、ドライブ変更3へ、飛ぶ。
もし、ドライブ数=4ならば、ドライブ変更4へ、飛ぶ。
もし、ドライブ数=5ならば、ドライブ変更5へ、飛ぶ。
もし、ドライブ数=6ならば、ドライブ変更6へ、飛ぶ。
もし、ドライブ数=7ならば、ドライブ変更7へ、飛ぶ。
もし、ドライブ数=8ならば、ドライブ変更8へ、飛ぶ。
もし、ドライブ数=9ならば、ドライブ変更9へ、飛ぶ。
'もし、ドライブ数=10ならば、見つからないへ、飛ぶ。
もし、ドライブ数=10ならば、最後の処理へ、飛ぶ。


*ドライブ変更0

ドライブ=「c:\\」。
ドライブ数=ドライブ数+1
もし、ドライブc=0ならば、ドライブ変更2へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更1

ドライブ=「d:\\」。
ドライブ数=ドライブ数+1
もし、ドライブd=0ならば、ドライブ変更2へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更2

ドライブ=「a:\\」。
ドライブ数=ドライブ数+1
もし、ドライブa=0ならば、ドライブ変更3へ、飛ぶ。

探すへ、飛ぶ。

*ドライブ変更3

ドライブ=「b:\\」。
ドライブ数=ドライブ数+1
もし、ドライブb=0ならば、ドライブ変更4へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更4

ドライブ=「e:\\」。
ドライブ数=ドライブ数+1
もし、ドライブe=0ならば、ドライブ変更5へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更5

ドライブ=「f:\\」。
ドライブ数=ドライブ数+1
もし、ドライブf=0ならば、ドライブ変更6へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更6

ドライブ=「g:\\」。
ドライブ数=ドライブ数+1
もし、ドライブg=0ならば、ドライブ変更7へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更7

ドライブ=「h:\\」。
ドライブ数=ドライブ数+1
もし、ドライブh=0ならば、ドライブ変更8へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更8

ドライブ=「i:\\」。
ドライブ数=ドライブ数+1
もし、ドライブi=0ならば、ドライブ変更9へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更9

ドライブ=「j:\\」。
ドライブ数=ドライブ数+1
もし、ドライブj=0ならば、最後の処理へ、飛ぶ。

探すへ、飛ぶ。

*パス取り
本体場所から、パスを切り出す。
検索結果パス=それ。
戻る。

*見つからない
検索結果パス=「みつからない」。
戻る。

*キャンセルしたい
検索結果パス=「キャンセル」。
戻る。



▲[ 509 ] / ▼[ 515 ] ▼[ 527 ]
NO.512  仕様について
□投稿者/ moka -(2002/02/24(Sun) 07:35:02)
□U R L/ http://www.geocities.jp/moka21/teatime/
使いまわしの出来るサブルーチンは、
作っておくと便利ですよね。

さてまだ使ってませんが、仕様が少し気になりました。

> 探したいファイル名は「探したい」という名前で、
> このサブルーチンを呼ぶ前に指定します。

変数名は、「検索ファイル名」のような名詞の方がしっくりきます。

> 検索の結果は「検索結果パス」という変数で返します。

「それ」に返してはどうでしょうか?
サブルーチンを関数のように使えますし、
ひまわりの関数の多くはそうなってますし。
プログラマーが考慮すべき変数の数も減ります。

> 同じファイル名が検索中に複数存在する場合は、
> リストを出して一覧から選択するようにしています。

これも上と同じように、「それ」に配列で返すのがいいかと。
結果の一覧をどうするかは、プログラマーがプログラムできます。



▲[ 512 ] / 返信無し
NO.515  Re[2]: 仕様について
□投稿者/ KO-CHAN -(2002/02/24(Sun) 23:52:47)
□U R L/
KO-CHANです。

「探したい」→「検索ファイル名」のようにすることは了解です。

あと、現状では名前に反して返すのがファイルまでのパスを返すので、
「検索結果パス」という名前になっています。
ファイル名を付加したフルパスのファイル名は、返されたパスに探したいファイル名を付加してください。
これは、現状での仕様ですが、検索結果をファイル名付加している・していないの2種類で返すことも検討したいと思います。
そういうことで、「それ」で返すことは考えたのですが、こちらはちょっとだけ考えさせてください。前向きに対応したいと思います。

上記事項を検討した際に、オプション(事前に変数で指定する)で
「それ」で返す場合にファイル名の付加の有無について選択できるように
すればもう少し汎用度が上がりますね。



▲[ 512 ] / 返信無し
NO.527  配列で返すことについて
□投稿者/ KO-CHAN -(2002/02/26(Tue) 00:48:42)
□U R L/
KO-CHANです。

検索結果を配列で返すことについては、
複数ファイルがあった場合の作業テンポラリを利用して
結果を配列で返すことができるように調整したいと思います。
これは、北神さんの感想のレスとダブっているところですが。
現時点では複数検出を配列で返すことはできていません。



▲[ 509 ] / ▼[ 526 ]
NO.518  感想
□投稿者/ 北神 陽太 -(2002/02/25(Mon) 10:34:34)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 まだ使っていませんが、是非、ぜひとも!仕事で使いたいですね。

 用途はただひとつ「会社の核クライアントにインストールしたファイルを、同じバージョンに統一したい」

1)OS環境が異なる(95,2000)
2)インストールしたフォルダがまちまち

 こいつを、今回のバージョンでワイルドカードが使えるようになったので、条件にマッチしたファイルを確定し、全自動で更新したいです。

 この目的のもの、作ってくれませんか?



▲[ 518 ] / ▼[ 529 ]
NO.526  Re[2]: 感想
□投稿者/ KO-CHAN -(2002/02/26(Tue) 00:28:27)
□U R L/
KO-CHANです。感想ありがとうございます。

ご要望の内容ですが、できるかどうか検討させてください。
時間とイメージの出具合と自分の技術と相談します(笑)。

現在の仕様は、探したいファイル名をあらかじめ指定して、
そのファイルの場所を1つに確定して返します。

複数の場所を列挙して、区切った形で返すことは、それほど時間がかかりません。
ただ、更新とまでなると、1つのプログラムとして完結することになりますので、完結させるための枠の作成ということで、時間がかかりそうです。

あと、要望内容で質問ですが、「更新」というのは、更新元ファイルを指定して、検索で見つかったパスに全て上書きするということでしょうか。
「インストール先がまちまち」については、必ず存在するファイルを探すことで場所の差を吸収することになると思います。
まだ、公開していませんが、ソフトのインストール先を探すときはこの方法で探しています。

あと、ひまわりのプログラムでファイルの検索をすることに限ってはOSの依存はないと思います、たぶん。



▲[ 526 ] / ▼[ 540 ]
NO.529  具体的には
□投稿者/ 北神 陽太 -(2002/02/26(Tue) 09:54:00)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 おぉっ、ご検討ありがとうございます。

 具体的な動作条件ですが、
1)サーバまたはMO、CD-ROMにプログラムと、更新元の最新版ファイルが存在しています。
2)更新先のPCは、Windows95,98,2000
3)更新されるファイルの場所は同じではない場合があります。

  例)test.iniのある場所
  C:\My Documents\Path\test.ini
  C:\Documents and Settings\%User Name%\My Documents\Path\test.ini

  例)スタートメニューの場所
  C:\Windows\スタートメニュー\ショートカット.lnk
  C:\Documents and Settings\All Users\スタート メニュー\ショートカット.ink

  その他、HOSTSファイルなどを更新。

 具体的な動作は、
1)ファイル名で、パスを特定。
2)複数のパスに同じファイルがある場合、パスのワイルドカード条件にマッチしていれば、そのパスに特定。マッチしなければキャンセルし、後でエラーリスト報告。
3)1,2で特定できれば、最新版へ上書きコピー。

 これのほとんどが、サーバーの追加、変更で、ネットワークパスやドメインのiPアドレスの変更に伴うものなので、管理者以外では操作できないケースが多く、管理者の数が少ないと、遠隔地のクライアントも含めて同時に変更できないんです。



▲[ 529 ] / ▼[ 541 ]
NO.540  Re[4]: 具体的には
□投稿者/ KO-CHAN -(2002/03/01(Fri) 02:04:09)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。

「具体的な動作は、」以下の
2)について、
サブルーチンを専用にちょっとカスタマイズして、まず、全ドライブ検索後、
全検索結果をリストでメインプログラムに返すようにします(「リストで選択」部分をバイパス)。
その後の「ワイルドカードでマッチ」ですが、もう少し具体的な例が欲しいです。
その後は、リストの行数を数えて、上から順番にマッチして、
マッチしたものを上書きし、マッチしなかったものを何かに出力すればいいのでしょうか?

もちろん、探すファイルは毎回設定してもらうような形になると思います。

こんなイメージを持っていますがどうでしょうか?




▲[ 540 ] / ▼[ 542 ]
NO.541  Re[5]: 具体的には
□投稿者/ 北神 陽太 -(2002/03/01(Fri) 10:22:34)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
次のような条件で、TEST.iniを上書きします。

検索パス
 My Documents または、 Program Files の下位フォルダで、
 HP.exe が存在しているフォルダにあるTEST.ini(フォルダ名は不定)




▲[ 541 ] / ▼[ 543 ]
NO.542  Re[6]: 具体的には
□投稿者/ KO-CHAN -(2002/03/01(Fri) 14:21:50)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。

ということは、hp.exeと、test.iniは同じフォルダにあるので間違いないですね?



▲[ 542 ] / ▼[ 546 ]
NO.543  そのとおり
□投稿者/ 北神 陽太 -(2002/03/01(Fri) 16:38:28)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 HP.exeが使用しているiniファイルを、新しいサーバーのパスに変更する必要があるのです。

 ところが、実行ファイルが1Mを超えているんですね。う〜ん、VBで作るか・・・。
(遠隔地のPCには、まだひまわりを入れていないのです)




▲[ 543 ] / ▼[ 548 ]
NO.546  Re[8]: そのとおり (願:ミネさんの返信)
□投稿者/ KO-CHAN -(2002/03/01(Fri) 23:53:35)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。

となると、上書きをするファイル(最新)が自分のところにあって、
更新する自分のパソコンにひまわりが入っていれば、
リモート先のパソコンにはファイルが上書きできる限りひまわり本体は
必要ない気がします。リモート先にはファイルを送るだけだから。

このような事例の場合、相手側にはひまわりが特別必要な状況ではないですよね?>ミネさん



▲[ 546 ] / ▼[ 549 ] ▼[ 571 ]
NO.548  Re[9]: そのとおり (願:ミネさんの返信)
□投稿者/ 北神 陽太 -(2002/03/02(Sat) 13:15:14)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 リモート先には、こちらからアクセスできません(共有していない)ため、リモートのローカルで実行する必要があります。

 読み取り専用サーバーへアクセスして、自分のローカルドライブを検索する必要があります。



▲[ 548 ] / 返信無し
NO.549  ということは・・・
□投稿者/ KO-CHAN -(2002/03/02(Sat) 23:19:21)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。

ということは、更新ファイルをHTTPあたりでダウンロードして、
更新したいファイルがあるローカルを見つけておいて、
それを更新する、ということになるみたいですねぇ。



▲[ 548 ] / ▼[ 573 ]
NO.571  Re[10]: そのとおり (願:ミネさんの返信)
□投稿者/ KO-CHAN -(2002/03/06(Wed) 00:43:05)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。

もっとも大事なことを聞いていませんでした(^_^;)。

更新されたファイルをおいてあるパソコンには、
HTTP/FTP/その他のどれでアクセスをするのでしょう?

勝手にHTTPを想定して作っていたりするのですが、
アクセス方法を教えて下さい。

現在、質問板に質問を出していますが、解決できないときのため、
更新するファイルの最大数を聞いておきたいです。
最悪、更新するファイルの数だけ項目を作ることになるので。

また、現在の更新方法は、ファイル情報を書いたiniファイルを取りに行って、
それを読んだ上でローカルのものと比較、更新の必要があれば更新する、
といった感じになります。
もしかしたら、必要に応じてLHAの解凍も必要でしょうか。



▲[ 571 ] / ▼[ 576 ]
NO.573  その他
□投稿者/ 北神 陽太 -(2002/03/06(Wed) 10:16:09)
□U R L/ http://homepage1.nifty.com/kitagami/index.htm
 です。インターネットではありません。ルータ経由でネットワークサーバーのフォルダを参照します。

 ・・・しかし、期日が迫ってきたのでVBで作りましたが、自動は怖いなぁという感想。直接現地へ行ったほうが安全かなぁ。(申し訳ない)
 こんなことなら、iniファイルをサーバに置けばよかったのですが、当時の環境では無理だったのです。



▲[ 573 ] / 返信無し
NO.576  Re[12]: その他
□投稿者/ KO-CHAN -(2002/03/07(Thu) 00:15:26)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。

LAN上のパソコンを参照して更新することについては、
自分の環境上ではテストができないので、私が開発していくことがちょっと難しいかも・・・
誰かか、ここまでの情報で開発していただけるとありがたいです。

質問板に掲載している、Internet経由での更新については、そのまま汎用として開発をしていきたいと思います。



▲[ 509 ] / 返信無し
NO.525  Re[1]: ファイル検索サブルーチンV.1.10
□投稿者/ KO-CHAN -(2002/02/26(Tue) 00:08:08)
□U R L/
mokaさんの要望を元に少しだけ改良しました。
「それ」で結果を返すように明示的に変更を加えました。
ファイル名付加の有無も選択可能です。
前バージョンは説明文の表記に間違いがありましたので、
こちらを使用してください。

{---プログラム掲示板投稿フォーム---
-------------------------------------------------------------
【ソフト名】ファイルを探すサブルーチン (バージョン 1.10)
【作 成 者】KO-CHAN (連絡先:ko-chan@mv.tramonline.net)
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.25〜
【転  載】可 (転載条件は下記参照)
【改変運用】可 (できればその内容を報告して欲しいです。)
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】以下参照。
-------------------------------------------------------------
何かのファイルを全てのハードディスクから検索します。

このサブルーチンはあらかじめ取り込んでおいて、
必要なときに呼び出す形で実行します。
単独での実行はできません。あくまでサブルーチン用途として
ファイルをハードディスクから探すことにのみ特化しています。
対象をCD-ROMやフロッピーディスクも対象にする場合は、
全てのHDD判定の変数「ドライブx」を全て1にすればOKです。
これについては特定のバイパスを作っていませんが、
ドライブ種類の判定の後に手作業で追加すればOKです。
ただし、検索に少し時間がかかるようになります。

探したいファイル名は「探すファイル名」という名前で、
このサブルーチンを呼ぶ前に指定します。

同じファイル名が検索中に複数存在する場合は、
リストを出して一覧から選択するようにしています。


▲検索範囲について▼
検索の範囲は以下のように広げています。

1)母艦があるフォルダの1つ上より下位のフォルダ
 ここで探したいファイルが見つかればここでサブルーチンは
 終了し、結果を返します。

2)全てのハードディスクから探したいファイルを探します。
 検索順は、「c->d->a->b->e->f->g->h->i->j」の順です。
 ただし、ハードディスク以外は検索を行いません。
 (はじめに書いた、検索対象ディスクの拡張を行った場合を除く)

3)ファイルが見つからなければ「みつからない」と、返します。

4)複数選択リストの段階でキャンセルされた場合は、
 「キャンセル」と、返します。
 ただし、「キャンセルできない=0」の場合に限られます。
 「キャンセルできない=1」の場合は、キャンセルを空白として
 扱い、リスト選択がキャンセルできないようになります。

●検索結果の返し方●
検索の結果は「検索結果パス」という変数で返します。
ファイル名が付加されたものは「発見場所」で返します。

また、「それ」でも結果を返しますが、こちらについては
オプション変数の「ファイル名付加」に数値を指定することで、
「それ」で返すものを上記2つから選択できます。

ファイル名付加=0 の場合は、「それ」=「検索結果パス」(デフォルト)
ファイル名付加=1 の場合は、「それ」=「発見場所」

※ファイルが見つからない場合・キャンセルの場合は、
 これらの結果も「それ」に入れてあります。

○転載等について○
転載・同梱についてですが、自由です。
できれば、使っていただいたら何らかの形で報告などを
いただければ幸いです。

△改版履歴▽
Ver.1.00  :新規公開
(2002/02/23)

Ver.1.10  :検索対象ファイル名の説明を修正。
(2002/02/25) 説明文の間違いで動作は正常です。すみません(^_^;)
       ファイル名付加の有無でそれぞれパスを返している説明を付加。
「それ」で返すパスにファイル名付加の有無を指定可能にした。

---投稿フォームここまで---}


戻る。



*ファイル検索サブルーチン
探したい=「」。
ドライブ数=1
ドライブ=『』。
検索結果パス=「」。
結果temp=「」。



*ファイル検索の下準備
『a:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブa=1。
もし、それが、「固定」でなければ、ドライブa=0。
『b:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブb=1。
もし、それが、「固定」でなければ、ドライブb=0。
『c:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブc=1。
もし、それが、「固定」でなければ、ドライブc=0。
『d:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブd=1。
もし、それが、「固定」でなければ、ドライブd=0。
『e:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブe=1。
もし、それが、「固定」でなければ、ドライブe=0。
『f:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブf=1。
もし、それが、「固定」でなければ、ドライブf=0。
『g:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブg=1。
もし、それが、「固定」でなければ、ドライブg=0。
『h:\』が、存在するか。
もし、それが、「固定」ならば、ドライブh=1。
もし、それが、「固定」でなければ、ドライブh=0。
『i:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブi=1。
もし、それが、「固定」でなければ、ドライブi=0。
『j:\』の、ドライブ種類判定。
もし、それが、「固定」ならば、ドライブj=1。
もし、それが、「固定」でなければ、ドライブj=0。

それ=「」。

*まずは母艦の場所から
はじめのフォルダ=母艦のパス
(はじめのフォルダ&『..\』)へ、作業ディレクトリ変更。
はじめのフォルダ=作業ディレクトリ。
探したいは、はじめのフォルダ&探すファイル名。


探したいの、全ファイル列挙。

もし、それが、「」でなければ、いきなりあったへ、飛ぶ。

もし、それが、「」ならば、なかったへ、飛ぶ。



*探す
探したいは、ドライブ&探すファイル名。


探したいの、全ファイル列挙。


もし、それが、「」でなければ、あったへ、飛ぶ。

もし、それが、「」ならば、なかったへ、飛ぶ。


*いきなりあった
結果temp=結果temp&それ。
最後の処理へ、飛ぶ。


*あった
結果temp=結果temp&それ。
なかったへ、飛ぶ。


*最後の処理
発見場所=結果temp。
もし、発見場所=「」ならば、見つからないへ、飛ぶ。
発見場所の、行数。
もし、それ>=2ならば、複数から選択へ、飛ぶ。

パス取りへ、飛ぶ。

*複数から選択
発見場所を「|」で、区切る。
聞きたい=探すファイル名&「の場所を選択してください。」
*選択やり直し
もし、キャンセルできない=0ならば、(ダイアログキャンセルの値=「キャンセル」。)。
聞きたいを、発見場所の、リストから選択。
もし、それ=「キャンセル」ならば、キャンセルしたいへ、飛ぶ
もし、それ=「」ならば、選択やり直しへ、飛ぶ。
発見場所=それ。

パス取りへ、飛ぶ。

*なかった

もし、ドライブ数=0ならば、ドライブ変更0へ、飛ぶ。
もし、ドライブ数=1ならば、ドライブ変更1へ、飛ぶ。
もし、ドライブ数=2ならば、ドライブ変更2へ、飛ぶ。
もし、ドライブ数=3ならば、ドライブ変更3へ、飛ぶ。
もし、ドライブ数=4ならば、ドライブ変更4へ、飛ぶ。
もし、ドライブ数=5ならば、ドライブ変更5へ、飛ぶ。
もし、ドライブ数=6ならば、ドライブ変更6へ、飛ぶ。
もし、ドライブ数=7ならば、ドライブ変更7へ、飛ぶ。
もし、ドライブ数=8ならば、ドライブ変更8へ、飛ぶ。
もし、ドライブ数=9ならば、ドライブ変更9へ、飛ぶ。
もし、ドライブ数=10ならば、最後の処理へ、飛ぶ。


*ドライブ変更0

ドライブ=「c:\\」。
ドライブ数=ドライブ数+1
もし、ドライブc=0ならば、ドライブ変更2へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更1

ドライブ=「d:\\」。
ドライブ数=ドライブ数+1
もし、ドライブd=0ならば、ドライブ変更2へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更2

ドライブ=「a:\\」。
ドライブ数=ドライブ数+1
もし、ドライブa=0ならば、ドライブ変更3へ、飛ぶ。

探すへ、飛ぶ。

*ドライブ変更3

ドライブ=「b:\\」。
ドライブ数=ドライブ数+1
もし、ドライブb=0ならば、ドライブ変更4へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更4

ドライブ=「e:\\」。
ドライブ数=ドライブ数+1
もし、ドライブe=0ならば、ドライブ変更5へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更5

ドライブ=「f:\\」。
ドライブ数=ドライブ数+1
もし、ドライブf=0ならば、ドライブ変更6へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更6

ドライブ=「g:\\」。
ドライブ数=ドライブ数+1
もし、ドライブg=0ならば、ドライブ変更7へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更7

ドライブ=「h:\\」。
ドライブ数=ドライブ数+1
もし、ドライブh=0ならば、ドライブ変更8へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更8

ドライブ=「i:\\」。
ドライブ数=ドライブ数+1
もし、ドライブi=0ならば、ドライブ変更9へ、飛ぶ。
探すへ、飛ぶ。

*ドライブ変更9

ドライブ=「j:\\」。
ドライブ数=ドライブ数+1
もし、ドライブj=0ならば、最後の処理へ、飛ぶ。

探すへ、飛ぶ。

*パス取り
発見場所から、パスを切り出す。
検索結果パス=それ。
もし、ファイル名付加=1ならば、それ=発見場所。
もし、ファイル名付加=0ならば、それ=検索結果パス。
戻る。

*見つからない
検索結果パス=「みつからない」。
それ=検索結果パス。
戻る。

*キャンセルしたい
検索結果パス=「キャンセル」。
それ=検索結果パス。
戻る。




▲[ 509 ] / ▼[ 551 ]
NO.531  ファイル検索サブルーチンV.1.11
□投稿者/ KO-CHAN -(2002/02/26(Tue) 23:56:10)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。
Ver.1.10をちょっと手直しして1.11を公開します。
オプション変数で「それ」の出力を変化させることができるようになりました。
また、「リストから選択」で使っている一覧の配列も同様に変数に格納しましたのでメインからの利用の幅が広がったと思います。

掲示板に書き込むには大きくなってきたので、LHA書庫を用意しましたので、
ダウンロードはそちらからお願いします。
-------------------------------------------------------------
【ソフト名】ファイルを探すサブルーチン (バージョン 1.11)
【作 成 者】KO-CHAN (連絡先:ko-chan@mv.tramonline.net)
【種  別】フリーソフトウェア
【ひまわりのバージョン】ver.1.28〜
【転  載】可 (転載条件は下記参照)
【改変運用】可 (できればその内容を報告して欲しいです。)
【ひまわり本体への梱包】可
【実行時に利用作成するファイル】無
【コメント】詳細は以下参照。
【DLページへのURL】http://ko_chan.tripd.co.jp/himawari/
-------------------------------------------------------------



▲[ 531 ] / ▼[ 554 ] ▼[ 556 ]
NO.551  Re[2]: ファイル検索サブルーチンV.1.11
□投稿者/ クジラ飛行机 -(2002/03/03(Sun) 00:36:25)
□U R L/ http://www.text2music.com/
> 【DLページへのURL】http://ko_chan.tripd.co.jp/himawari/
http://ko_chan.tripod.co.jp/himawari/
の、間違いですね?

こうした、有意義なサブルーチンが増えてくると、嬉しいですね。
(上のツリーで話に入れなくてすみませんでした)

サブルーチンで使用しているラベルですが、
「__●●」などの名前規則をつけると、なかなか被ることはないと思います。

(その前に、ひまわりに、名前空間や、ローカル変数などのスコープ概念を、
導入すれば、解決することですよねぇ・・・。う〜む。)




▲[ 551 ] / 返信無し
NO.554  Re[3]: ファイル検索サブルーチンV.1.11
□投稿者/ KO-CHAN -(2002/03/03(Sun) 01:13:15)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。

レスありがとうございます。
次回更新時には、サブルーチン内部の変数とオプション用変数について
レスを参考に変数設定をしたいと思います。



▲[ 551 ] / 返信無し
NO.556  URL間違いに気づきませんでした。ごめんなさい。
□投稿者/ KO-CHAN -(2002/03/03(Sun) 01:16:06)
□U R L/ http://ko_chan.tripod.co.jp/himawari/
KO-CHANです。

URLの間違いに気が付きませんでした。ごめんなさい。
このメッセージのURLは正しくページに到達できると思います。
念のため、表紙ページのURLを記載しておきます。
表紙ページ:「http://fumituki.hoops.ne.jp/



- Child Tree -