アプリ版:「スタンプのみでお礼する」機能のリリースについて

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をどう得たらよろしいでしょうか?

A 回答 (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

という具合。
    • good
    • 0
この回答へのお礼

再度ありがとうございます。

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

ありがとうございました。

お礼日時:2008/08/18 18:34

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 などの方が向いているでしょう。

この回答への補足

set text item delimiters to "abc"

において"Finderでエラーが起きました : text item delimitersを
"abc"に設定できません。"
というエラーが出てしまいます。


環境を下記忘れていたのですが、leopard上で作成しています。

apple scriptのバージョンによってうまくいかないのでしょうか?

補足日時:2008/08/18 18:09
    • good
    • 0
この回答へのお礼

早速の回答ありがとうございます。

参考にして勉強してみます。

お礼日時:2008/08/18 18:02

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!