Bagaimana cara memeriksa apakah barang yang tidak terlihat terlihat?

0

Bagaimana cara saya memeriksa di AppleScript, jika objek yang tidak terlihat terlihat? Jika terlihat, lakukan: defaults write com.apple.finder AppleShowAllFiles 0 di tak terlihat, lakukan: defaults write com.apple.finder AppleShowAllFiles 1.

Itu harus satu skrip, jadi saya bisa mengubah yang terlihat dengan satu klik. Apakah itu mungkin dengan AppleScript?

pengguna121028
sumber

Jawaban:

1

Sebagai alternatif dari skrip grgarside, ini tidak mengharuskan Anda untuk me-restart Finder, cukup me-refresh jendela yang terbuka.

Dapat disimpan sebagai aplikasi atau di Automator, sebagai Layanan.
Saya memilikinya sebagai Layanan, dipicu pada Cmd ⌘ H dari Prefs Sistem> Keyboard> Pintasan> Layanan - yang mengharuskan saya untuk mengubah perintah kunci 'Sembunyikan Pencari' di ... Pintasan> Pintasan Aplikasi menjadi sesuatu selain dari bawaan.

Untuk menambahkan sebagai Layanan, luncurkan Automator kemudian File menu> New.
Pilih Layanan dalam dialog lalu seret Jalankan Applescript ke jendela Automator baru.
Salin / rekatkan skrip di dalam on run- ganti (* Skrip Anda ada di sini *) & Simpan. Ini hanya membutuhkan parameter default untuk yang lainnya.

masukkan deskripsi gambar di sini

Dalam System Prefs> Keyboard> Shortcuts> Services, itu akan ditambahkan sebagai baris terakhir. Tetapkan perintah kunci pemicu yang Anda suka.

masukkan deskripsi gambar di sini

Jika Anda menggunakan Cmd ⌘ H yang sama dengan saya, Anda harus mengubah Sembunyikan Finder ke sesuatu yang lain - Saya hanya menggunakan pintasan sampah karena saya tidak pernah membutuhkan perintah itu ...

masukkan deskripsi gambar di sini

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


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

Script itu sendiri membaca keadaan saat ini dari flag yang tidak terlihat (kurang elegan dari versi grgarside tetapi sama efektifnya;) kemudian beralih setiap jendela yang terbuka ke jenis tampilan lain - daftar, ikon dll lalu kembali lagi.

Sunting: Hanya menyegarkan windows tidak lagi berfungsi di El Capitan, Anda sekarang harus me-restart Finder.
Versi baru untuk 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"
Tetsujin
sumber
Terima kasih! Berhasil. Tapi bisakah Anda menjelaskan, apa yang dilakukan skrip, latar belakang dekat dari mode operasi? Dan bagaimana saya bisa menambahkan layanan dengan pintasan?
user121028
Saya mengubah jawabannya ...
Tetsujin
0

Ini menetapkan nilai b menjadi benar atau salah tergantung pada nilai AppleShowAllFiles saat ini:

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

Karena itu, Anda dapat membuat skrip seperti ini:

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

Semua kredit untuk Lauri dalam jawaban ini di Stack Overflow

GRG
sumber
Dan apa yang dilakukan skrip di sini? Untuk apa "-bool $ b" dan "[[$ (default baca com.apple.finder AppleShowAllFiles) = 1]]"
user121028