如何使用 AppleScript 检测和操作 USB 上的文件
How to detect and manipulate files on a USB using AppleScript
我最近开始了我的一个小项目,使用 Python 或 AppleScript 等语言在 Mac 上操作文件和其他东西。我正在制作多个不同的程序来执行这些操作。
最近开始写一个程序,将桌面背景更改为程序所在U盘上的一个文件。它旨在跨不同的计算机工作,所以我必须将它保存在 U 盘上。
问题是当我 运行 从我的电脑运行程序时,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 中的图像复制到桌面上的新文件夹中,然后从该文件夹中随机选择一张照片作为新的桌面背景。
如有任何帮助,我们将不胜感激。谢谢!
主要问题是 Finder 不理解 posix 路径(即斜杠符号);它使用 HFS 路径 进行操作,它使用冒号代替斜杠,并在文件路径的开头替换为磁盘名称。
因此,指向与 posix 路径相同位置的等效 HFS 路径
/Users/{{user}}/Desktop/DesktopFolder/Image4.png
写成
Macintosh HD:{{user}}:Desktop:DesktopFolder:Image4.png
因此,要指向 USB 驱动器上名为 "USB"
的文件夹,您可以这样写:
USB:Photos:
这是对脚本的修改和 corrected/improved 编辑:
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
我已经取消了很多明确表示为损坏的字符串片段的路径引用,而是设置了一个变量来存储对您在桌面上创建的文件夹位置的引用。这样,您可以使用变量引用来定位该文件夹以移动和选择文件。
我最近开始了我的一个小项目,使用 Python 或 AppleScript 等语言在 Mac 上操作文件和其他东西。我正在制作多个不同的程序来执行这些操作。
最近开始写一个程序,将桌面背景更改为程序所在U盘上的一个文件。它旨在跨不同的计算机工作,所以我必须将它保存在 U 盘上。
问题是当我 运行 从我的电脑运行程序时,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 中的图像复制到桌面上的新文件夹中,然后从该文件夹中随机选择一张照片作为新的桌面背景。
如有任何帮助,我们将不胜感激。谢谢!
主要问题是 Finder 不理解 posix 路径(即斜杠符号);它使用 HFS 路径 进行操作,它使用冒号代替斜杠,并在文件路径的开头替换为磁盘名称。
因此,指向与 posix 路径相同位置的等效 HFS 路径
/Users/{{user}}/Desktop/DesktopFolder/Image4.png
写成
Macintosh HD:{{user}}:Desktop:DesktopFolder:Image4.png
因此,要指向 USB 驱动器上名为 "USB"
的文件夹,您可以这样写:
USB:Photos:
这是对脚本的修改和 corrected/improved 编辑:
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
我已经取消了很多明确表示为损坏的字符串片段的路径引用,而是设置了一个变量来存储对您在桌面上创建的文件夹位置的引用。这样,您可以使用变量引用来定位该文件夹以移动和选择文件。