AppleScript: Bagaimana cara membuat jendela Finder baru untuk folder yang sudah terbuka?

2

Masalahnya, di luar AppleScript:

Untuk menyaksikan masalah 1 , lakukan hal berikut:

  • Klik dua kali pada folder yang ada di Desktop. Melakukannya akan membuka folder ini di Finder.app.

  • Kembali ke Desktop dan klik dua kali pada folder yang sama lagi.

  • Alih-alih jendela kedua sedang dibuat, jendela yang sebelumnya dibuat akan dibawa ke latar depan.


Solusi, di luar AppleScript:

Jadi, apa yang Anda lakukan jika Anda ingin dua jendela Finder dari folder yang sama?

Ada kluge:

Buat jendela Finder baru dengan membuka folder lain. Dari dalam jendela baru ini, sekarang jika Anda menavigasi ke folder yang diinginkan, maka Anda akan berhasil mengubah jendela ini ke folder yang diinginkan, dan memiliki dua jendela folder ini.

Untuk menavigasi ke folder yang diinginkan dalam jendela Finder baru, metode apa pun akan berfungsi:

  • Klik pada folder, jika bookmark di sidebar (jika diaktifkan, terletak di sebelah kiri jendela).

  • Klik pada folder, jika kebetulan ada di bilah jalur (jika diaktifkan, terletak di bagian bawah jendela).

  • Gunakan bilah pencarian bawaan jendela .

  • Atau, cukup arahkan ke folder secara manual.


Masalahnya, di AppleScript:

Kode AppleScript berikut akan membuka folder di jendela Finder baru:

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

tell application "Finder"
    open targetFolder
    activate
end tell

Dengan cara yang sama persis dengan perilaku Finder yang tidak terprogram (seperti didefinisikan di atas), jika Anda menjalankan kode ini untuk kedua kalinya (tanpa menutup jendela Finder yang dibuat sebelumnya), maka jendela yang dibuat sebelumnya akan dibawa ke latar depan.


Solusi AppleScript yang diinginkan:

Inilah perilaku yang diinginkan:

  • Jika targetFoldersudah ada di setiap jendela yang terbuka Finder (termasuk jendela Finder diminimalkan), saya ingin AppleScript untuk membuat jendela baru untuk hal yang sama targetFolder(yaitu, duplikat jendela).

Idealnya, saya ingin jendela duplikat dibuat, tanpa harus menggunakan "trik" yang saya gambarkan di atas (yaitu, membuka folder lain yang arbitrer terlebih dahulu, sebelum membuka folder yang diinginkan). Namun, saya akan mengerti jika ini tidak mungkin (yaitu, jika metode program harus meniru metode manual).


1. Saya mengerti bahwa perilaku ini sama sekali bukan bug atau masalah "nyata". Apple jelas memprogram tindakan ini dengan sengaja; mereka mungkin memutuskan bahwa kebanyakan orang tidak perlu atau menginginkan jendela Finder yang berlebihan.


OS X El Capitan, versi 10.11.6.


bola rubik
sumber

Jawaban:

3

Saya pikir kode ini melakukan apa yang Anda inginkan.

Kode:

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
unlocked2412
sumber
Solusi ini tidak persis apa yang saya inginkan. Ini adalah solusi ideal saya; skrip membuka folder tanpa terlebih dahulu harus membuka folder lain. Ini juga mempertahankan metode Finder "Tampilan sebagai" pilihan saya (yang kebetulan merupakan tampilan Daftar ). Akhirnya, saya menyadari bahwa if statementbahkan tidak diperlukan untuk menangkap untuk kasus folder sudah terbuka, karena set target ofmetode Anda berfungsi dengan baik, terlepas. Terima kasih!
Bola rubik
0

Solusi ini membawa Anda ke tempat yang Anda inginkan, tetapi tidak menggunakan solusi. Saya mencoba mengatur properti "target" ketika saya membuat jendela, tetapi itu tidak berpengaruh. Saya meninggalkan bagian itu dalam naskah tetapi berkomentar untuk referensi Anda.

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

Saya juga mencobanya dengan memanggil baris perintah dengan do script shell, tetapi memiliki efek yang sama seperti yang Anda daftarkan di "Masalah" di atas.

Hurston
sumber
0

Gunakan revealperintah untuk menghindari perilaku openperintah:

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

Peringatan: selalu membuka jendela dalam tampilan kolom

jackjr300
sumber