我最近开始了一个我的小项目,该项目使用诸如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中的图像复制到桌面上的新文件夹中,然后从该文件夹中随机选择一张照片作为新的桌面背景。
任何帮助将不胜感激。谢谢!
答案 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
我已经取消了许多路径引用,这些路径引用被明确表示为破碎的字符串片段,而是设置了一个变量来存储对您在桌面上创建的文件夹位置的引用。这样,您可以使用变量引用将目标定位到该文件夹以移动和选择文件。