以上です。 AppleScriptを使用してテキストファイルに書き込む方法を教えてください。
私はぐるぐる試しましたが、答えは何年も前のようであり、今日、何が好ましいイディオムであるべきか本当にわかりません。
on write_to_file(this_data, target_file, append_data) -- (string, file path as string, boolean)
try
set the target_file to the target_file as text
set the open_target_file to ¬
open for access file target_file with write permission
if append_data is false then ¬
set eof of the open_target_file to 0
write this_data to the open_target_file starting at eof
close access the open_target_file
return true
on error
try
close access file target_file
end try
return false
end try
end write_to_file
それとのインターフェースは、以下でクリーンアップできます...
my WriteLog("Once upon a time in Silicon Valley...")
on WriteLog(the_text)
set this_story to the_text
set this_file to (((path to desktop folder) as text) & "MY STORY")
my write_to_file(this_story, this_file, true)
end WriteLog
純粋なAppleScriptの短いバージョン:
set myFile to open for access (choose file name) with write permission
write "hello world" to myFile
close access myFile
ネイティブの1つのコマンドソリューションはないようです。代わりに、ファイルを開いて後で閉じる必要があります。
また、ファイルにテキストを少しだけ吐きたい場合は、シェルを使用するのが簡単なハックであることも学びました。
do Shell script "echo TEXT > some_file.txt"
@JuanANavarro。
シェルを使用する場合は、テキストとファイルパスに引用形式を使用する必要があります。これにより、たとえばファイル名にスペースを使用したり、テキスト内のアポストロフィなどの文字を使用したエラーを防ぐことができます。
set someText to "I've also learned that a quick hack, if one only wants to spit a bit of text to a file, is to use the Shell."
set textFile to "/Users/USERNAME/Desktop/foo.txt"
do Shell script "echo " & quoted form of someText & " > " & quoted form of textFile
上記のスクリプトは正常に動作します。
私が持っていなかった場合&引用された形式のsomeText
しかし、代わりに&someTextを使用しました。次のエラーが発生します。
エラー "sh:-c:行0:予期しないEOF一致する` `の検索中
sh:-c:1行目:構文エラー:予期しないファイルの終わり "番号2
"I've"内のアポストロフィは、コマンドの一部と見なされます。
もしわたしが持っていたら
textFileを "/ Users/USERNAME/Desktop/some foo.txt"として私のファイルパス(スペースに注意してください。)そして&引用符で囲まれた形式のtextFileがありませんでしたが、代わりに&textFileを使用しました
次に、ファイルが書き出されると、「some foo.txt "ではなく、「some」という名前のファイルに書き込まれます。
私が実行しているシェルスクリプトは、PowerBook G4でループを300000回実行すると遅くなりました;)が、もちろんそれは書く方が速く、時々理にかなっています。次のようにシェル文字をエスケープすることもできます。
シェルスクリプト "echo"と引用符で囲まれた形式のfoobar& ">> some_file.txt"
美的理由から私は
シェルスクリプト「#...」を実行するように指示する
しかし、私はまだ確認していません(私が信じていること)、「シェルスクリプトを実行する」が「Finderを伝える」のブロック内にある場合、サブシェルを作成するのはFinderプロセスであることなどです。 「シェルスクリプトを実行するように指示してください」を使用すると、少なくともスクリプトエディターのログの方が見栄えがよくなります。 ;)