如何使用AppleScript

时间:2019-05-07 23:22:18

标签: applescript usb

我最近开始了一个我的小项目,该项目使用诸如Python或AppleScript之类的语言在Mac上操纵文件和其他东西。我正在制作多个不同的程序来执行这些操作。

最近我开始编写一个程序,将桌面背景更改为该程序所在的USB记忆棒上的文件。它旨在在不同的计算机上工作,因此我必须将其保留在USB记忆棒上。

问题是,当我从计算机上运行程序时,AppleScript似乎无法在USB上找到文件。我也不确定将程序移至USB时是否需要更改代码。

当我在计算机上使用文件时,该程序运行良好,但每次尝试从USB检索图像时,似乎都会出现错误。

这是适当的代码。

set Username to system attribute "USER"
set Photo to (random number from 1 to 5) as text
tell application "Finder"
    make new folder at desktop with properties {name:"DesktopFolder"}
    move entire contents of folder "USB/Photos/" to folder "Users/" & Username & "/Desktop/DesktopFolder/"
    set desktop picture to POSIX file "/Users/" & Username & "/Desktop/DesktopFolder/Image" & Photo & ".png"
end tell

其中move entire contents of folder "USB/Photos/" to folder "Users/" & Username & "/Desktop/DesktopFolder/"行是产生以下错误Finder got an error: Can’t get folder "USB/Photos/".

的行

我想发生的是将USB中的图像复制到桌面上的新文件夹中,然后从该文件夹中随机选择一张照片作为新的桌面背景。

任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:0)

主要问题是 Finder 无法理解posix路径(即斜杠表示法);它使用 HFS路径进行操作,该路径使用冒号代替斜杠,并在文件路径开头替换磁盘名称。

因此,等效的HFS路径指向与posix路径相同的位置

/Users/{{user}}/Desktop/DesktopFolder/Image4.png

写为

Macintosh HD:{{user}}:Desktop:DesktopFolder:Image4.png

因此,要指向USB驱动器上名为"USB"的文件夹,应编写:

USB:Photos:

这是脚本的修改和更正/改进的修改:

set n to (random number from 1 to 5) as text

tell application "Finder"
    set F to make new folder at desktop with properties {name:"DesktopFolder"}
    move every item of folder "USB:Photos:" to F
    set desktop picture to the file ("Image" & n & ".png") in F
end tell

我已经取消了许多路径引用,这些路径引用被明确表示为破碎的字符串片段,而是设置了一个变量来存储对您在桌面上创建的文件夹位置的引用。这样,您可以使用变量引用将目标定位到该文件夹​​以移动和选择文件。