• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Der Frühling ist auch in den eingesandten Fotos deutlich zu erkennen. Zeigt uns, wer Euer Favorit ist! hier geht es lang für Euer Voting --> Klick

Filename aus einer propertylist auslesen unter Lion

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
Hallo zusammen,
ich hatte unter Snow Leopard ein Script erstellt, dass die Dokumente aus dem Dock auf meinen Stick kopiert. Seit Umstieg auf Lion funktioniert es nicht mehr. Grund: In der Propertylist ("macintosh hd:users:name:Library:preferences:com.apple.dock.plist:") wird der Name des Dokuments verändert. Aus einem Leerzeichen im Dokumenten-Namen wird ein "% 20".

Der relevante Scriptausschnitt:
Code:
[B]try[/B]
            [B]set[/B] [COLOR=#518e16]x[/COLOR] [B]to[/B] 1
            [B]set[/B] [COLOR=#518e16]docklist[/COLOR] [B]to[/B] {}
            [B]repeat[/B]
                [B]tell[/B] [COLOR=#103ffb][I]application[/I][/COLOR] "System Events"
                    [B]set[/B] [COLOR=#518e16]propList[/COLOR] [B]to[/B] [COLOR=#103ffb][I]property list file[/I][/COLOR] "macintosh hd:users:philipptrankle:Library:Preferences:com.apple.dock.plist:"
                    [B]set[/B] [COLOR=#518e16]a[/COLOR] [B]to[/B] ([COLOR=#8039d8]value[/COLOR] [B]of[/B] [COLOR=#103ffb][I]property list item[/I][/COLOR] "_CFURLString" [B]of[/B] [COLOR=#103ffb][I]property list item[/I][/COLOR] "file-data" [B]of[/B] [COLOR=#103ffb][I]property list item[/I][/COLOR] "tile-data" [B]of[/B] [COLOR=#103ffb][I]property list item[/I][/COLOR] [COLOR=#518e16]x[/COLOR] [B]of[/B] [COLOR=#103ffb][I]property list item[/I][/COLOR] "persistent-others" [B]of[/B] [COLOR=#518e16]propList[/COLOR]) [B]as[/B] [COLOR=#0936bb][I]POSIX file[/I][/COLOR]
                [B]end[/B] [B]tell[/B]
                [B]set[/B] [B]end[/B] [B]of[/B] [COLOR=#518e16]docklist[/COLOR] [B]to[/B] [COLOR=#518e16]a[/COLOR]
                [B]set[/B] [COLOR=#518e16]x[/COLOR] [B]to[/B] ([COLOR=#518e16]x[/COLOR] + 1)
            [B]end[/B] [B]repeat[/B]
        [B]end[/B] [B]try[/B]


Das Ergebnis unter Lion:
file "Macintosh HD:Users:name:publikationen:2011-% 20Prozessverbesserung/Implementierung% 20LL:Artikel Analgosedierung.docx:"

Wenn ich diesen String in einen "copy"-Befehl verwende bekomme ich eine Fehlermeldung.

Frage: Wie kann ich unter Lion den String eines Dokumenten-Namens aus einer plist korrekt auslesen?

Vielen Dank
 
Zuletzt bearbeitet:

sedna

Schweizer Glockenapfel
Registriert
22.10.08
Beiträge
1.375
Hallo!

Wenn du diese Zeile einfügst, sollte das klappen.

set a to do shell script "echo " & a & " | sed 's/ / /g'"
set end of docklist to a


In deinem Skript wird es immer eine kleine Fehlermeldung geben (die aber nicht soo tragisch ist). Du könntest die Anzahl der Elemente jedoch auslesen:
repeat with i from 1 to count of property list items of property list item "persistent-others" of propList


Gruß
 

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
Hallo Sedna,
danke für die schnelle Hilfe. Es tut. Dank dir bin ich auch das peinliche "try" losgeworden.

Was mich generell interessieren würde: Warum wird der String unter Lion überhaupt verändert? Ich frage weil ich damit rechnen muss, dass es noch mehr Zeichen gibt, die unter Lion in einem Dokumenten-Namen verändert werden.
 

sedna

Schweizer Glockenapfel
Registriert
22.10.08
Beiträge
1.375
Bevor ich deine Frage nur mit meinem Halbwissen beantworte, lasse ich es lieber :eek:
Und ja, natürlich musst du damit rechnen, dass noch mehr Zeichen verändert werden, sofern du weiterhin Leerzeichen oder sogar Sonderzeichen im Pfad benutzt (Das kann dir immer wieder Ärger bereiten)

Das Stichwort ist URL (bzw. URI) Encoding. Mit Google findest du die Zeichen und wie sie verändert werden
Du kannst das dem Shell Script anhängen
do shell script "echo " & T & " | sed 's/%20/ /g' | sed 's/%25/%/g'" usw

Oder du suchst im Netz nach einem AppleScript Händler, der dir das decodiert ... so wie hier in der Art
(Hier gibt es ein anschauliches Beispiel für einen Encoder)
Wenn du nicht klar kommst, helfe ich dir gerne beim Erstellen des Händlers .... aber das shellscript wäre auch eine gute Lösung.



Gruß
 
Zuletzt bearbeitet:

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
...genial, Sedna: vielen Dank.

bin immer ein bisschen hin und her gerissen, denn: die Händler sind irgendwie ehrlicher weil man in Apple Script bleibt, allerdings ist das Shell-Script so g'schmeidig einfach...
Wegen Zeitmangel bleib ich mal beim Shell-Script, weiß dein Angebot aber zu schätzen.
Vielen Dank noch mal.