Grupowanie zaznaczonych plików do nowego folderu w Snow Leopardzie

24/01/2012, 09:14 · · · 2


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.

  1. Uruchamiamy go zatem (znajduje się on w katalogu /Applications) i z pola Wybierz szablon kolejki czynności wskazujemy na Usługę.
  2. W polu wyszukiwania wpisujemy AppleScript i dwukrotnie klikamy na Uruchom AppleScript.
  3. Ponad edytorem AppleScript linijka ustawień powinna wyglądać następująco: Usługa otrzymuje zaznaczone pliki lub katalogiFinder
  4. 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
  5. Zapisujemy usługę (np. jako Grupuj zaznaczone do nowego folderu)
  6. 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:

  1. Uruchamiamy Preferencje systemowe (czy to z katalogu /Applications, czy klikając na jabłko na pasku menu) i przechodzimy do ustawień Klawiatury.
  2. Wybieramy zakładkę Skróty klawiszowe i z listy po lewej wybieramy Usługi.
  3. 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.
  4. 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.



2

Maciej Skrzypczak

Użytkownik sprzętu z nadgryzionym jabłkiem, grafik komputerowy, Redaktor iMagazine.pl.