如何通过在驱动器上找到图像的文件名和路径,从applescript中删除图像(将其移入垃圾箱)。
此脚本将从shell启动,并可获取(有效)文件名,包括路径(大小或其他属性,如果需要)作为参数。
到目前为止,我可以设法按名称选择图像(通常是文件名)并对其进行注释。所以我可以搜索该评论并立即删除所有带有该评论的图像。但是对于随机图像名称,这是不可能的,因为您找到了名称不相关的图片。
答案 0 :(得分:2)
菲利普有正确的想法,但却使事情变得比他们需要的更难。 :)以下是我的诀窍:
on run (args)
set thePath to first item of args
tell application "iPhoto"
remove (every photo where image path is equal to thePath or original path is equal to thePath)
end tell
end run
这将获取第一个命令行参数,并将其用作要删除的文件路径。由于iPhoto中的照片可以同时包含每张照片的已修改和原始副本,因此该脚本会在查找要删除的照片时测试照片的原始路径及其当前图像路径。
请注意,“原始路径”属性仅存在于iPhoto 8.x中,因此如果您拥有较早版本的iPhoto,则需要将该部分取出并能够提供正确的照片路径(如果有一个,则在Modified文件夹中,否则为Originals文件夹中的路径。)
此外,“删除”命令的工作原理,而“删除”不是因为iPhoto糟透了 - “删除”真的应该有效!
答案 1 :(得分:1)
iPhoto存储POSIX路径而不是Finder路径(即“:” - 分隔)。因此,如果您有名称和路径,则可以使用image path
类的photo
属性进行比较,并在匹配时删除照片。 iPhoto有photos
的列表属性,可以轻松实现这一目标。在与iPhoto中存储的图像路径进行比较之前,您必须清除从shell获得的路径(主要删除“\
”转义字符。)
tell application "iPhoto"
set pathToFile to "/Users/username/Pictures/iPhoto Library/Originals/2007/Sep 10, 2007/genericImageName.jpg"
set lastPhoto to count photos
repeat with thisPhoto from 1 to lastPhoto
set thePhoto to photo thisPhoto
set pathToPhoto to image path of thePhoto
if pathToFile contains pathToPhoto then
try
delete thePhoto
exit repeat
on error the error_message number the error_number
display dialog "Error: " & the error_number & ". " & the error_message buttons {"Cancel"} default button 1
end try
end if
end repeat
end tell
当然,当我尝试这个时,delete
给了我一个错误-10000,这意味着处理程序失败了。 (我无能为力。)
答案 2 :(得分:0)
tell application "iPhoto"
set pathToFile to "/Users/username/Pictures/iPhoto Library/Originals/2007/Sep 10, 2007/genericImageName.jpg"
set lastPhoto to count photos
repeat with thisPhoto from 1 to lastPhoto
set thePhoto to photo thisPhoto
set pathToPhoto to image path of thePhoto
if pathToFile contains pathToPhoto then
try
remove thePhoto
exit repeat
on error the error_message number the error_number
display dialog "Error: " & the error_number & ". " & the error_message buttons {"Cancel"} default button 1
end try
end if
end repeat
end tell