AppleScript: Dizede bulunan dosyaları nasıl arayabilir ve Finder'da sonuçları nasıl gösterebilirim?


2

Bilgisayarımda seçilen metni arayan bir Automator tabanlı Hizmet oluşturmaya çalışıyorum. (Dediğimde "bilgisayarım, ben özellikle demek" Macintosh HD, değil Bu Mac , çünkü bu Mac harici sabit diskler içerir.)

Arama sonuçlarının yeni bir Finder penceresinde görünmesini istiyorum.

Programlı olarak Applescript veya bir kabuk betiğinde başarılabilir mi? Bu mümkün görünmüyor, ancak ideal olurdu.


Bu gerçekten programlı bir şekilde yapılamazsa, bu "el ile" gerçekleştirilmesinde sorun olmaz. İşte bu yolun nasıl tezahür edebileceğinin bir örneği:

tell application "Finder"
    activate
    open (POSIX file "/")
end tell

tell application "System Events"
    keystroke "f" using command down
    keystroke input
end tell

Ancak, arama dizinini nasıl değiştireceğimi bilmiyorum. (Komut dosyası fare tıklamalarını engellemeye çalışıyorum.) Varsayılan olarak, bir kullanıcı Finder'da bir arama başlattığında (örneğin, kullanıcı ⌘ command+ tuşuna bastığında F), arama dizini, Finder penceresinin dizininden bağımsız olarak "This Mac" olur . arama işlevinin çağrıldığı


Cevabımı güncelledik, bölümüne bakın: Bir alternatif, varsayılan bırakmaktır Bulucu için tercih : bir arama gerçekleştirirken için bu Mac aranıyor : ve aşağıdakileri yapın
user3439894

Yanıtlar:


2

Belirli bir Finder tercihini değiştirmeyi sakıncası yoksa , örneğin bir arama yaparken: aşağıdakiler işe yarayacaktır.

İlk önce, Finder > Tercihler ... > Gelişmiş'de , bir arama gerçekleştirirken ayarlayın : ila: Geçerli Klasörü Ara

Daha sonra, bir oluşturmak Otomatikçisi Servis iş akışını varsayılan ayarlarına (Servis herhangi bir uygulamada seçilen metni alır) ile ve bir ekleme Çalıştır AppleScript eylem varsayılan yerine kod ile kod aşağıda:

on run {input, parameters}
    tell application "Finder"
        activate
        open (POSIX file "/")
    end tell
    delay 0.5 -- # Adjust as necessary or comment out/remove if not needed.
    tell application "System Events"
        keystroke "f" using command down
        keystroke input as text
        keystroke return
    end tell
end run

Automator Service iş akışını kaydedin , örneğin Finder'da Seçilen Metinleri Ara


Bir arama yaparken aşağıdakiler için programlı bir test ve tercih değişikliği eklemek istiyorsanız : Geçerli Klasörü Ara olarak ayarlanmışsa , aşağıdaki kodu doğrudan bloktan sonra on run {input, parameters}ve tell application "Finder"bloktan önce ekleyin .

if (do shell script "defaults read com.apple.finder FXDefaultSearchScope") is not "SCcf" then
    do shell script "defaults write com.apple.finder FXDefaultSearchScope SCcf; killall Finder"
    delay 1 -- # Adjust as necessary or comment out/remove if not needed.
end if

Bir alternatif, varsayılan bırakmaktır Bulucu için tercih : bir arama gerçekleştirirken için bu Mac aranıyor ve aşağıdakileri yapın:

  • Macintosh HD'ye yeni bir Finder penceresi açın .
  • Basın: ⌘F
  • Açık ara çubuğuna tıklayın “Macintosh HD” butonuna.
  • Açık ara çubuğu, tıklayın Kaydet düğmesini.

Aramayı kaydetmek için izleyin. Bu durumda, örneğin:

  • Farklı Kaydet: “Macintosh HD” aranıyor
  • Nerede: Kaydedilen Aramalar
  • [] Kenar Çubuğuna Ekle (işaretlenmemiş)

In Run AppleScript eylem ait Otomatikçisi Hizmet iş akışı , yerini open (POSIX file "/")Aşağıdaki örnek ile kod sistem ve nasıl / sen Ara kurtardı nerede düzeltilmiş,:

open POSIX file "/Users/me/Library/Saved Searches/Searching “Macintosh HD”.savedSearch"

Örnek AppleScript kod sonra şöyle olacaktır:

on run {input, parameters}
    tell application "Finder"
        activate
        open POSIX file "/Users/me/Library/Saved Searches/Searching “Macintosh HD”.savedSearch"
    end tell
    delay 0.5 -- # Adjust as necessary or comment out/remove if not needed.
    tell application "System Events"
        keystroke "f" using command down
        keystroke input as text
        keystroke return
    end tell
end run

Bu son yöntem, yalnızca Finder'da varsayılan ayardan çıkar ve hedefi, fare tıklamaları kullanmadan veya Automator Hizmeti iş akışından düğmeleri tıklatmadan gerçekleştirir .


Not: Örnek AppleScript kodu tam olarak budur ve gerektiğinde / gerektiğinde komutlar arasında, gerektiğinde / gerektiğinde ek delay komutlar gerektirebilir .keystroke

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.