初めての AppleScript 動きましたバージョン。(昨日の夜の段階では日本語テキストの出力に失敗してましたが、それも成功します。)
制作・動作確認環境 | OS X 10.3.9 + ScriptEdtor 2.0 |
(*
指定したフォルダ以下のファイルの絶対パス、タイプ、クリエータ情報をテキ
ストファイルに書き出す
target リスト作成対象フォルダ
output リスト出力先
*)
-- パスを指定
choose folder with prompt "リストを作成するフォルダを選んでください"
set target to getPath(result as string)
choose file name with prompt "リストの出力先を指定してください"
set output to result
-- 出力先を開く
try
set fp to open for access output with write permission
set eof fp to 0
on error
close access fp
end try
-- ファイルのリストを取得してくり返し
do shell script "find " & target
repeat with filename in line2list(result)
-- ラスト5文字が /Icon なら除外(なんか怒られるので)
set last5 to text -5 thru last item of filename
if (last5 is not "/Icon") then
set fileinfo to (info for (POSIX file filename))
-- フォルダか否かを明示
set foldertext to ""
if (folder of fileinfo is true) then
set foldertext to "Folder"
end if
try
write filename & tab & foldertext & tab & file creator of fileinfo
& tab & file type of fileinfo & return to fp
end try
end if
end repeat
close access fp
--
-- Classic パス形式から POSIX パスの最後の / のない形式を取得
--
on getPath(str)
set len to (length of POSIX path of str) - 1
return text 1 thru len of (POSIX path of str)
end getPath
--
-- 文字列を改行でリストに分ける
--
on line2list(str)
set text item delimiters to return
return every text item of (str as text)
end line2list
以下、ハマったところ。
- ファイルを開いたときのエラー処理がへたくそなのか、ファイルを開きっぱなしになったりして変なエラーが起きることがある
- ScriptEditor を再起動しないとずっと同じエラーが出たりするので注意。
- 文字列処理が、、、ものすごくつらいorz なんかリストに分割したり、ファイルに書き出したり、クリップボードに吐き出したりするのがポピュラーなテクニックらしいけど、面倒くさすぎてやっとれん。
- さらに日本語を含むテキストを扱う際、text, unicode text, string とか気を使わないといけない。
難しいよ。
自動アップデートでまったく補足できていなかったので気づかなかったけど、pre の改行の問題が直ってる!
やった!
1.3.2 で直ったのか、1.3.3 で直ったのかは分かりませんが。