AppleScript: come creare una nuova finestra del Finder per una cartella che è già aperta?

0

Il problema, esterno di AppleScript:

Per assistere al problema 1 , fai quanto segue:

  • Fare doppio clic su una cartella esistente sul desktop. Così facendo aprirai questa cartella in Finder.app.

  • Ritorna al desktop e fai doppio clic nuovamente sulla stessa cartella.

  • Invece di creare una finestra secondo , la finestra precedentemente creata verrà portata in primo piano.

Soluzione alternativa, esterna di AppleScript:

Quindi, cosa fai se vuoi due finestre del Finder della stessa cartella?

Esiste un kluge:

Crea una nuova finestra del Finder aprendo qualsiasi altra cartella. Da questa nuova finestra, ora se passi alla cartella desiderata, cambierai con successo questa finestra nella cartella desiderata e avrai due finestre di questa cartella.

Per navigare nella cartella desiderata all'interno di una nuova finestra del Finder, il metodo qualsiasi funzionerà:

  • Fai clic sulla cartella, se è segnalibro nella barra laterale (se abilitata, situata alla sinistra della finestra).

  • Fai clic sulla cartella, se esiste nella barra dei percorsi (se abilitata, situata nella parte inferiore della finestra).

  • Utilizza la barra di ricerca integrata della finestra

  • Oppure, accedi semplicemente alla cartella manualmente.

Il problema, in AppleScript:

Il seguente codice AppleScript aprirà una cartella in una nuova finestra del Finder:

set targetFolder to POSIX file "/Users/Me/Desktop/MyFolder"

tell application "Finder"
    open targetFolder
    activate
end tell

Allo stesso modo in cui Finder si comporta in modo non programmatico (come definito sopra), se si esegue questo codice per la seconda volta (senza chiudere la finestra del Finder precedentemente creata), la finestra creata in precedenza verrà portata in primo piano .

La soluzione AppleScript desiderata:

Ecco il comportamento desiderato:

  • Se targetFolder esiste già in qualsiasi finestra del Finder aperta (inclusa qualsiasi finestra del Finder ridotta a icona), vorrei che l'AppleScript crei una nuova finestra per la stessa targetFolder (cioè una finestra duplicata).

Idealmente, vorrei che la finestra duplicata venisse creata, senza dovendo ricorrere al "trucco" che ho delineato sopra (cioè, aprendo una cartella altra arbitraria prima, prima di aprire la cartella desiderata). Tuttavia, capirò se ciò non è possibile (ad esempio, se il metodo programmatico deve replicare il metodo manuale).

1. Capisco che questo comportamento non è in alcun modo un bug o un problema "reale". Apple ha chiaramente programmato questa azione deliberatamente; probabilmente hanno determinato che la maggior parte delle persone non ha bisogno o desidera finestre di Finder ridondanti.

OS X El Capitan, versione 10.11.6.

posta rubik's sphere 29.08.2017 - 23:07
fonte

3 risposte

2

Penso che questo codice faccia quello che vuoi.

Codice:

set targetFolder to POSIX file "/Users/Me/Desktop/MyFolder"

tell application "Finder"
    set finderFolder to item targetFolder
    set lstTargets to target of every Finder window
    if {finderFolder} is in lstTargets then
        set target of (make new Finder window) to targetFolder
    end if
end tell
    
risposta data 30.08.2017 - 03:23
fonte
0

Questa soluzione ti porta dove vuoi, ma usa la soluzione alternativa. Ho provato a impostare la proprietà "target" mentre creavo la finestra, ma non ha avuto alcun effetto. Ho lasciato quella parte nello script ma ho commentato per il tuo riferimento.

set targetFolder to ((path to desktop) as text) & "testFolder:"

tell application "Finder"
    set aWin to make new Finder window --with properties {target:targetFolder}
    set aWin's target to targetFolder
end tell

L'ho provato anche richiamando la riga di comando con lo script di shell, ma aveva lo stesso effetto elencato in "Il problema" sopra.

    
risposta data 29.08.2017 - 23:52
fonte
0

Utilizza il comando reveal per evitare il comportamento del comando open :

set targetFolder to POSIX file "/Users/Me/Desktop/MyFolder"
tell application "Finder"
    reveal targetFolder
    activate
end tell

Avvertenza: apre sempre la finestra in vista colonna

    
risposta data 30.08.2017 - 07:04
fonte

Leggi altre domande sui tag