Automator命令刷新所有Finder /所有Finder Windows

时间:2014-02-14 20:03:50

标签: macos applescript finder automator hidden-files

我正在使用带有applescript的automator(没有文本,在finder中)来打开/关闭隐藏文件夹。我试图在没有重新启动finder的情况下这样做,所以我只想刷新每个finder窗口。 我想将刷新应用于整个查找器/每个窗口,而不仅仅是最顶层的窗口。

使用当前的脚本,我必须手动转到另一个文件夹并返回显示隐藏文件。我想自动刷新。现在我要求许可>如果是,则切换隐藏文件> (这就是我要刷新所有发现者的地方。)

代码:

on run {input, parameters}

    set cur_state to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if cur_state = "TRUE" then
        do shell script "defaults write com.apple.finder AppleShowAllFiles FALSE"
    else
        do shell script "defaults write com.apple.finder AppleShowAllFiles TRUE"
    end if

    return input
end run 

1 个答案:

答案 0 :(得分:4)

嗯,

在过去(Mac OS 9)早期(Mac OS 10),我认为您可以使用更新命令。但现在它的工作方式不同了。

我在ML上这样做,我刚刚意识到你不需要重新启动finder来进行更改。你只需要重新绘制窗口。就像在列表视图中有一个查找器窗口并进行更改以显示隐藏文件一样。

您可以切换子文件夹显示三角形,您将看到更改。

在没有重新启动整个取景器和所有窗口的情况下,我能想到的唯一方法就是将视图翻转到另一个窗口并再次返回。

tell application "Finder"
    set theWindows to every window
    repeat with i from 1 to number of items in theWindows
        set this_item to item i of theWindows
        set theView to current view of this_item
        if theView is list view then
            set current view of this_item to icon view
        else
            set current view of this_item to list view

        end if
        set current view of this_item to theView
    end repeat


end tell

在我的测试中,这对我来说效果很好,我将用它来替换使用killall finder

的当前切换脚本