0

我正在尝试在 automator 中创建一项服务,以帮助我隐藏或取消隐藏文件/文件夹。

我是一个非常新的初学者,对自动机一无所知,我只尝试将不同的服务放在一起,但我什至不知道它们是如何工作的。

我尝试了以下方法,但它不起作用:

获取选定的 Finder 项目

运行外壳脚本:

STATUS = chflags

for f in "$@"

  if [$STATUS = unhidden]

  then

    chflags hidden

  else

    chflags unhidden

  fi

    killall Finder
4

1 回答 1

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),留给读者作为练习。

于 2013-04-02T19:46:32.810 回答