2005-05-31

絶対パスとファイルタイプとクリエータ情報をリストアップする AppleScript

初めての 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 とか気を使わないといけない。

難しいよ。

Sage 1.3.3

自動アップデートでまったく補足できていなかったので気づかなかったけど、pre の改行の問題が直ってる!

やった!

1.3.2 で直ったのか、1.3.3 で直ったのかは分かりませんが。

About

例によって個人のなんちゃらです