• ベストアンサー

apple scriptファイル名の一部のみ変更

apple scriptにおいて、ファイル名変更の自動化を試みています。 ファイル名にabcという文字が含まれる場合、それらをdefに 変更する、というようなことがしたいのですが、 (001abc.txt -> 001def.txt 003abc0.txt -> 003def0.txt) apple scriptにおいて set oldName to name of aObj --- newNameを指定 set name of aObj to newName の上記でoldNameからnewNameをどう得たらよろしいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • sevenless
  • ベストアンサー率66% (374/561)
回答No.2

サブルーチンにしてください。例えば、 tell application "Finder" set oldName to "001abc.txt" set newName to my replace(oldName) end tell on replace(oldName) set oldDel to text item delimiters set text item delimiters to "abc" set myList to text items of oldName set text item delimiters to "def" set newName to myList as string set text item delimiters to oldDel return newName end replace といった具合。 あるいは、Finder で直接操作したいなら、text item delimiters を AppleScript's text item delimiters に置き換えてください。 tell application "Finder" set oldName to "001abc.txt" set oldDel to AppleScript's text item delimiters set AppleScript's text item delimiters to "abc" set myList to text items of oldName set AppleScript's text item delimiters to "def" set newName to myList as string set AppleScript's text item delimiters to oldDel end tell という具合。

flex1101
質問者

お礼

再度ありがとうございます。 AppleScript'sをつけると実行できました。希望の名前変更scriptが 実行できるようになりました。 ありがとうございました。

その他の回答 (1)

  • sevenless
  • ベストアンサー率66% (374/561)
回答No.1

set text item delimiters to "abc" set myList to text items of oldName set text item delimiters to "def" set newName to myList as string ということになるでしょうか。 テキストを一旦区切って再度繋げるという手法を取ります。 このままだとテキストの区切り文字が "def" になったままなので、 set oldDel to text item delimiters set text item delimiters to "abc" set myList to text items of oldName set text item delimiters to "def" set newName to myList as string set text item delimiters to oldDel という形で、区切り文字を元に戻しておいた方がいいかもしれません。 この程度なら大したことはないですが、AppleScript は文字列操作が得意とは言えないので、もっと複雑な操作をするなら perl などの方が向いているでしょう。

flex1101
質問者

お礼

早速の回答ありがとうございます。 参考にして勉強してみます。

flex1101
質問者

補足

set text item delimiters to "abc" において"Finderでエラーが起きました : text item delimitersを "abc"に設定できません。" というエラーが出てしまいます。 環境を下記忘れていたのですが、leopard上で作成しています。 apple scriptのバージョンによってうまくいかないのでしょうか?

関連するQ&A