1 votos

Applescript - Cerrar todas las ventanas excepto la más frontal

He creado una acción rápida de automator que ejecuta el siguiente apple script

tell application "System Events"
    set frontApp to name of first application process whose frontmost is true --retrieves name of open application
end tell

tell application frontApp
    repeat while window 2 exists
        close window 2
    end repeat
end tell

Funciona; sin embargo, tarda en ejecutarse si tengo muchos Windows abiertos.

¿Hay alguna manera de cerrar todos los Windows simultáneamente ¿excepto el de más adelante?

He tecleado tell application "Finder" to close every window from 2 to 5 Después de compilarlo, cambió automáticamente a tell application "Finder" to close ( windows 2 thru 5 ) . Sin embargo, recibo el mensaje de error error "Finder got an error: Can’t get windows 2 thru 3." number -1728 from windows 2 thru 3 . Entonces, acepta la estructura del comando, pero todavía me falta algo.

Editar : He probado el siguiente script

tell application "Finder"
    close (every window where index is greater than 1)
end tell

Sin embargo, me aparece el error "Finder got an error: Handler can’t handle objects of this class." number -10010

¿Por qué no funciona?

5voto

qarma Puntos 71

Si lo ejecuta como un Automatizador acción rápida entonces puede cerrar todas las ventanas excepto la ventana más frontal de la aplicación más frontal utilizando el código siguiente dentro de un Ejecutar AppleScript acción (puede eliminar cualquier código de muestra que aparezca, incluyendo on run {input, parameters}...end run :

tell application id "com.apple.SystemEvents" to tell the first process ¬
    whose frontmost = true to tell a reference to windows 2 thru -1 to ¬
    if exists then tell the value of attribute "AXCloseButton" to click

1voto

Chris Norman Puntos 46

Por favor, prueba esto. Puede que funcione más rápido. (He editado mi respuesta original con el nuevo código).

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

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