我正在尝试使用AppleScript移动文件。这是我使用的代码:
on adding folder items to this_folder after receiving these_items
repeat with i from 1 to number of items in these_items
set this_item to item i of these_items
set the item_info to info for this_item
set the item_path to the quoted form of the POSIX path of this_item
...
... //irrelevant code here
...
tell application "Finder"
move POSIX file item_path to POSIX file "/Users/mainuser/Desktop/Books"
end tell
end repeat
end adding folder items to
如果我使用item_path
这样的常规路径替换/Users/mainuser/Desktop/Test/test.png
,那么效果会很好。可能是我的问题的原因是什么?
答案 0 :(得分:2)
these_items
是一个alias
说明符数组,不需要进一步强制
tell application "Finder"
move this_item to folder "Books" of desktop
end tell
属性desktop
始终指向当前用户的桌面。
顺便说一下:Finder不接受POSIX路径(斜杠分隔),只接受原生HFS路径(冒号分隔)。
PS:item_path
不起作用的原因是报价
它只在do shell script
答案 1 :(得分:1)
使用:
on adding folder items to this_folder after receiving these_items
tell application "Finder" to move these_items to folder "Books" of desktop
end adding folder items to
after receiving
参数是AppleScript别名值的列表,这是Finder的move
命令已经理解并知道如何使用的内容。虽然像move
这样的应用程序命令接受不引用应用程序对象的值是不寻常的,但它并不是完全未知的;特别是对于像Finder这样的前OS X应用程序,其脚本支持完全是手写的,允许开发人员使其以对用户有用的方式工作,而不仅仅是由OS X等愚蠢的标准化框架所规定的方式工作。 Cocoa Scripting。