Grupowanie zaznaczonych plików do nowego folderu w Snow Leopardzie
Jak pewnie wiecie jedną z nowych funkcji Mac OS X Lion jest możliwość zgrupowania zaznaczonych plików do nowego katalogu (okraszona całkiem przyjemną animacją “wsysania”) dostępna albo z menu podręcznego po wciśnięciu prawego przycisku myszy, albo z paska menu Findera wchodząc do menu Plik, czy też wreszcie za pomocą skrótu klawiszowego `⌃⌘N`. Opcja ta bardzo przypadła mi do gustu jeszcze zanim Lion został wydany (zobaczyłem jej użycie na jednym z filmów na YouTubie przedstawiających nowości). A jako, że w pracy mam system Snow Leopard i nie zanosi się na jego szybką zmianę, chciałem zaimplementować tę opcję i w tej wersji OS’a. I z pomocą AppleScript jest to możliwe.
Aplikacją, w której stworzymy nasz skrypt będzie Automator.
- Uruchamiamy go zatem (znajduje się on w katalogu /Applications) i z pola Wybierz szablon kolejki czynności wskazujemy na Usługę.
- W polu wyszukiwania wpisujemy AppleScript i dwukrotnie klikamy na Uruchom AppleScript.
- Ponad edytorem AppleScript linijka ustawień powinna wyglądać następująco: Usługa otrzymuje zaznaczone pliki lub katalogi w Finder
- W edytorze AppleScript zastępujemy domyślny kod poniższym:
try
tell application "Finder" to set the this_folder to (folder of the front window) as alias
on error
set the this_folder to path to desktop folder as alias
end try
tell application "Finder"
set selected_items to selection
set thefoldername to text returned of (display dialog "Podaj nazwę katalogu:" default answer "katalog bez nazwy")
set theFolder to (make new folder at this_folder with properties {name:thefoldername})
repeat with x in selected_items
move x to theFolder
end repeat
end tell
- Zapisujemy usługę (np. jako Grupuj zaznaczone do nowego folderu)
- Możemy już korzystać z utworzonej usługi. W tym celu w Finderze zaznaczamy kilka plików lub/i folderów, po czym klikamy na jeden z nich prawym przyciskiem myszy i wybieramy naszą usługę (jeśli mieliśmy wcześniej ustawione inne usługi, to naszą możemy znaleźć wtedy w podmenu Usługi).
Dodatkowo można jeszcze dla ułatwienia przypisać akcję grupowania do skrótu klawiszowego:
- Uruchamiamy Preferencje systemowe (czy to z katalogu /Applications, czy klikając na jabłko na pasku menu) i przechodzimy do ustawień Klawiatury.
- Wybieramy zakładkę Skróty klawiszowe i z listy po lewej wybieramy Usługi.
- Na liście z prawej strony odszukujemy naszą usługę (powinna się znaleźć w podsekcji Pliki i katalogi), klikamy na prawo od niej, by wejść w tryb przypisania skrótu.
- Podajemy kombinację klawiszy (np. jeśli chcecie mieć tę samą jak w Lionie, to wciśnijcie `⌃⌘N`).
Wyjaśnienie użytego kodu
Dla zainteresowanych chciałbym jeszcze dodatkowo w prosty sposób objaśnić, jak działa powyższy skrypt. Jeśli zauważycie jakieś błędy w moim tłumaczeniu, to bardzo poproszę o poprawienie.
tell application "Finder" to set the this_folder to (folder of the front window) as alias
on error
set the this_folder to path to desktop folder as alias
Powyższa operacja pobiera lokalizację danego folderu z okna Findera i przypisuje ją do zmiennej this_folder. Jeśli np. zaznaczyliśmy pliki do zgrupowania w folderze Documents, to zostanie pobrana i zapisana w pamięci ścieżka do tego folderu. W przeciwnym wypadku, jeśli nie mamy otwartego okna Findera, czyli chcemy wykonać operację na Biurku, to do zmiennej zostaje przypisana ścieżka do Biurka.
set selected_items to selection
Wszystkie zaznaczone elementy przypisane są pod zmienną selected_items.
set thefoldername to text returned of (display dialog "Folder name:" default answer "new folder")
Za pomocą tej linijki tworzymy okno dialogowe z zapytaniem o nazwę folderu, która zostanie przypisana do zmiennej thefoldername. Nazwa okna to Folder name: natomiast domyślna nazwa folderu to new folder.
set theFolder to (make new folder at this_folder with properties {name:thefoldername})
Utworzony zostanie folder o nazwie zapisanej w zmiennej thefoldername.
repeat with x in selected_items
move x to theFolder
end repeat
I na koniec pętla, która przenosi po kolei zaznaczone pliki (przechowywane w zmiennej selected_items) do nowego folderu.
Komentarze: 2
A ja nawet nie wiedziałem że jest taka funkcja. Dziękuję, fajowa funkcja :)
Brakuje tylko animacji wsysania, ciekawe czy też można dodać :)