• Apfeltalk ändert einen Teil seiner Allgemeinen Geschäftsbedingungen (AGB), das Löschen von Useraccounts betreffend.
    Näheres könnt Ihr hier nachlesen: AGB-Änderung
  • Was gibt es Schöneres als den Mai draußen in der Natur mit allen Sinnen zu genießen? Lasst uns teilhaben an Euren Erlebnissen und macht mit beim Thema des Monats Da blüht uns was! ---> Klick

Wie kann ich den Pfad von Dokumenten abfragen, die im Dock abgelegt sind?

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
Hallo,
ich habe bereits ein Script geschrieben, mit dem ich ein bestimmtes Dokument auf meinem Stick abspeichern kann. Nun würd ich gern immer alle Dokumente auf dem Stick abspeichern, die im Dock abgelegt sind.
Frage: Wie frage ich die Pfade der Dokumente ab, die im Dock gespeichert sind?

Vielen Dank für die Mühe,
Phil

Falls nötig und zur weiteren Erläuterung das Sript:

Code:
set x to false
repeat while x is false
	set ordner to "Zieldokument"
	set Ziel to "stick:"
	tell application "System Events"
		get every folder
		if folder "stick" exists then
			set x to true
			tell application "Finder"
				duplicate folder ordner to folder Ziel with replacing
			end tell
			say "Well   done!!!" using "Victoria" modulation 127
			tell application "Finder"
				activate
			end tell
		else
			set x to false
			say "Attention please" using "Victoria" modulation 127
			activate 
			display dialog "Stick ist nicht angeschlossen" buttons {"Ups-will gar nicht abspeichern", "Erst einstecken wär hilfreich"} default button 2
			set answer to button returned of result
			if answer is "Ups-will gar nicht abspeichern" then
				set x to true
			end if
		end if
	end tell
end repeat
 

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Du kannst aus dem Dock doch nichts wo anders hin schaffen, da liegen ja nur Symbole.
Wenn bestimmte Dokumente automatisch auf den Stick befördern willst, musst du den Pfad zum Originaldokument angeben.
So stellt sich das eine Ente von geringem Verstand vor.
Salome
 

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
ja, ich weiß schon, aber:
Irgendwo muss vermerkt sein, welche Dokumente im Dock abgelegt sind. System Event zum Beispiel kann man auch fragen welche folder er erkennt. Ich gehe deshalb davon aus, dass man auch die Applikation "dock" abfragen kann, welche Dokumente darin verlinkt sind. Ich habe schon öfters Scripts gesehen, die Eigenschaften von Programmen abfragen. Finds aber nicht mehr. Meine try and error-versuche haben aber nicht gebracht. Deshalb die Anfrage an erfahrene User.

Grüße,
Phil
 

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
...vielleicht muss ich noch näher erläutern: Das Dock muss zum Aufrufen der in ihm verwendeten Dateien den Pfad dazu besitzen. Diese Informationen würde ich gerne in meinen Script verwenden. Weiß aber nicht wo sie abgespeichert sind/wie man sie abfragt. Das suche ich.

Grüße,
Phil
 

salome

Golden Noble
Registriert
20.08.06
Beiträge
23.750
Was ich gefunden habe: In meiner LibraryApplications Support /SyncServices/Local/TFSM/com.apple.dock.items/ die Datei data.syncdb
Die habe ich mit TextWrangler geöffnet und die Dock-Items gefunden:
Zum Beispiel:
/Applications/Safari.app label properties'com.apple.
Oder ein vollgepackter Ordner, Userordner oberste Ebene: Bureau label properties'com.apple.syncservices.
Ein Ordner, der in anderen Ordnern steckt: ISDPropertyValue path#~/ Bureau/1Manus/Aramo/Ratgeber III label properties'com.apple.syncservices.
Ein einzelnes Dokument: ISDPropertyValue path5~/ Bureau/1Manus/ Buchkultur /2011/Assaf Gavron .docx label
properties'com.apple.syncservices.RecordEntityName com.apple.dock.item type docside,com.apple.syncservices.

Wo da der konkrete Pfad anfängt (ob z B. ISDPropertyValue path5~ noch dazu gehört) wirst du selbst raus finden.
Salome
 

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
...holla: Vielen Dank, das hätt ich nie rausgefunden. Jetzt werd ich erst mal ein Wochenende Hausaufgaben machen. Vielen Dank Dir für die Mühe. Meld mich wenn ich mehr weiß.

Gruß,
Phil
 

sedna

Galloway Pepping
Registriert
22.10.08
Beiträge
1.359
Hallo!

Die Pfade sind in der ~/Library/Preferences/com.apple.dock.plist
Abfragen der Werte einer Plist mit System Events

Code:
tell application "System Events"
	set propList to property list file "~/Library/Preferences/com.apple.dock.plist"
	
	(*
	get value of property list item "_CFURLString" of property list item "file-data" of property list item "tile-data" of property list item 1 of property list item "persistent-others" of propList
	*)
	--oder halt so
	
	get value of property list item 3 of property list item 2 of property list item 3 of property list item 1 of property list item "persistent-others" of propList
	
end tell

Gruß
 

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
Hallo Sedna,
das funktioniert. Dank deiner zwei Varianten hab ich auch den Aufbau einer property list verstanden.
Recht herzlichen Dank dafür.

Gruß
 

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
So,
hab ne Weile gebraucht, aber für den den's interessiert hier eine Lösung für die ursächliche Frage, wie man die Dokumente des Docks auf einen Datenträger bekommt:

Code:
(* Liest aus der property list den Pfad zu den Dokumenten des Docks aus, 'as posix file' konvertiert den String in die Form, die der Finder lesen kann, die Ergebnisse werden in einer Liste gesammelt *)
try
	set x to 1
	set docklist to {}
	repeat
		tell application "System Events"
			set propList to property list file "folder:users:name:Library:Preferences:com.apple.dock.plist:"
			set a to (value of property list item "_CFURLString" of property list item "file-data" of property list item "tile-data" of property list item x of property list item "persistent-others" of propList) as POSIX file  
		end tell
		set end of docklist to a
		set x to (x + 1)
	end repeat
	return docklist
end try


--Kopiert die Dokumentenliste auf den Stick und sammelt nicht kopierte Elemente in einer zweiten Liste
set errorlist to {}
set x to 0
repeat until docklist is {}
	set a to item 1 of docklist
	try
		tell application "Finder"
			copy file a to folder Ziel
			set x to x + 1
		end tell
	on error
		set end of errorlist to a
	end try
	set docklist to the rest of docklist
end repeat


--Schriftliche Rückmeldung über Ergebnisse des Kopierens
display dialog {"Es wurde(n) " & (x) & " Dokument(e) kopiert" & "

Es konnten " & (count of errorlist) & " nicht kopiert werden:
" & (errorlist as text)} buttons {"Isch gut"} default button 1

Bereits eingebaut ist eine noch recht rudimentäre Form der Rückmeldung, welche Dokumente kopiert wurden und welche nicht. bin garde dabei eine lesbare Version des Dateinamens zu generieren, dauert aber noch.

falls das alles viel einfacher, stablier, ...oder so geht, dann gerne Kritik.

Gruß
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Nice :)

Nur zur Info:
Die persistent-others des Docks könnte man auch so auslesen:
Code:
set dockListPosix to every paragraph of (do shell script "defaults read com.apple.dock persistent-others | grep -oE '\"_CFURLString\".*' | awk -F \\\" '{print $4}'")

set dockList to {}
repeat with aPosixPath in dockListPosix
	set dockList to dockList & ((POSIX file aPosixPath) as alias)
end repeat

Da der shell Befehl ein bisschen zerrissen ist, hier wie er wirklich lautet:
defaults read com.apple.dock persistent-others | grep -oE '"_CFURLString".*' | awk -F \" '{print $4}'

Edit:
Oder für die, die awk nicht mögen: mit cut geht's auch
defaults read com.apple.dock persistent-others | grep -oE '"_CFURLString".*' | cut -d \" -f 4
 

Streptokokke

Jonagold
Registriert
11.12.10
Beiträge
21
Hallo fyysh,
ich seh schon: Um die Shell Scripts komm ich nicht drum rum, die sehen immer geschmeidiger aus. Ich hab schon ein paar mal nach Hintergrundinfos gesucht, leider auf die Schnelle nichts brauchbares gefunden. Deshalb hier ein paar absolute Anfängerfragen:
- Aktiviert do shell Script ein anderen Script, oder ist das nur der Hinweis, dass man jetzt in einer anderen Sprache schreibt?
- Wenn ich das richtig verstehe benutzt du Terminal. Sind da noch andre Sprachen denkbar?
Du siehst schon: Ich hab keine Ahnung! Außerdem hab ich vor Terminal Respekt- das riecht nach tu einen Fehler und die Festplatte brennt! Früher oder später werd ich aber nicht drum rumkommen, deshalb vielen Dank fürs draufstoßen!

Ebenfalls vielen Dank für die wesentlich sinnigere repeat-Schleife (muss ich noch sezieren damit ich sie komplett verstehe). Das wäre dann wohl auch der Schlüssel um auf das peinliche try verzichten zu können.

Grüße
 

fyysh

Schweizer Glockenapfel
Registriert
25.01.10
Beiträge
1.386
Man ey... jetzt hatte ich 2x hier geantwortet und beide Male wurde die Antwort nicht übersendet wegen irgend nem Authentifizierungsproblem.
Ich antworte später nochmal... bah.