我有一个AppleScript用于关闭所有应用程序:
tell application "System Events" to set quitapps to name of every application process whose visible is true and name is not "Finder"
repeat with closeall in quitapps
quit application closeall
end repeat
它运作得很好。它退出所有打开的应用程序。
我的问题是我想修改此脚本以仅关闭隐藏的应用程序。出于某种原因,Apple隐藏了所有没有活动窗口的Apple制造的应用程序,最终它开始耗尽我的RAM。
我想到的是,如果我只是将行whose visible is true
更改为whose visible is false
,我会得到该结果。
不完全:
我甚至不知道这个窗口应该是什么,所以我只是点击取消。
好吧,它又弹出来了。事实证明,在剧本爆炸之前,我必须完全取消四次取消。
有没有办法退出所有隐藏的应用程序,同时打开可见的应用程序?
(如果您能解释上面的弹出窗口,可以获得奖励积分。)
如果它有所作为,我正在运行最新版本的OSX。
答案 0 :(得分:1)
将visible
设置为false会影响所有进程 - 甚至是没有GUI的进程/应用程序。如果进程不是应用程序(.app),则会显示应用程序选择器。
添加对background only
的检查,该检查仅影响具有GUI的应用程序。
tell application "System Events" to set quitapps to name of every application process whose visible is true and background only is false and name is not "Finder" ...
答案 1 :(得分:0)
如果我理解正确,你说的是当你按下红色关闭按钮时,它只关闭应用程序的窗口,而不关闭应用程序本身,所以它只是在那里仍然打开。
在这种情况下,您可以使用我制作的这个脚本,它似乎完美无缺:
-- Get open apps
tell application "System Events" to set openApps to name of every application process whose background only is false and name is not "Finder"
-- Do this for every open app
repeat with openApp in openApps
tell application openApp
-- Tell application to quit if it doesn't have any open windows
if (count of windows) is less than or equal to 0 then quit
end tell
end repeat
答案 2 :(得分:0)
OSX不会“隐藏”应用程序。他们只是没有活动,或者没有打开任何文件。隐藏的应用程序是一个非常具体的过程,通常使用Command-H完成。应用程序不会以这种方式隐藏自己。
使用文档计数来确定是否关闭应用程序,而不是尝试关闭没有窗口的应用程序。
tell application "SomeApp" if count of documents = 0 then quit
答案 3 :(得分:0)
这是一个奇怪的问题。由于我不知道的原因,您必须将东西分开才能使其工作。这会退出所有不在 igApp 列表中的非后台应用程序。我添加了“不保存”来处理像 TextEdit 这样的文档应用程序,但显然,它是可选的。虽然这可能会有所简化,但它似乎可以可靠地工作。
tell application "System Events"
set igApp to {"Finder", "Script Editor", "firefox"}
set qList to {}
set fApp to name of every application process whose background only is false
repeat with xx in fApp
if xx is not in igApp then
copy contents of xx to end of qList
end if
end repeat
end tell
repeat with yy in qList
quit application yy without saving
end repeat
-- qlist
请注意,如果您想退出部分(或全部)后台应用程序,您可能应该重新考虑。那些在后台做事,除非出现问题,否则他们通常不会滥用计算机的资源。有些可能需要强制退出才能停止。如果您的计算机在空闲时内存不足,则可能是某个应用损坏/有问题,或者您需要更多内存。
话虽如此,如果您将“后台进程”切换为 true,它应该适用于任何后台应用程序。正如我所说,我不建议这样做,但您可以注释掉“退出应用程序”行,然后取消注释“qlist”(最后一行),然后您将获得这些应用程序的列表。您可以在 Activity Monitor 的 Memory 面板中查看这些应用程序,以了解这些应用程序的需求有多大。在我的 Mac 上,如果您排除“Dock”等明显的应用程序,它们将使用 < 200 MB 的 RAM。