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

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

環境:
Mac OS X 10.4.9 (PPC)
GNU bash, version 2.05b.0(1)-release (powerpc-apple-darwin8.0)

日本語などを含むパスを osascript -e で AppleScript に渡そうとしてエラーになる場合、何らかの方法で ASCII 文字の羅列に変換したものを AppleScript の中で戻すような書き方をすればいいのですが、パスが複数あるときはその度に変換を行うよりも、改行区切りで戻せるような形で一気に渡してテキストを行単位で処理する repeat 文を実行する方が速いです。
以下のスクリプトの場合、パスとパスの間に %0a が入った形で渡されています。

"~/Desktop/怡红快绿" というフォルダ以下にある JPEG ファイルを再帰的に検索して見つかったものに赤ラベルをつける。
ファイルは UTF-8 で保存。

#!/bin/sh
found_jpgs=$(find ~/Desktop/怡红快绿 -iname "*.jpg" -or -iname "*.jpeg")
escaped_paths=$(echo -n "${found_jpgs}" | ruby -n -e 'require '\''uri'\''; print URI.escape($_)')

osascript -e 'set percents to "'"${escaped_paths}"'"
set pathNames to (do shell script "echo " & quoted form of percents & " | ruby -n -e '\''require \"uri\"; print URI.unescape($_)'\''")
repeat with i from 1 to (count paragraph of pathNames)
set curPath_alias to (POSIX file (paragraph i of pathNames)) as alias
tell application "Finder" to set label index of curPath_alias to 2
end repeat'

osax を使う方法もあるようですがよく知りません。

非英語環境で、とくに Finder 項目に対して AppleScript でなければできないことをしたいときは、osascript よりも最初から AppleScript で書いて、必要に応じて do shell script で sh を呼ぶ方が楽です。複雑なシェルスクリプトをそのまま記述して実行するのは無理だと思いますが。
わかりやすい解説もあるし。
do shell script in AppleScript (日本語)
Technical Note TN2065: do shell script in AppleScript (英語。こっちの方が新しい。読んでないけど)
AppleScript PARK / Introduction (入門。みんなお世話になってる)

えー、あと毎度のことですが一部のブラウザではバックスラッシュが円記号に化けてます。
でもエディタにコピペするとバックスラッシュになるという不思議。
charset に UTF-8 が使えるとこに移転しようかな。。。

スポンサーサイト

06/11|AppleScriptコメント(0)トラックバック(0)TOP↑
この記事にコメント
名前:
コメントタイトル:
メールアドレス:
URL:
コメント:

パスワード:
管理人だけに表示:
管理者にだけ表示を許可
この記事にトラックバック
プロフィール

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ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。