Problem, na zewnątrz AppleScript:
Aby być świadkiem problemu 1 , wykonaj następujące czynności:
Kliknij dwukrotnie folder istniejący na pulpicie. Spowoduje to otwarcie tego folderu w Finder.app.
Wróć do pulpitu i ponownie kliknij dwukrotnie ten sam folder.
Zamiast druga tworzone okno, wcześniej utworzone okno zostanie przeniesione na pierwszy plan.
Obejście, na zewnątrz AppleScript:
Więc co robisz, jeśli chcesz dwa Okna wyszukiwarki tego samego folderu?
Istnieje kluge:
Utwórz nowe okno Findera, otwierając dowolny inny folder. W tym nowym oknie, po przejściu do żądanego folderu, pomyślnie zmienisz to okno na żądany folder i będziesz mieć dwa okna tego folderu.
Aby przejść do żądanego folderu w nowym oknie Findera, każdy metoda zadziała:
Kliknij folder, jeśli jest zaznaczony zakładką w Pasek boczny (jeśli włączone, znajduje się po lewej stronie okna).
Kliknij folder, jeśli zdarzy się w folderze pasek ścieżki (jeśli włączone, znajduje się w dolnej części okna).
Użyj wbudowanego okna pasek wyszukiwania .
Lub po prostu przejdź do folderu ręcznie.
Problem w AppleScript:
Następujący kod AppleScript otworzy folder w nowym oknie Findera:
set targetFolder to POSIX file "/Users/Me/Desktop/MyFolder"
tell application "Finder"
open targetFolder
activate
end tell
W taki sam sposób, w jaki Finder zachowuje się nieprogramowo (jak zdefiniowano powyżej), jeśli uruchomisz ten kod po raz drugi (bez zamykania wcześniej utworzonego okna Findera), to wcześniej utworzone okno zostanie przeniesione na pierwszy plan.
Pożądane rozwiązanie AppleScript:
Oto pożądane zachowanie:
- Jeśli
targetFolder
już istnieje w każdy otwórz okno Findera (w tym każde zminimalizowane okno Findera), chciałbym, aby AppleScript utworzył nowe okno za to samotargetFolder
(tj. duplikat okna).
W idealnej sytuacji chciałbym utworzyć duplikat okna, bez uciekanie się do „sztuczki”, którą wytyczyłem powyżej (tj. otwarcie dowolnego inny najpierw folder, przed otwarciem żądanego folderu). Jednak zrozumiem, jeśli nie jest to możliwe (tj. Jeśli metoda programowa musi powielać metodę ręczną).
1 Rozumiem, że to zachowanie w żaden sposób nie jest błędem ani „prawdziwym” problemem. Apple wyraźnie zaprogramował tę akcję celowo; prawdopodobnie ustalili, że większość ludzi nie potrzebuje lub nie chce używać zbędnych okien Findera.
OS X El Capitan, wersja 10.11.6.
źródło
if statement
nie jest nawet wymagane, aby złapać przypadek folderu już otwartego, ponieważ twójset target of
metoda działa poprawnie, niezależnie od tego. Dziękuję Ci!To rozwiązanie daje ci miejsce, do którego chcesz się udać, ale korzysta z obejścia. Próbowałem ustawić właściwość „target” podczas tworzenia okna, ale nie miało to żadnego skutku. Zostawiłem tę część w skrypcie, ale skomentowałem ją w celach informacyjnych.
Wypróbowałem to także wywołując w wierszu poleceń skrypt do powłoki, ale miał taki sam efekt, jak wymieniony powyżej w „Problemie”.
źródło
Użyj
reveal
polecenie, aby uniknąć zachowaniaopen
dowództwo:Uwaga: zawsze otwiera okno w widoku kolumny
źródło