2 votos

Apple script para cerrar todas las ventanas en el Finder - pero mantener la ventana activa y sus pestañas abiertas?

Me gustaría cerrar todas las ventanas del Finder pero mantener la activa abierta - incluyendo mantener todas sus pestañas abiertas también. Los AppleScript son de Marte y parece que yo soy de Venus, pero He encontrado algunos scripts ya hechos en la web. Consigo que todos ellos cierren todas las ventanas y mantengan la ventana activa abierta, pero también cierran las pestañas de la ventana activa.

Estoy en MacOS Catalina 10.15.7
Aquí están algunos de los scripts que he probado. ¡Se agradece cualquier consejo!

tell application "Finder"
    repeat while window 2 exists
    close window 2
    end repeat
    end tell

tell application "Finder"   
    set theWindows to {}
    set theCount to (count of windows)
    if theCount is greater than 1 then
        repeat with i from 2 to theCount
            set theWindow to window i
            copy theWindow to end of theWindows
        end repeat
        close theWindows
    end if
end tell

0voto

user3439894 Puntos 5883

En lo básico vainilla AppleScript no hay property , element o class para un ficha en un ventana en Buscador y, por lo tanto, es difícil saber si un ventana presenta con múltiples pestañas en el UI nivel, (múltiples windows presentado como pestañas dentro de un único UI nivel ventana ).

Lo siguiente ejemplo AppleScript código es un poco confuso, ya que puede minimizar y desminuir el frente visible UI nivel ventana Sin embargo, sí que cierra todas las demás windows no dentro del ventana que es más frontal y visible en el UI nivel en el momento en que el código se ejecuta.

Ejemplo AppleScript código :

tell application id "com.apple.finder"
    if (count windows) is less than or equal to 1 then return
    set collapsedWindows to windows whose collapsed is true
    close collapsedWindows
    if (count windows) is greater than 1 then
        set collapsed of window 1 to true
        set uncollapsedWindows to windows whose collapsed is false
        close uncollapsedWindows
        set collapsed of window 1 to false
    end if
end tell

Notas:

Lo que el ejemplo AppleScript código lo hace:

  • Comprueba el número de windows para tratamiento de errores propósitos.
  • Cierra todos los windows que actualmente están minimizados ( collapsed:true ).
  • Entonces, si más de una window , minimiza el frente ventana .
  • Cierra todos los windows que actualmente no están minimizados ( collapsed:false ).
  • Desmineraliza el que queda ventana ( windows donde collapsed:true ).

Tenga en cuenta que si sólo hay un ventana en Buscador con múltiples pestañas y se minimiza cuando el código se ejecuta se cerrará ese ventana Sin embargo, considero que esta condición está fuera del alcance de la intención de la pregunta, ya que la palabra clave utilizada en el PO era "activo" y un ventana no se considera el "activo" ventana en un contexto normal. Esto es también una desafortunada consecuencia de que no haya un tab como property , element o class para un ficha en un ventana en Buscador .

Tenga en cuenta que los términos utilizados en los párrafos anteriores mostrados como, por ejemplo window se refieren a ellos programáticamente y se muestran como, por ejemplo ventana se refieren a ellos en el UI nivel.

El ejemplo AppleScript código que se muestra arriba, se probó en Script Editor bajo cada versión de MacOS de MacOS Sierra a MacOS Monterey con Lengua y región ajustes en Preferencias del sistema ajustado a Inglés (EE.UU.) - Primaria y me ha funcionado sin problemas 1 .

  • 1 Asume los ajustes necesarios y apropiados en <strong>Preferencias del sistema </strong>> <strong>Seguridad y privacidad </strong>> <strong>Privacidad </strong>se han fijado/abordado según las necesidades.

Nota: El <em>ejemplo </em><strong>AppleScript </strong><em>código </em>es sólo eso y sin ningún tipo de inclusión <em>tratamiento de errores </em>no contiene ningún otro <em>tratamiento de errores </em>según corresponda. Corresponde al usuario añadir cualquier <em>tratamiento de errores </em>como sea apropiado, necesario o deseado. Eche un vistazo a la <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129232" rel="nofollow noreferrer"><strong>intente </strong></a><em>declaración </em>y <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_control_statements.html#//apple_ref/doc/uid/TP40000983-CH6g-129657" rel="nofollow noreferrer"><strong>error </strong></a><em>declaración </em>en el <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/introduction/ASLR_intro.html" rel="nofollow noreferrer"><strong>Guía del lenguaje AppleScript </strong></a>. Véase también, <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_error_xmpls.html#//apple_ref/doc/uid/TP40000983-CH221-SW1" rel="nofollow noreferrer"><strong>Trabajar con errores </strong></a>. Además, el uso del <a href="https://developer.apple.com/library/archive/documentation/AppleScript/Conceptual/AppleScriptLangGuide/reference/ASLR_cmds.html#//apple_ref/doc/uid/TP40000983-CH216-SW10" rel="nofollow noreferrer"><strong>retraso </strong></a><em>comando </em>puede ser necesario entre eventos cuando sea apropiado, por ejemplo <code>delay 0.5</code> con el <em>valor </em>de la <em>retraso </em>ajustado apropiadamente.

-1voto

Mockman Puntos 16

A continuación se produce una lista de todos los Windows. A continuación, crea una segunda lista que contiene todos los elementos de la primera lista excepto la ventana más cercana. Finalmente, cierra todos los elementos de la segunda lista. Funciona en Sierra.

tell application "Finder"

    set allWin to windows
    set winRest to rest of allWin
    close winRest
end tell

Fallará si tienes 0 o 1 ventana abierta, pero puedes añadir fácilmente algún manejo de errores para eso.

Por cierto, no creo que se puedan manipular las pestañas de las ventanas del Finder con applescript.

-2voto

Gintaras Puntos 62

No encuentro la forma de distinguir una pestaña de una ventana. ¿Hay alguna? Tal vez no. Como mencionó bmike, una pestaña es una ventana. Si las ventanas del Finder tienen posiciones de ventana idénticas y tamaños de ventana idénticos, hay una alta probabilidad de que la ventana sea una pestaña. Sin embargo, eso no siempre es cierto.

El siguiente script funcionará siempre que dos Windows no tengan posiciones idénticas:

tell application "Finder"
    set frontPosition to (position of (front window))
    set frontBounds to (bounds of (front window))

    repeat with i from (count of windows) to 1 by -1
        if (frontPosition ≠ (position of (window i)) or frontBounds ≠ (bounds of (window i))) then
            close window i
        end if
    end repeat
end tell

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X