• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Viele hassen ihn, manche schwören auf ihn, wir aber möchten unbedingt sehen, welche Bilder Ihr vor Eurem geistigen Auge bzw. vor der Linse Eures iPhone oder iPad sehen könnt, wenn Ihr dieses Wort hört oder lest. Macht mit und beteiligt Euch an unserem Frühjahrsputz ---> Klick

Dateien taggen

Zettt

Doppelter Melonenapfel
Registriert
16.10.05
Beiträge
3.374
Hi,

Ich habe mal wieder ein Problem mit diesem schoenen AppleScript. :p

Mich wuerde gerne Dateien taggen per AppleScript. Eines schaffe ich schon. Naemlich Dateien zu taggen! Tags werden einfach per vorausgehendem "&" in den Spotlight Kommentaren gespeichert.

Ich mach das mit folgendem Script:

Code:
-- ==================
-- = Script written by Zettt
-- = email: [email protected]
-- = web: www.zettt.de
-- ==================

tell application "Finder"
	activate
	set thisItem to selection as alias
	
	set the_result to display dialog ¬
		"Please Enter Tags" default answer ¬
		"" with icon 1 ¬
		buttons {"Cancel", "OK"} ¬
		default button "OK"
	set button_pressed to button returned of the_result
	set text_typed to text returned of the_result
	set text_typed to "&" & text_typed
	if button_pressed is "OK" then
		if comment of thisItem = "" then
			set the comment of thisItem to text_typed
		else
			set text_typed to (comment of thisItem) & " " & text_typed
			set the comment of thisItem to text_typed
		end if
	else
		return
	end if
	
end tell

Nun wuerde ich gerne die Tags wieder entfernen koennen. Dazu habe ich mir gedacht, man macht einfach einen Text replace. Und da hab ich folgende Funktion gefunden

Code:
on ReplaceText(theString, fString, rString)
	set current_Delimiters to AppleScript's text item delimiter
	set AppleScript's text item delimiters to fString
	set sList to every text item of theString
	set AppleScript's text item delimiters to rString
	set newString to sList as string
	set AppleScript's text item delimiters to current_Delimiters
	return newString
end ReplaceText

Und jetzt verzwirbelts mir leider die Gehirngaenge so sehr, dass ich nicht weiss wie ich das dann einbinden soll.
 
Zuletzt bearbeitet von einem Moderator:

bezierkurve

Halberstädter Jungfernapfel
Registriert
12.06.05
Beiträge
3.860
In deiner ReplaceText-Methode scheint ein Fehler zu sein… mit der Variante von Mutti (ganz unten auf der Seite) sollte es dann klappen.

PS: Mit deinem obigen Code kann man momentan noch Tags mehrfach setzen, das solltest du evtl. noch abfangen.
 

JeaBea

Adams Apfel
Registriert
01.04.07
Beiträge
511
Hallo!

Ich habe eine grundsätzliche Frage zum Taggen von Dateien, und zwar: Wie geht das? ;)
Ich würde zum Beispiel eine Datei gern so mit einem "Kürzel" oder ähnlichem versehen, dass Spotlight sie gleich als Top-Treffer anzeigt, wenn ich dieses Kürzel eingebe. Ich habe jetzt schon mehrmals gelesen, dass man eine Datei einfach so taggt, indem man im Info-Fenster etwas in "Spotlight-Kommentare" eingibt. Aber so richtig läuft das nicht, wie ich mir das vorstelle. Ich habe z.B. eine Datei, bei der ich unter "Informationen" bei den Spotlight Kommentaren "*d" eingebe. Wenn ich das dann in Spotlight suche, findet der gar nichts...

Würd mich freuen über Infos zum Taggen von Dateien in Bezug auf Spotlight.
Liebe Grüße.
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
Hallo,

so könnte das aussehen:

Code:
set tmp to display alert "Was möchtest Du tun?" buttons {"Abbrechen", "Tags setzen", "Tags entfernen"} default button "Abbrechen"

if ((button returned of tmp) is equal to "Tags setzen") then
    my tagsSetzen()
else if ((button returned of tmp) is equal to "Tags entfernen") then
    my tagsErsetzen()
end if


-- Tags ersetzen
on tagsErsetzen()
    tell application "Finder"
        activate
        
        set sel to selection
        
        if (sel is not {}) then
            
            set nDatei to item 1 of sel
            
            set tmp to display dialog "Suchen:" default answer "" with icon 1 buttons {"Abbrechen", "OK"} default button "Abbrechen"
            set tmp2 to display dialog "Ersetzen:" default answer "" with icon 1 buttons {"Abbrechen", "OK"} default button "Abbrechen"
            
            if ((button returned of tmp) is equal to "OK") then set comment of nDatei to my ersetzenFunktion((comment of nDatei), "&" & (text returned of tmp), "&" & (text returned of tmp2))
            
        else
            display alert "Achtung" as warning message "Bitte markiere die gewünschte Datei"
        end if
        
    end tell
end tagsErsetzen


-- Tags auf alle markierten Dateien anwenden
on tagsSetzen()
    tell application "Finder"
        activate
        
        set sel to selection
        
        if (sel is not {}) then
            
            set nDatei to item 1 of sel
            
            set tmp to display dialog "Tag hinzufügen:" default answer "" with icon 1 buttons {"Abbrechen", "OK"} default button "Abbrechen"
            
            set txt to "&" & (text returned of tmp)
            
            if ((button returned of tmp) is equal to "OK") then -- Wenn OK-Button gedrückt
                
                if ((comment of nDatei) is equal to "") then
                    set comment of nDatei to txt
                else
                    set comment of nDatei to ((comment of nDatei) & " " & txt)
                end if
                
            end if
            
        else
            display alert "Achtung" as warning message "Bitte markiere die gewünschte Datei"
        end if
        
    end tell
end tagsSetzen


-- Suchen und Ersetzen
on ersetzenFunktion(txt, suchenText, ersetzenText)
    
    -- suchen
    set AppleScript's text item delimiters to suchenText
    set txt to every text item of txt as list
    
    -- ersetzen
    set AppleScript's text item delimiters to ersetzenText
    
    return (txt as string)
    
end ersetzenFunktion


Viele Grüße
 

LittlePixel

Strauwalds neue Goldparmäne
Registriert
09.07.08
Beiträge
641
PS: Mit deinem obigen Code kann man momentan noch Tags mehrfach setzen, das solltest du evtl. noch abfangen.

Du Schwindler :) Ganz im Gegenteil ;)

Code:
set thisItem to selection as alias

So etwas darfst Du niemals machen! "selection" liefert Dir bezogen auf den Finder immer eine Liste mit Aliasen zurück.

Viele Grüße
 

JeaBea

Adams Apfel
Registriert
01.04.07
Beiträge
511
nochmal Fragen zum Dateien taggen

[...] so könnte das aussehen: [...]

Super Script, danke. Mir war nicht ganz klar, wie ich das mit dem "&" in die Spotlight Kommentare einfüge (was Zettt ja schon geschrieben hat), habe jetzt gesehen, dass es also ohne Leerzeichen geschehen muss.
Dennoch zwei Fragen:
  1. funktioniert das Taggen scheinbar nicht mit allen Zeichen, oder? Wenn ich z.B. eine Datei mit "*d" tagge (auch mit dem Script), klappt das nicht, sprich Spotlight findet da nichts. Wieso nicht? Das würde mich noch sehr interessieren.
  2. listet Spotlight die getaggte Datei nicht als Top-Treffer auf. Geht das überhaupt mit dem Taggen oder richtet sich das einfach z.B. nach Häufigkeit des Öffnens einer Datei? (Als Beispiel: Wenn ich in Spotlight "it" eingebe, wird als Top-Treffer iTunes angezeigt. Ich möchte gern, dass wenn ich eine Datei mit "it" tagge, dass dann die Datei als Top-Treffer angezeigt wird. Geht das?)

Danke trotzdem. Und ich hoffe auf weitere Tipps. :)
Liebe Grüße