Come verificare se gli oggetti invisibili sono visibili?

0

Come faccio a verificare in AppleScript, se sono visibili oggetti invisibili? Se visibile, fai: defaults write com.apple.finder AppleShowAllFiles 0 in invisibile, fai: defaults write com.apple.finder AppleShowAllFiles 1 .

Questo dovrebbe essere uno script, quindi posso modificare il visibile con un clic. È possibile con AppleScript?

    
posta user121028 07.04.2015 - 12:21
fonte

2 risposte

1

Un'alternativa allo script di grgarside, questo non ha bisogno di riavviare il Finder, basta aggiornare le finestre aperte.

Può essere salvato come app o in Automator, come servizio.
Lo ho come servizio, attivato su Cmd ⌘ H da System Prefs > Tastiera > Tasti di scelta rapida > Servizi - che mi hanno richiesto di cambiare il comando chiave "Nascondi Finder" in ... Scorciatoie > App Scorciatoie a qualcosa di diverso da predefinito.

Per aggiungere come servizio, avviare Automator, quindi il menu File > Nuovo.
Selezionare Servizio nella finestra di dialogo e trascinare Esegui Applescript nella nuova finestra di Automator.
Copia / incolla lo script all'interno di on run - sostituendo (* Il tuo script va qui *) & Salvare. Ha bisogno solo dei parametri predefiniti per tutto il resto.

InSystemPrefs>Tastiera>Tastidisceltarapida>Iserviziverrannoaggiunticomeultimariga.Impostaqualsiasicomandodeltastodiattivazionechetipiace.

Se usi Cmd ⌘ H come me, dovrai cambiare Hide Finder per qualcos'altro - Ho appena usato una scorciatoia inutile come non ho mai bisogno quel comando ...

setnewHiddenVisiblesStateto"YES"
try
    set oldHiddenVisiblesState to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if oldHiddenVisiblesState is in {"1", "YES"} then
        set newHiddenVisiblesState to "NO"
    end if
end try
do shell script "defaults write com.apple.finder AppleShowAllFiles " & newHiddenVisiblesState


tell application "Finder"
    set theWindows to every Finder 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

Lo script stesso legge lo stato corrente del flag invisibile (meno elegantemente della versione di grgarside ma altrettanto efficacemente); quindi commuta ogni finestra aperta su un altro tipo di vista - elenco, icona ecc. e poi di nuovo indietro.

Modifica: il solo aggiornamento delle finestre non funziona più in El Capitan, ora devi riavviare il Finder.
Nuova versione per El Capitan

set newHiddenVisiblesState to "YES"
try
    set oldHiddenVisiblesState to do shell script "defaults read com.apple.finder AppleShowAllFiles"
    if oldHiddenVisiblesState is in {"1", "YES"} then
        set newHiddenVisiblesState to "NO"
    end if
end try
do shell script "defaults write com.apple.finder AppleShowAllFiles " & newHiddenVisiblesState & "; killall Finder"
    
risposta data 07.04.2015 - 12:42
fonte
0

Imposta il valore di b su true o false a seconda del valore corrente di AppleShowAllFiles:

[[ $(defaults read com.apple.finder AppleShowAllFiles) = 1 ]] && b=false || b=true

Pertanto, puoi creare uno script come questo:

do shell script "[[ $(defaults read com.apple.finder AppleShowAllFiles) = 1 ]] && b=false || b=true
defaults write com.apple.finder AppleShowAllFiles -bool $b"
tell application "Finder"
    quit
    delay 0.2 -- without this delay there was a "connection is invalid" error
    reopen -- open a new default window
    activate -- make Finder frontmost
end tell

Tutto il credito a Lauri in questa risposta su Stack Overflow

    
risposta data 07.04.2015 - 12:26
fonte

Leggi altre domande sui tag