1

AppleScriptでフォルダ内の一連のRTFファイルをループして、HTMLファイルとして保存したいと思います。

これはこれまでの私の単純なコードです。XXXXは私が苦労しているところです:

tell application "Finder"
    set source_folder to choose folder
    set aList to every file in source_folder
    repeat with i from 1 to number of items in aList
        tell application "TextEdit"
            set aFile to (item i of aList)
            save as aFile XXXXXXXXX
        end tell
    end repeat
end tell

私はこれに本当に不慣れです...どんな助けでも大いに感謝します。

4

1 に答える 1

4

これには TextEdit は必要ありません。TextEdit で必要なすべてのファイルを開いたり保存したりせずにジョブを実行するコマンド ライン プログラム textutil があります。TextEdit スクリプトを修正できます (エラーがいくつかあります) が、まずこれを試して、問題が解決するかどうかをお知らせください。html ファイルは同じ名前ですが、拡張子は html で、source_folder に配置されます。出力パスは、textutil の「-output」スイッチを使用して、コード内で変更できます。できることをすべて見たい場合は、「man textutil」を参照してください。

そして一般的な質問... RTD ファイルとは何ですか? rtfまたはrtfdのことですか?Textutil は rtf/rtfd では動作しますが、rtd では動作しません。そのため、それが実際のファイル タイプではないことを願っています。

set source_folder to choose folder with prompt "Choose a source folder."
set output_folder to choose folder with prompt "Choose an output folder."

tell application "Finder"
    set theFiles to (files of entire contents of source_folder) as alias list
end tell

repeat with aFile in theFiles
    tell application "Finder"
        set fileName to name of aFile
        set fileExt to name extension of aFile
    end tell

    set outputPath to (output_folder as text) & text 1 thru -((count of fileExt) + 1) of fileName & "html"

    do shell script "/usr/bin/textutil -convert html -output " & quoted form of POSIX path of outputPath & space & quoted form of POSIX path of aFile
end repeat

AppleScript は初めてだとおっしゃっていたので、AppleScript コードを書くときに覚えておくべき一般的な指針をいくつか紹介します。

  1. Tell ブロッ​​クのコードを互いに入れないようにします。tell app Finder 内に tell app TextEdit があります。良くないね。これを行うと、基本的に Finder に TextEdit に何かをするように指示するように指示しているため、多くの競合の原因となります。コマンドが混乱する可能性があり、この種の問題をデバッグするのは非常に難しいため、これは良くありません。そのため、tell ブロッ​​クを分離しておいてください。
  2. AppleScript ディクショナリにないコマンドを実行するようにアプリケーションに指示することは避けてください。アプリケーションが認識しているコマンドを実行するようにアプリケーションに指示するだけでよく、アプリケーションはその辞書内のコマンドについてしか認識していません。たとえば、Finder に「フォルダーを選択する」ように指示しています。Finder はそのコマンドを認識しません。それがapplescriptコマンドです。あなたが行ったようにすることは、エラーの別の考えられる原因です。この場合、これは単純なコマンドであり、機能しますが、一般的にこれを行うことは避けてください。
  3. Finder に関しては、使いすぎないようにする必要があります。Finder はコンピュータの主要なプログラムであり、多くの場合、コンピュータ関連の作業で忙しくしています。そのため、必要な場合にのみ使用することをお勧めします。例として、私のコードで、「フォルダーの選択」と繰り返しループを Finder から削除したことがわかります。Finder コマンドの最後に意図的に「エイリアス リストとして」を追加して、Finder の外で使用できるファイルのリストをコードのブロックに伝えました。もちろん、必要に応じて Finder を使用しますが、不要な場合は使用しないことをお勧めします。
  4. アプリケーションの AppleScript ディクショナリを使用します。前述のように、辞書には、アプリケーションが理解できるすべての用語と構文がリストされています (辞書を理解するのは難しいですが、使えば使うほど上達します)。AppleScript エディタのファイル メニューで [辞書を開く] を選択すると、AppleScript を理解するすべてのアプリケーションのリストが表示されます。その中からアプリケーションを選択して、その辞書を表示します。たとえば、TextEdit の「名前を付けて保存」コマンドを理解しようとしているとします。通常、辞書から適切な方向性を得ることができるので、それを確認する必要があります。検索フィールドを使用して検索してください。

だから私はそれが役立つことを願っています! 幸運を。

于 2013-01-26T01:43:31.530 に答える