AppleScript在TextEdit中“另存为”HTML

时间:2013-01-26 00:37:46

标签: applescript textedit

我希望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

我真的很陌生......任何帮助都非常感激。

1 个答案:

答案 0 :(得分:4)

您不需要TextEdit。有一个命令行程序textutil可以完成这项工作,而不需要TextEdit所需的所有打开和保存内容。我们可以修复你的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

你提到你是Apple的新手,所以我会给你一些在编写AppleScript代码时应该记住的一般指示。

  1. 避免将tell代码块放在彼此内部。你告诉应用程序Finder里面有app TextEdit。那很糟。执行此操作是许多冲突的根源,因为您基本上是在告诉Finder告诉TextEdit执行某些操作。这不好,因为命令可能会混淆,调试这些问题真的很难。所以保持你的告诉区块分开。
  2. 避免告诉应用程序执行不在其applescript字典中的命令。您应该只告诉应用程序执行它知道的命令,并且应用程序只知道其字典中的命令。例如,您告诉Finder“选择文件夹”。 Finder不知道该命令。这是一个Applecript命令。所以你正在做的是另一个可能的错误来源。在这种情况下,这是一个简单的命令,它可以工作,但通常避免这样做。
  3. 关于Finder,你应该避免使用它太多。 Finder是您计算机上的一个主要程序,并且经常忙于处理计算机相关的东西。因此,最好只在必要时使用它。作为一个例子,你可以在我的代码中看到我从Finder中删除了“选择文件夹”和重复循环。我故意将“as alias list”附加到Finder命令的末尾,以使在Finder之外可用的文件列表告诉代码块。当然,如果需要,请使用Finder,但如果您不需要,最好不要使用它。
  4. 使用应用程序的applescript词典。如上所述,字典列出了应用程序理解的所有术语和语法(授予字典很难理解,但你使用它们的次数越多越好)。在AppleScript编辑器的文件菜单下,选择“打开字典”,然后显示了解AppleScript的所有应用程序列表。从中选择一个应用程序以查看其字典。因此,例如,您正在尝试找出TextEdit的“另存为”命令。您通常可以从字典中获得良好的指导,因此您应该看一下。使用搜索字段进行搜索!
  5. 所以我希望有所帮助!祝你好运。