2011-09-11 3 views
3

AppleScriptを使用して、選択したドキュメントのテキストを検索して置き換えたいとします。置換したいテキストは常に同じであるため、その文字列で事前定義された変数を設定し、選択したドキュメントでその文字列を検索し、別の定義済みの文字列に置き換えます。私はこれを繰り返して、1つのドキュメントについて約4回(毎回異なる文字列変数を探す)、プロセスを見つけて置き換えたい。これが完了したら、私は変更された文書を自動的に保存したいと思います。AppleScriptを使用して、選択したファイル内の文字列のセットを検索して置き換えます。

誰かがこれを行う簡単なスクリプトを私に提供できますか?これは私がこれまでに持っていたことです...

tell application "Finder" 
    set theFile to (open for access (choose file with prompt "Select a file to read:")) 
    set txt to (read theFile for (get theFile)) 
end tell 

on replaceText(find, replace, subject) 
set prevTIDs to text item delimiters of AppleScript 
set text item delimiters of AppleScript to find 
set subject to text items of subject 

set text item delimiters of AppleScript to replace 
set subject to "" & subject 
set text item delimiters of AppleScript to prevTIDs 

return subject 
end replaceText 

get replaceText("lorem", "ipsum", txt) 

問題はファイルのすべての内容(.html)を読み上げていないことです。 Loremのイプサムの段落のそれが唯一の 読んでいる「イプサムイプサム悲しみはsedは、consectetur adipisicing ELIT、AMET座ることはやるeius」 私は(取得theFile)でEOFを使用してみましたが、そのdoesntの作業のいずれか

答えて

3

うん。 :)

set the search_document to (choose file of type "TEXT") 
replaceText("whatever you want to search for", "whatever you want to replace with", search_document) 

on replaceText(search_string, replacement_text, this_document) 
    tell application "TextEdit" 
     open this_document 
     set AppleScript's text item delimiters to the search_string 
     set this_text to the text of the front document as list 
     set AppleScript's text item delimiters to the replacement_text 
     set the text of the front document to (this_text as string) 
     close this_document saving yes 
    end tell 
end replaceText 

このスクリプトについての簡単な警告。あなたは...この文字列を含む文書内の単語two

If someone added one plus one, what would be the result? 

...これはあなたの結果だろう...

If sometwo added two plus two, what would be the result? 

他の単語oneのすべての発生を置き換えるした場合それよりも心配することはありません。

コーディングハッピー! :)

+0

乾杯!進捗状況を示すスクリプトを追加しました。手伝ってくれますか?元の投稿を修正して、今問題があることを示しています。 – Kerron

+0

@Kerron Parchment '(アプリケーションへのパス" TextEdit ")' – fireshadow52

+0

を使用してthis_documentを開きます。それでもテキストを置き換えてファイルを保存することはできません。 – Kerron

関連する問題