このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

ワイルドカードを教えてください

発言者:広島工業大学:佐々木 和枝
( Date Saturday, January 25, 1997 15:19:33 )


AppoeScript について初心者なのですが教えてください。
Easy BBS を利用して画像データをファイル名で検索するスクリプトを書いて見
ました。
Keywordとして2つの項目を作り、その両方を"_"で組み合わせたファイル名の
検索がうまく行きません。
2つの項目は"観測日"と"パス・ロウ"なのですが、例えば観測日に"1995.07.21
"と入力するか、""と何も入力しなければ問題なく検索できるのですけれど、何
月か何日かがわからない場合、観測日を入力するとうまく検索できません。
出来れば、日付がわからなくても検索できるようにしたいと思ってます。
ファイルメーカーを使った時には、"*"でうまく行ったので、"*"が使用できれ
ば問題ないと思います。
何か仕様可能なワイルドカードがあれば教えてください。

→  衛星データ検索

佐藤@京都市 さんからのコメント
( Sunday, January 26, 1997 05:33:34 )

Wild という OSAX が使えるかもしれません。
私自身はこれまで使う機会がなかったのですが、なかなか高機能なようです。
使うだけなら無料です。
<ftp://ftp.riken.go.jp/pub/mac/umich/util/script/wild1.00.cpt.hqx>

田中求之 さんからのコメント
( Monday, January 27, 1997 13:46:14 )

>日付がわからなくても検索できるようにしたいと思ってます。

ファイル名の検索の時にワイルドカードを使用したいということですよね? ワイルド
カードの機能を AppleScript で実現するのは難しいですが、それに相当する機能を
実現することはできます。ただし、Finder を呼び出しますので、処理は遅いかも
しれませんが。

keyA と keyB の二つがファイル名に含まれるものをリストアップするには

tell application "finder"
  set myList to files of folder xxxx whose name contains keyA and name contains keyB
end tell

というスクリプトを使いますよね。これで、もし keyA と keyB が完全に入力されて
いた場合は

 .... whose name is (keyA & "_" & keyB)

に、また、たとえば keyA が 97.01 のように不完全(部分)だった場合は、上の

 .... whose name contains keyA and name contains keyB

を使うように切り替えるわけです。

Finder を呼び出すので、処理速度はすこし落ちますが。

佐々木和枝 さんからのコメント
( Friday, January 31, 1997 11:08:49 )

あれから試行錯誤してみて、WILDというOSAXは難しそうだったので、
finderを呼び出して実行するスクリプトを書いてみました。
しかしながら、何度実行してもタイムアウトになってしまいます。
ファイルの数が150以上あるのですが、そのことが関係あるのでしょうか?
今は、WILDというOSAXを試しているのですが、その中でlist volumeという
サンプルで改めて保存しなおしたり、書き換えて実行を行うと
" Where is the compiled script "finderLib"? "
と聞かれます。
このfinderLibとは、何を指定すればいいのかわかりません。
そのlist volumeを変更も保存もしなければfinderLibを聞かれないので、
うまくいくのですが、変更や保存をするとfinderLibを聞かれるので
とりあえずlist volumeを指定したところ処理が途中で中断され、構文誤りを
指摘されます。
どなたかfinderLibが何者なのか教えてください。

田中求之 さんからのコメント
( Friday, January 31, 1997 14:30:55 )

>どなたかfinderLibが何者なのか教えてください。

Scriptable Finder (AppleScript でコントロールできる Finder )が
登場する以前に配布されていた、Finder コントロール用のライブラリです。
AppleScript 1.0 (最初の配布バージョン)にはバンドルされていたように
思いますが、その後 Finder が Scriptable になりましたので使われなく
なりました。

FinderLIb を読んでいる部分は、何をしているのかさえ分かれば書き換えられる
はずです。

佐々木和枝 さんからのコメント
( Friday, January 31, 1997 16:06:05 )

早速、お返事ありがとうございます。
finderLibが聞かれているのは、

-- ensure that the FinderLib is loaded
property FinderLib : "null"
if class of FinderLib ュ script then
  set FinderLib to load script (choose file with prompt ツ
    "Where is the compiled script \"finderLib\"?" of type "osas")
end if

の部分です。
この後、検索したいフォルダ名とフルパスかファイル名のみかを指定して
*や?を組み込んだファイル名を指定します。
その条件にあったファイル名をスクリプティング 対応エディタに記録して
いきます。
実行して構文誤りが出るのは、

tell FinderLib to set itemName to fileName from k without trailingColon

のfilename以下で、この後でスクリプティング対応エディタを呼び出して
copyというコマンドで記録していきます。
もし、この問題のFinderLibが何を必要としているのかわかれば教えてください。

田中求之 さんからのコメント
( Friday, January 31, 1997 19:39:06 )

>実行して構文誤りが出るのは、
>tell FinderLib to set itemName to fileName from k without trailingColon

スクリプトを見る限り、ファイル名を抜き出しているようですね。

この部分を

tell application "Finder"
  set fileName to name of K
end tell

に置き換えてうまくいきませんか?( k ではなくて file K かもしれません)

佐々木和枝 さんからのコメント
( Tuesday, February 04, 1997 13:33:43 )

色々とご指導ありがとうございました。
試行錯誤した結果、ようやく出来上がりました。
これからも、CGIを勉強していきたいと思いますので
また何かあったときにはよろしくお願いします。