AppleScript";另存为;文本编辑中的HTML

AppleScript";另存为;文本编辑中的HTML,applescript,textedit,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 app

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

我对这个真的很陌生。。。非常感谢您的帮助。

您不需要进行文本编辑。有一个命令行程序textutil,它可以在不打开和保存textexedit所需的所有内容的情况下完成任务。我们可以修复您的文本编辑脚本(它有一些错误),但请先尝试一下,让我们知道它是否适合您。html文件将具有相同的名称,但具有html扩展名,并将位于source_文件夹中。可以使用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中设置了tell app TextEdit。那太糟糕了。这样做会产生很多冲突,因为您基本上是在告诉查找者让TextEdit做一些事情。这是不好的,因为命令可能会混淆,而且调试此类问题非常困难。所以,把你的告诉块分开
  • 避免告诉应用程序执行不在其applescript字典中的命令。您应该只告诉应用程序执行它知道的命令,而应用程序只知道其字典中的命令。例如,您告诉查找者“选择文件夹”。查找程序不知道该命令。这是一个applescript命令。因此,像您这样做是另一个可能的错误来源。在这种情况下,这是一个简单的命令,它可以工作,但通常避免这样做
  • 关于Finder,您应该避免过度使用它。Finder是计算机上的一个主要程序,经常忙于处理与计算机相关的事情。因此,最好只在必要时使用它。作为一个例子,您可以在我的代码中看到,我从Finder中删除了“choose folder”和repeat循环。我特意将“as alias list”附加到Finder命令的末尾,以使文件列表在Finder-tell代码块之外可用。当然,如果需要,可以使用Finder,但如果不需要,最好不要使用它
  • 使用应用程序的applescript字典。如上所述,字典列出了应用程序能够理解的所有术语和语法(尽管字典很难理解,但使用得越多,您会做得越好)。在AppleScript编辑器的“文件”菜单下,选择“打开字典”,将显示理解AppleScript的所有应用程序的列表。从中选择一个应用程序以查看其字典。例如,您试图理解TextEdit的“另存为”命令。你通常可以从字典里得到好的方向,所以你应该看看。使用搜索字段进行搜索
    所以我希望这能有所帮助!祝你好运。

    你不需要进行文本编辑。有一个命令行程序textutil,它可以在不打开和保存textexedit所需的所有内容的情况下完成任务。我们可以修复您的文本编辑脚本(它有一些错误),但请先尝试一下,让我们知道它是否适合您。html文件将具有相同的名称,但具有html扩展名,并将位于source_文件夹中。可以使用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中设置了tell app TextEdit。那太糟糕了。这样做会产生很多冲突,因为您基本上是在告诉查找者让TextEdit做一些事情。这是不好的,因为命令可能会混淆,而且调试此类问题非常困难。所以,把你的告诉块分开
  • 避免告诉应用程序执行不在其applescript字典中的命令。您应该只告诉应用程序执行它知道的命令,而应用程序只知道其字典中的命令。例如,您告诉查找者“选择文件夹”。查找程序不知道该命令。这是一个applescript命令。因此,像您这样做是另一个可能的错误来源。在这种情况下,这是一个简单的命令,它可以工作,但通常避免这样做
  • 关于Finder,您应该避免过度使用它。Finder是计算机上的一个主要程序,经常忙于处理与计算机相关的事情。因此,最好只在必要时使用它。作为一个例子,您可以在我的代码中看到,我从Finder中删除了“choose folder”和repeat循环。我特意将“as alias list”附加到Finder命令的末尾,以使文件列表在Finder-tell代码块之外可用。当然,如果需要,可以使用Finder,但如果不需要,最好不要使用它
  • 使用应用程序的applescript字典。如上所述,字典列出了应用程序能够理解的所有术语和语法(尽管字典很难理解,但使用得越多,您会做得越好)。在AppleScript编辑器的“文件”菜单下,选择“打开字典”,将显示理解AppleScript的所有应用程序的列表