我正在尝试在automator中创建一个服务,帮助我隐藏或取消隐藏文件/文件夹。
我是一个非常新的初学者,对自动机不了解,我只尝试将不同的服务放在一起,但我甚至不知道它们是如何工作的。
我尝试过以下操作,但无效:
获取选定的Finder项目
运行Shell脚本:
STATUS = chflags
for f in "$@"
if [$STATUS = unhidden]
then
chflags hidden
else
chflags unhidden
fi
killall Finder
答案 0 :(得分:1)
你并不是那么遥远:你的主要困难是如何测试文件当前是否隐藏。 (虽然你的bash语法是错误的,并且基于Finder的服务来切换可见性只有一半是有道理的 - 你如何选择一个看不见的文件?)也就是说,这个脚本将起作用[1],因为你'用bash重新运行它并将输入作为参数传递:
for f in "$@"
do
if ( ls -lO "$f" | grep -wq hidden )
then
chflags nohidden "$f"
else
chflags hidden "$f"
fi
done
之后杀死Finder是没有必要的;它会自动注意到“隐藏”的变化。如果您创建Automator“服务”工作流程,则不需要在开始时执行“获取选定的查找项目”操作;您的服务将作为输入传递所选项目。
[1]主要是。对于名称中包含“隐藏”的文件,它无法正常工作。通过使用stat
(1)来解决这个问题,可以留给读者练习。