Applescript:如何在给定位置搜索和记录给定类型的每个文件的路径

Applescript:如何在给定位置搜索和记录给定类型的每个文件的路径,applescript,recursive-query,Applescript,Recursive Query,我相信这很容易,也很简单,但我是一个完全的AppleScript noob。 脚本必须: 在卷中搜索每个项目,其种类为AppleWorks文档(文件扩展名不够,因为在OS X之前,嵌入介质的AppleWorks文档实际上是包,而不是文档) 记录每个文档的路径和文件名(不带扩展名),以便以后使用 将每个文档复制到不同的卷中 以各种非编程方式手动更新每个文档,不用问,我真的必须这样做 使用原始文件名(尽管有扩展名)和原始路径,将每个原始文件替换为其自身的更新版本(现在可能是iWork格式) 我从以下

我相信这很容易,也很简单,但我是一个完全的AppleScript noob。 脚本必须:

  • 在卷中搜索每个
    项目
    ,其
    种类
    AppleWorks文档
    (文件扩展名不够,因为在OS X之前,嵌入介质的AppleWorks文档实际上是包,而不是文档)

  • 记录每个文档的路径和文件名(不带扩展名),以便以后使用

  • 将每个文档复制到不同的卷中

  • 以各种非编程方式手动更新每个文档,不用问,我真的必须这样做

  • 使用原始文件名(尽管有扩展名)和原始路径,将每个原始文件替换为其自身的更新版本(现在可能是iWork格式)

  • 我从以下几点开始:

    tell application "Finder" to get the path of every item in startup disk
    
    但我立即得到:

    error "Finder got an error: Can’t get directory of startup disk." number -1728 from directory of startup disk
    

    我对一些编程语言相当精通,但我对AppleScript一无所知。即使是一些关于如何收集有关
    项目
    等信息的基本提示(即我应该使用
    路径
    还是
    目录
    ?)也将不胜感激。我老板的电脑上有几千个几乎是随机分布的文件要管理

    为了让您开始,让我解释一下如何找到您可以使用的命令。每个应用程序都有一个applescript术语和用法的“词典”。每个应用程序都不同,因此您必须查看字典才能找到正确的术语。所以从发现者开始。打开AppleScript编辑器,在“文件”菜单下,您将看到“打开词典”。选择该选项,将打开一个对话框,其中包含所有应用程序的列表。找到查找器并打开它。您可以浏览字典,但您已经知道一些术语,因此请尝试搜索字段。尝试搜索“项目”。您可能会得到一个包含大量“item”结果的列表,但您希望查找类型为“class”的结果。单击该按钮,您将看到类文件并显示其属性。这些就是你可以搜索的东西

    请注意,您不需要获取路径,因为获取项目就是它的路径。您将看到有一个“kind”属性和一个“name extension”属性,这两个属性都可以帮助您找到要查找的特定文档类型

    通常,当你得到某件东西的物品时,你只得到顶级物品。您将无法获取子文件夹中的项目。要搜索子文件夹,您需要使用命令“完整内容”(您也可以在字典中找到)

    最后一点提示,有许多类型的“项目”。你可以通过关注你正在寻找的特定类型的项目(你也可以在字典中找到不同类型的项目)来缩小搜索范围。您需要“文档文件”类型

    有了这些,我要做的就是找到所有的appleworks文件。首先,您需要了解appleworks文件的“kind”属性,以便在脚本中使用它。运行此命令,选择一个appleworks文件,然后查看结果。你会得到一个属性的记录。查看“kind”值并在第二个脚本中使用它

    set a to choose file
    tell application "Finder" to return properties of a
    
    现在把你的价值放在这个脚本中。。。它可能与“AppleWorks”有所不同

    这将向您返回文件列表。由于它是一个列表,您可以在列表上使用重复循环,查询每个列表项的名称,然后将它们复制到另一个磁盘。注意,这可能需要很长时间,因为它会搜索整个硬盘

    有一个更快的方法。您可以使用unix实用程序“mdfind”从applescript执行聚光灯搜索。但要做到这一点,您必须知道要查找的文件的kmdItemContentType和其他一些内容。。。所以现在就坚持使用Finder。不管怎样,当你做你工作的其他部分时,你都需要这个发现者

    祝你好运

    非常感谢您花时间写出我需要的代码和这么多的背景信息。
    tell application "Finder"
        set theAppleworksDocs to document files in entire contents of startup disk whose kind is "AppleWorks"
    end tell