Mastodon
Zdjęcie okładkowe wpisu Alfred i kopiowanie nazw plików lub folderów

Alfred i kopiowanie nazw plików lub folderów

8
Dodane: 8 lat temu

Niemal cztery lata temu podzieliłem się z Wami workflow, którego zadaniem było kopiowanie nazw zaznaczonego pliku lub folderu. Teraz wracam do tego tematu z ulepszoną wersją.

Największą bolączką poprzedniej wersji mojego workflow był brak obsługi wielu plików jednocześnie. Po wielu bojach w końcu udało mi się osiągnąć ten cel w sposób mnie zadowalający. Akcja przepisana jest praktycznie od zera i teraz nie opiera się na skrypcie Basha, ale na Pythonie. Treść skryptu możecie znaleźć poniżej:

from os.path import basename
import re, sys

query = "{query}"

query = re.sub('\t', '\n', query)

query = query.splitlines()

num = len(query)

for i in range(0,num):
    query[i] = basename(query[i])

wynik = "\n".join(query)

sys.stdout.write(wynik)

Pokrótce postaram się opisać poszczególne fragmenty:

  • from… …import… – tu oczywiście importujemy potrzebne biblioteki;
  • query = re.sub('\t', '\n', query) – ten fragment jest odpowiedzialny za podmianę tabulatorów rozdzielających kolejne ścieżki plików na nowe linie, przez co tworzymy ciąg składający się z wielu linii tekstu;
  • query = query.splitlines() – tym poleceniem konwertujemy wieloliniową zmienną na listę;
  • num = len(query) – dzięki temu fragmentowi ustalamy, ile elementów znajduje się na liście;
  • for … – rozpoczynamy pętlę która będzie przetwarzała każdy z elementów listy;
  • query[i] = basename(query[i]) – dla każdego elementu listy polecenie basename „wyciąga” ostatni kawałek ścieżki, czyli nazwę pliku lub katalogu i nadpisuje ją na poprzednią wartość elementu;
  • wynik = "\n".join(query) – przedostatnim krokiem jest ponowne przekonwertowanie listy elementów na wieloliniowy ciąg tekstowy.
  • sys.stdout.write(wynik) – to polecenie zwraca nam ciąg nazw, z których każda jest w osobnej linii. Jego działanie jest podobne do bardziej znanego print, ale w odróżnieniu od tego drugiego nie wstawia na końcu dodatkowej, nowej linii.

Wynik powyższego skryptu jest przekazywany do kolejnego elementu – Copy to Clipboard, dzięki czemu możemy wkleić skopiowane nazwy w wybrane przez nas miejsce.

Workflow Copy Name możecie pobrać stąd.


Więcej workflows dla Alfreda znajdziecie tutaj.

Maciej Skrzypczak

Użytkownik sprzętu z nadgryzionym jabłkiem, grafik komputerowy, Redaktor iMagazine.pl. Mastodon: mcskrzypczak@c.im

Zapraszamy do dalszej dyskusji na Mastodonie lub Twitterze .

Komentarze: 8

Hej.. Świetny ten workflow – może się niejednokrotnie przydać, nawet żeby zrobić komuś prostą listę plików np z mp3, filmami lub kursami.

ps. Mam prośbę do ciebie Maćku – czy mógłbyś wrzucić jeszczecze raz na serwer workflow do VAT. Niestety wszystkie Twoje workflow wrzucone na copy.com są nieaktywne bo chyba copy.com zawiesiło już swoją działalność. Chodzi mi dokłądnie o ten workflow:
https://imagazine.pl/2014/03/23/moj-alfred-obliczanie-vat-2/
Próbowałem wykonać wszystko zgodnie z poradnikiem ale coś mi to nie działa na Alfredzie 3. Z góry dzięki.

Będę mógł to zrobić dopiero, jak wrócę do domu. W starym wpisie jeszcze raz wkleiłem skrypt, więc możesz spróbować ponownie z jego przeklejeniem. 🙂

Bardzo dziękuję. Na pewno się przyda nie jeden raz ;)
Ja dodam link do kilku moich workflow – nie wszystkie są w 100% od zera zrobione przezemnie. Ale w każdym coś zmieniłem i dodałem a niektóre napisałem od zera. https://blog.nayma.pl/nasze-workflows-do-programu-alfred/
Mam nadzieje, że może coś się przyda. Lub może jakieś inne tematy na blogu Cię zainteresują. Pozdrawiam i bacznie sledze sekcję Alfreda na iMagazine.