2016-10-31 11 views
0

私はアプリケーションを持っています。テキストのインスタンスを別のテキストに置き換えることによって、どのファイルのテキストも編集することができます。applescriptを使用して一度に複数のファイルを編集する方法

必須、このスクリプトでは、この順序でこれらの作業を行う必要があります。 フォルダを選択します。 拡張子が.txtのすべてのファイルを選択する 各ファイルに個別にアクセスし、特定のテキストを検索します。 テキストを新しいテキストに置き換えます。 ファイルを閉じて、次のファイルに移動します。

コードは、私は一度に複数のファイルを選択するか、フォルダを選択して検索テキストが含まれているフォルダ内のすべてのファイルを編集するためにスクリプトを使用するかできるようにしたい

set aFolder to choose folder "Select folder to be processed" 
tell application "Finder" to set allFIles to every file of aFolder whose name extension is in {"txt"} 

repeat with someFile in allFIles 

set SomeText to (read SomeFile) 

set {SearchText, ReplaceText} to {"Searches of this", "Replaces with this"} 
set {TempTID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, SearchText} 
set {TextItems, AppleScript's text item delimiters} to {text items of SomeText, ReplaceText} 
set {SomeText, AppleScript's text item delimiters} to {TextItems as text, TempTID} 

set OpenFile to open for access SomeFile with write permission 
try 
    set eof of OpenFile to 0 
    write (text 1 thru -2 of SomeText) to OpenFile as text 
    close access OpenFile 
on error errmess 
    log errmess 
    try 
     close access OpenFile 
    end try 
end try 
end repeat 

を下回っています。どんな助けもありがとうございます。

EDIT:フォルダの内容の残りの部分から.txtファイルを切り離すためのスクリプトを入手できることはわかっています。これらのファイルを「見る」ことができます(たとえば、表示ダイアログを行うと、 SomeFileの名前を呼び出す変数を追加してダイアログボックスで見ることができます)私はそれを編集できるようにファイルを読み取ることができません。私が必要とするのは、フォルダを開き、すべての.txtファイルを見つけて開くこと、特定の単語/句のインスタンスを別のものに置き換えてテキストを編集し、次のファイルに移動する前にファイルを閉じることです。

+0

私はまだ意図したとおりに機能この特定のスクリプトを取得することができません。明確にするために、スクリプトの必要性とその理由をより深く理解して元の投稿を編集します。私はpbellが提供したコードを追加することもありますが、それは動作しますが、必要な方法ではありません。 – medrob

答えて

0

あなたは、フォルダを選択して、このスクリプトを使ってその中のすべてのファイルを処理することができます

set aFolder to choose folder "Select folder to be processed" 
tell application "Finder" to set allFIles to every file of aFolder whose name extension is in {"txt"} 

repeat with someFile in allFIles 
-- do here what you need for someFile (alias) !! 
-- you can cut/paste your current script here 
end repeat 
+0

だから私はあなたが提案したことをやって、あなたの与えたスナップの中に自分のコードを貼り付けました。問題は、フォルダ全体を実行するのではなく、そのフォルダを開き、そのフォルダ内のファイルを選択できるようにすることです。ファイルを選択すると、別のファイルを選択するように求められます。私は終わりのないいくつかのファイルを選択して選ぶことができます(決してピッキングを終わらせることはできません)。必要に応じてファイルにテキストを書きますが、スクリプトのエラーを引き起こす選択ファイルウィンドウを閉じるまでスクリプトをエスケープする方法はありません。また、一度にフォルダ全体ではなく、一度に1つずつ選択する必要があります。 – medrob

+0

あなたのコードを私の中に挿入するとき、あなたの最初の行「someFileを(ファイルを選択する)」を削除する必要があります。なぜなら変数someFileはすでに私のループで定義されているからです。あなたのコードをテストしませんでした。なぜなら、それは1つのファイルで動作すると仮定しているからです。 – pbell

関連する問題