Ich versuche, einen Automator-basierten Dienst zu erstellen, der meinen Computer nach dem ausgewählten Text durchsucht. (Wenn ich „mein Computer “ sage , meine ich ausdrücklich Macintosh HD, nicht diesen Mac , da dieser Mac externe Festplatten enthält.)
Ich möchte, dass die Suchergebnisse in einem neuen Finder-Fenster angezeigt werden.
Ist es möglich, dies programmgesteuert in Applescript oder einem Shell-Skript zu erreichen? Das scheint nicht möglich, wäre aber ideal.
Wenn dies nicht wirklich programmgesteuert erfolgen kann, wäre ich damit einverstanden, dies "manuell" zu erreichen. Hier ist ein Beispiel dafür, wie sich diese Route manifestieren könnte:
tell application "Finder"
activate
open (POSIX file "/")
end tell
tell application "System Events"
keystroke "f" using command down
keystroke input
end tell
Ich weiß jedoch nicht, wie ich das Suchverzeichnis ändern kann. (Ich versuche, Skript-Mausklicks zu verhindern.) Wenn ein Benutzer eine Suche im Finder initiiert (z. B. wenn der Benutzer ⌘ command+ drückt F), ist das Suchverzeichnis standardmäßig "Dieser Mac", unabhängig vom Verzeichnis des Finder-Fensters dass die Suchfunktion aufgerufen wurde.
Wenn es Ihnen nichts ausmacht, eine bestimmte Finder- Einstellung zu ändern, z. B. Beim Durchführen einer Suche: , dann funktioniert Folgendes.
Legen Sie zuerst unter Finder > Einstellungen... > Erweitert die Option Beim Durchführen einer Suche: auf: Den aktuellen Ordner durchsuchen fest
Erstellen Sie als Nächstes einen Automator- Dienst-Workflow mit seinen Standardeinstellungen (der Dienst empfängt ausgewählten Text in jeder Anwendung) und fügen Sie eine Aktion „AppleScript ausführen“ hinzu, wobei Sie den Standardcode durch den folgenden Code ersetzen :
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
Speichern Sie den Automator Service-Workflow , z. B. Search Selected Text in Finder
Wenn Sie einen programmgesteuerten Test und eine Einstellungsänderung für When Performing a Search: auf Search the Current Folder hinzufügen möchten , fügen Sie den folgenden Code direkt nach on run {input, parameters}
und vor dem tell application "Finder"
Block hinzu.
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
Eine Alternative besteht darin, die standardmäßige Finder- Einstellung für Beim Durchführen einer Suche auf „Diesen Mac durchsuchen “ zu belassen und Folgendes zu tun:
Folgen Sie den Anweisungen, um die Suche zu speichern. In diesem Fall zB:
Ersetzen Sie in der Aktion „AppleScript ausführen“ des Automator- Dienst-Workflows durch den folgenden Beispielcode , angepasst an Ihr System und wie/wo Sie die Suche gespeichert haben: open (POSIX file "/")
open POSIX file "/Users/me/Library/Saved Searches/Searching “Macintosh HD”.savedSearch"
Der beispielhafte AppleScript- Code wäre dann:
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
Diese letztere Methode lässt die Standardeinstellung im Finder allein und erreicht das Ziel, ohne Mausklicks oder Schaltflächen aus dem Automator Service-Workflow zu verwenden .
Hinweis: Der Beispiel -AppleScript- Code ist genau das und kann gegebenenfalls zusätzliche delay
Befehle erfordern, z. B. zwischen den keystroke
Befehlen nach/falls erforderlich.
Benutzer3439894