为此,您不需要 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
你提到你是 applescript 的新手,所以我会给你一些在编写 applescript 代码时应该牢记的一般指示。
- 避免将代码块彼此放在一起。您已经在 tell app Finder 中告诉 app TextEdit。那很糟。这样做是许多冲突的根源,因为您基本上是在告诉 Finder 告诉 TextEdit 做某事。这不好,因为命令可能会混淆,并且很难调试这类问题。因此,请将您的告诉块分开。
- 避免告诉应用程序执行不在其 applescript 字典中的命令。您应该只告诉应用程序执行它知道的命令,而应用程序只知道其字典中的命令。例如,您告诉 Finder “选择文件夹”。Finder 不知道该命令。那是一个applescript命令。因此,按照您的做法进行操作是另一个可能的错误来源。在这种情况下,这是一个简单的命令,它会起作用,但通常避免这样做。
- 关于 Finder,您应该避免过多地使用它。Finder 是您计算机上的主要程序,经常忙于处理与计算机相关的事情。因此,最好仅在必要时使用它。例如,您可以在我的代码中看到我从 Finder 中删除了“选择文件夹”和重复循环。我故意将“作为别名列表”附加到 Finder 命令的末尾,以使文件列表在 Finder 之外可用,告诉代码块。当然,如果需要,请使用 Finder,但如果您不需要它,最好不要使用它。
- 使用应用程序的 applescript 字典。如上所述,字典列出了应用程序可以理解的所有术语和语法(当然,字典很难理解,但使用的次数越多,你就会越熟练)。在 AppleScript Editor 的文件菜单下,选择“打开字典”并显示所有理解 applescript 的应用程序的列表。从中选择一个应用程序以查看其字典。例如,您正试图找出 TextEdit 的“另存为”命令。你通常可以从字典中得到好的方向,所以你应该看一下。使用搜索字段进行搜索!
所以我希望这会有所帮助!祝你好运。