Applescript 测试文件是不是存在

Posted

技术标签:

【中文标题】Applescript 测试文件是不是存在【英文标题】:Applescript testing for file existenceApplescript 测试文件是否存在 【发布时间】:2010-08-12 15:35:38 【问题描述】:

好的,我认为这将是一个简单的,但显然我错过了一些明显的东西。我的代码如下:

set fileTarget to ((path to desktop folder) & "file$") as string

if file fileTarget exists then
    display dialog "it exists"
else
    display dialog "it does not exist"
end if

简单吧?不幸的是,当我运行脚本时它返回错误

Can’t get file "OS X:Users:user:Desktop:files$".

文件是否存在并不重要,这与我得到的错误相同。我已经尝试了十几种不同的方法,但它仍然让我难过。

【问题讨论】:

【参考方案1】:

我使用这个子程序来查看文件是否存在:

on FileExists(theFile) -- (String) as Boolean
    tell application "System Events"
        if exists file theFile then
            return true
        else
            return false
        end if
    end tell
end FileExists

加盐调味。

【讨论】:

请注意,Finder 也有一个具有相同功能的命令exists【参考方案2】:

除了“存在”是一个 Finder 或系统事件命令之外,这很容易。这不是一个直接的 applescript 命令。因此,您必须将其包装在一个告诉应用程序代码块中。仅供参考:这是另一种不需要应用程序的方式。它之所以有效,是因为当您强制一个“别名”的路径时,它必须存在,否则会出现错误。因此,您可以执行以下操作。

set fileTarget to (path to desktop folder as text) & "file$"

try
    fileTarget as alias
    display dialog "it exists"
on error
    display dialog "it does not exist"
end try

注意:您的代码中有错误。您正在使用 & 运算符添加字符串,但您做错了,尽管您幸运地得到了正确的答案。使用 & 运算符时,运算符两侧的每个对象都必须是字符串。 “桌面文件夹的路径”不是字符串,因此我们首先必须将其设为字符串,然后将字符串“file$”添加到其中。就这样吧……

set fileTarget to (path to desktop folder as text) & "file$"

【讨论】:

他收到了我的((path to desktop folder) & "file$") as string 。这就是我多年来一直这样做的方式,我从来没有遇到过问题。 是的,我知道它有效,因为一开始我也是这样做的。 Applescript 很好……它有助于纠正小错误。如果您在将其强制为字符串之前查看加法的结果,它看起来像这样“alias "Macintosh HD:Users:hmcshane:Desktop:", "file$""。这是一个包含 2 个项目的列表,所以这肯定不是我们想要的。希望更好地了解该理论将有助于将来解决更复杂但行不通的问题。 我从来没有这样想过,但你的更干净。感谢您的提示。【参考方案3】:

避免原始错误 无法获取文件“OS X:Users:user:Desktop:files$”。 只需添加到脚本告诉块 告诉应用程序“Finder” 将 fileTarget 设置为 ((桌面文件夹的路径) & "file$") 作为字符串

如果文件fileTarget存在则 显示对话框“它存在” 别的 显示对话框“它不存在” 万一 结束告诉

【讨论】:

以上是关于Applescript 测试文件是不是存在的主要内容,如果未能解决你的问题,请参考以下文章

Applescript 显示 Apple 菜单栏项目

从 Cocoa 应用程序运行 AppleScript

在 Apple Music 中打开/搜索 Spotify 曲目(使用 Applescript)

使用 JavaScript 语法在 AppleScript 中打开 XML 文件

Applescript制作新文件夹

沙箱化嵌入 AppleScript 的 Objective-C 应用程序