上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

--/--|スポンサー広告||TOP↑

AppleScript がひらがなとカタカナを区別してくれません(><) その2 の続き。

Mac OS X 10.4.7 時点でのお話。
(シンボリックリンク of folder ... of folder ...) as alias
はオリジナルの alias になってしまうため、AppleScript 中でシンボリックリンクを削除したつもりがオリジナルを削除してしまうというトラブルに見舞われる恐れがありますが、Finder で作成したいわゆる「エイリアス」は as alias としてもきちんとエイリアスファイル自体のパスを取得できるのでその心配はありません。
なので気をつけるべきはシンボリックリンクだけなのですが、エイリアスもシンボリックリンクも class は alias file なので、少々面倒です。
以下のスクリプトではリスト中の項目ごとに ls -dl を実行し、結果が「l」ではじまるものだけを別のリストによけています。
どうしても各項目を alias にしなければならない場面で、シンボリックリンクだけを除外したいときなどに役に立つんじゃないかと。

tell application "Finder"
set testList to (every item of (path to desktop folder))
set slinkList to {}
set itemList to {}
repeat with j in testList
set pPath to (POSIX path of (j as Unicode text))
if (do shell script "ls -dl " & quoted form of pPath) starts with "l" then
set slinkList to slinkList & {contents of j}
else
set itemList to itemList & {contents of j}
end if
end repeat
end tell
{|シンボリックリンク|:slinkList, |シンボリックリンクでない項目|:itemList}


スポンサーサイト
07/31|AppleScriptコメント(0)トラックバック(0)TOP↑

AppleScript がひらがなとカタカナを区別してくれません(><) の続き。

Mac OS X 10.4.7 でのお話。
前回 t.b.d.w さんに教えてもらった is in を使う方法を応用すると、exists や every item of ... も do shell script で代替せずに書くことができます。ちょっと長くなりますけど。

デスクトップフォルダに「ガンバ.txt」という項目があれば true を返す

tell application "Finder"
set itemList to (every item of (path to desktop folder) whose name is "ガンバ.txt") --デスクトップフォルダにある「ガンバ.txt」または「がんば.txt」という名前の項目をリストに。
if itemList is not {} then --リストが空でなければ。
set existsBool to {}
repeat with curItem in itemList
--itemList の項目一つ一つに対してカタカナの「ガンバ.txt」かそうでないかを判別する。
set bool1 to (name of curItem) is in "ガンバ.txt"
set bool2 to "ガンバ.txt" is in (name of curItem)
set existsBool to existsBool & ({bool1, bool2} = {true, true})
--「ガンバ」であって「がんば」でない項目があれば existsBool に true が入る。
end repeat
if existsBool contains {true} then
--if existsBool is true then という書き方ではダメっぽい。
return true
else
return false
end if
else --デスクトップフォルダに「ガンバ.txt」も「がんば.txt」もなければ。
return false
end if
end tell

デスクトップフォルダ内で名前に「ガンバ」を含む項目をリストにする

tell application "Finder"
set testList to (every item of (path to desktop folder) whose name contains "ガンバ")
set finalList to {} as list
repeat with curItem in testList
if ("ガンバ" is in (name of curItem)) then
set finalList to finalList & {contents of curItem}
end if
end repeat
end tell

ところで

二番目のスクリプトの
set finalList to finalList & {contents of curItem}
という部分、
set finalList to finalList & (curItem as alias)
でいいんじゃないの? と思われるかもしれませんが、実は as alias にはちょっとした問題がありまして。
おもろい、めずらしいアップルスクリプト発表会 6 (688-704)
要するに
(シンボリックリンク of folder ... of folder ...) as alias
はオリジナルの alias になってしまうという(((((((( ;゚Д゚)))))))
Finder 上ではエイリアスファイルとして扱われているとは言え結局はリンクなので、これが「不具合」なのか「仕様」なのか私には判断できませんが、Finder を操作して項目に変更を加えるような AppleScript を書く上で注意しなければならない点であるのは確かです。
でもまあ、
(シンボリックリンク of folder ... of folder ...) as Unicode text
という書き方もできるし、自分ではシンボリックリンクなんか使ってないから別にいっか (いや……) 。


07/30|AppleScriptコメント(0)トラックバック(0)TOP↑

Mac OS X 10.4.7 時点のお話。

選択項目を特定のフォルダに移動する AppleScript を書くのに Finder の move コマンドでは別ヴォリュームへの移動がただのコピーになってしまうため、UNIX コマンドの mv を使っていたのですが、
内蔵 HDD - Mac OS 拡張 (ジャーナリング)
から
外付け HDD (USB 1.1) - Mac OS 拡張 (ジャーナリング)
へ webloc ファイルを移動したらリソースフォークが消えて、URL を開けなくなってしまいました。
ちなみに同一ヴォリューム間の移動、また cp によるコピーでは問題ないようです。

ところで、リソースフォークが消えても URL を開ける webloc があるんですね。
適当に試してみたところ、Safari のアドレスバーのファビコンをドラッグアンドドロップして作成した webloc ファイルはリソースフォークのみでデータフォークが存在しないのに対して、アドレスバーの文字列やページ内のリンクから作ったものはデータフォークとリソースフォークの両方に URL が保存されるため、後者はリソースフォークが消えてしまっても URL を開けることがわかりました。

データフォークつき webloc はテキストエディタで普通に開くことができます。書式を守って拡張子を webloc または webbookmark で保存すれば普通のテキストエディタでもインターネットロケーションファイルを作れるようです。

……と、そんなことが今更わかっても失った URL は戻ってこないわけですが、この経験を今後に活かそうと思います……活かせたらいいなあ_| ̄|○_| ̄|○_| ̄|○

追記2006-07-20:
AppleScript の make new internet location file で作成したものはデータフォークとリソースフォークを両方持っているようです。

tell application "Finder"
make new internet location file at (path to desktop folder) to "http://kotoerisan.blog16.fc2.com/" with properties {name:"Thing collar Bu log"}
end tell


07/20|Macコメント(0)トラックバック(0)TOP↑

display dialog anything

anything060719_1.png

display dialog "" default answer anything

anything060719_2.png

AppleScript のアプリケーション予約語 (?) みたいですが、何に使うんだろう?


07/19|AppleScriptコメント(0)トラックバック(0)TOP↑

受信したメールに見慣れないアイコンがついていました。
エクスクラメーションマーク (ビックリマーク) が2つ並んだものです。
こんなの。

xpriority060711.png

ヘルプには見当たらなかったので Google 検索してみたところ、どうやら優先度が高い (と送信者が思わせたい) メールに付くアイコンのようです。
表示メニュー>メッセージ>すべてのヘッダ でメールヘッダを全て表示させてみると
X-Priority: 1
という項目がありました。

でもこの X-Priority って、受信するソフトによって扱いが変わるらしいし、件名に「重要」って書くのとたいして変わらない気が……^^;

参考:
mail.app two exclamation points in the flag column. [Archive] - Mac Forums
【コラム】OS X ハッキング! 第65回 Mail.appに機能を追加する (MYCOMジャーナル)
メールヘッダーを理解しよう


07/11|Macコメント(0)トラックバック(0)TOP↑
プロフィール

AquaBowler

  • Author:AquaBowler
  • 現在の Mac 環境:
    iBook Late2001
    Mac OS X 10.4.11
フリーエリア
最近の記事
最近のコメント
最近のトラックバック
月別アーカイブ
カテゴリー
ブログ内検索
RSSフィード
リンク
del.icio.us
feed meter

RSS feed meter for http://kotoerisan.blog16.fc2.com/

FC2カウンター
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。