从 Automator 或命令行操作 Mac OS X 文件图标

joa*_*him 7 terminal.app macos

有没有办法从 Automator 或终端操作 Mac OS X 文件上的图标?

就我而言,我想从大量文件中删除自定义图标(即,与对图标执行“获取信息”和“编辑”->“剪切”相同)。

小智 9

我早在 2007 年就问过这个问题。 3 个 OS X 工具的组合可以做到这一点。您需要安装开发人员工具,然后查看:/Developer/Tools/Rez、DeRez 和 SetFile。

您可以使用 'sips' 为图像文件提供自己的自定义图标('sips' 作用于原始文件,因此处理副本可能更安全):

/bin/cp imagefile.jpg donorfile.jpg
/usr/bin/sips -i donorfile.jpg
Run Code Online (Sandbox Code Playgroud)

如果您只想为图像文件提供一个缩略图自定义图标,您可以就此打住。

否则,如果您安装了“Developer”/“X Code”工具,则可以使用“DeRez”和“Rez”来操作资源以将新创建​​的“icns”资源复制到文件中:

/Developer/Tools/DeRez -only icns donorfile.jpg > tempicns.rsrc
Run Code Online (Sandbox Code Playgroud)

然后将临时文件复制到接收文件的icns资源中,并设置自定义图标文件属性:

/Developer/Tools/Rez -append tempicns.rsrc -o recipientfile.xyz
/Developer/Tools/SetFile -a C recipientfile.xyz
Run Code Online (Sandbox Code Playgroud)

最后,重新启动“Finder”以查看更改:

/usr/bin/osascript -e 'tell application "Finder" to quit' -e 'delay 2' -e 'tell application "Finder" to activate'
Run Code Online (Sandbox Code Playgroud)

原问答帖:http : //forums.macosxhints.com/showpost.php?p=372418&postcount=7


cob*_*bal 3

我不确定 Automator,但Cocoa可以使用

[[NSWorkspace sharedWorkspace] setIcon:nil
                               forFile:@"/path/to/file"
                               options:0];
Run Code Online (Sandbox Code Playgroud)

或者作为一个简单的 Python 脚本:

#!/usr/bin/python

from AppKit import NSWorkspace
import sys

for path in sys.argv[1:]:
    NSWorkspace.sharedWorkspace().setIcon_forFile_options_(None, path, 0)
Run Code Online (Sandbox Code Playgroud)