• 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 im Finder zeigen

seb2

Gast
Moin,

ich habe ein -- wie es scheint -- recht triviales Problem; ich möchte Dateien im Finder anzeigen lassen, sprich die Dateien werden selektiert. Nach einigem Rumprobieren habe ich festgestellt daß es nicht so einfach ist, eine Lösung zu finden, die sowohl Dateien als auch Verzeichnisse auswählen kann. Hört sich merkwürdig an, ist aber so.
Das ganze wird insofern komplizierter als daß das AppleScript aus einer Applikation heraus generiert wird, in der ich nur POSIX-Pfade habe.

Ein Script, das generiert würde, sieht so aus:
Code:
set s to {"/Users/seb/Desktop/dateiA", "/users/seb/Desktop/dateiB"}
set f to {}
repeat with t in s
	copy (POSIX file t) to end of f
end repeat
tell application "Finder" to reveal f

Die funktioniert oft aber eben nicht immer. Ist hier jemand, der sich mit Applescript auskennt und mir auf die Sprünge helfen kann?
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Moin Seb2,

vielleicht liegt es ja an den POSIX-Pfaden, die deine Applikation generiert. Wenn du zum Beispiel dabei auch Pfade mit Tilde hast (z.B: '~/Desktop/') dann geht das so nicht:
Code:
set a to "~/Desktop/"
get a as POSIX file

--> Ergebnis: file ":~:Desktop:"

Auch Sonderzeichen in den Pfaden könnten ein Problem darstellen - oder Spaces ...

Und irgendwo habe ich auch mal eine längere Diskussion darüber gelesen, ob man '(POSIX file t)' schreiben kann - es wurde damals empfohlen, '(t as POSIX file)' zu verwenden, da das sicherer sei/das andere teilweise nicht funktioniert (ich kann das allerdings nur weitergeben - ich hatte auch mit der anderen Schreibweise bisher keine Probleme).

Wenn du nicht weiterkommst, dann versuch doch mal das Problem etwas einzukreisen (s.o. ... Sonderzeichen/Space/Tilde ...etc?? und gib wieder bescheid)

Grüße,

Daisy
 

pete

Gast
Dein Script ist meiner Meinung nach in Ordnung.

Der Befehl "POSIX file" generiert immer eine Datei-Referenz, die von Finder als Alias erkannt wird, unabhängig davon, ob die Datei existiert oder nicht. Daraus folgt, dass Ordner nur dann richtig referenziert werden, wenn die Posix-Pfade am Ende einen Slash haben.

Das ganze wird insofern komplizierter als daß das AppleScript aus einer Applikation heraus generiert wird, in der ich nur POSIX-Pfade habe.

Schaue mal nach, ob diese Applikation hinten ein Slash an den Ordnernamen hängt.

----
edit

Du könntest Dein Script erweitern, um die Pfade *vor* dem Eintrag in Liste f zu prüfen. Existiert kein Slash am Ende, ist es eine Datei, was sich mit "file exists" überprüfen lässt, gibt es ein Slash, kann man "folder exists" anwenden.

----
noch ein edit

Ich probiere gerade, und sehe, dass es doch ein Problem mit Deinem Script gibt. Mehr später ;)

----
edit 3

Hmmmm. POSIX file scheint sich irrational zu verhalten. Bei unveränderten Pfaden geht es mal, und mal gehts nicht. Sehr seltsam. Und dann geht es auch mal mit Slash hinten und mal ohne. Vielleicht hast Du ja tatsächlich einen Bug entdeckt? Tja, muss wohl jemand ran, der jetzt viel Zeit hat. Ich muss jetzt was frühstücken und bin dann leider weg. Sorry.
 
Zuletzt bearbeitet von einem Moderator:

seb2

Gast
Also, Tilden verwende ich keine. Aber der Hinweis mit dem Slash am Ende war gut, den hänge ich tatsächlich nicht an.

Kleines Bedenken nur mal... wie sieht es mit Bundles aus, wie behandelt der Finder die? Müßte ich richtigerweise "/Applications/Mail.app" schreiben oder "Applications/Mail.app/"?

Das witzige ist halt daß es mit Verzeichnissen auch ohne Slash am Ende manchmal geht und machnmal nicht... AppleScript ist halt leider echt nicht meine Welt.
 

pete

Gast
Kleines Bedenken nur mal... wie sieht es mit Bundles aus, wie behandelt der Finder die? Müßte ich richtigerweise "/Applications/Mail.app" schreiben oder "Applications/Mail.app/"?

Solange Du nur mit AppleScript-Befehlen zu tun hast, die die Finder-Syntax verwenden (Doppelpunkt als Ordner-Trenner etc.), dann verhält sich das Bundle wie eine Datei. Sobald es um Posix-Pfade geht, ist alles wie Verzeichnis zu behandeln, was wirklich Verzeichnis ist. So jedenfalls meine Beobachtungen.

Das witzige ist halt daß es mit Verzeichnissen auch ohne Slash am Ende manchmal geht und machnmal nicht... AppleScript ist halt leider echt nicht meine Welt.

Apple baut anscheinend in die AppleScrip-Befehle haufenweise "Hilfen" ein, um Anwenderfehler wie fehlende Ordnertrenner abzufangen. Aber auch nicht immer :).

Wenn man sich eine Weile mit der Funktionsweise von "posix path" beschäftigt, gibt es einen bestimmten Zeitpunkt, wo sich zwangsläufig die Nackenhärchen kräuseln.

Inzwischen bin ich trotzdem dazu übergegangen, nur noch posix-Pfade zu verwenden. Dazu benötigt man ein paar selbstgestrickte Universal-Pfadkonvertiererer, die zwar nicht unbedingt die Scripts schneller machen, aber das Leben leichter.

So, Espresso ist fertig. Tschau.
 

seb2

Gast
Solange Du nur mit AppleScript-Befehlen zu tun hast, die die Finder-Syntax verwenden (Doppelpunkt als Ordner-Trenner etc.), dann verhält sich das Bundle wie eine Datei. Sobald es um Posix-Pfade geht, ist alles wie Verzeichnis zu behandeln, was wirklich Verzeichnis ist. So jedenfalls meine Beobachtungen.
Sprich: da ich immer zuerst die POSIX-Pfade habe hinter alle Verzeichnisnamen -- seien es nun Bundles oder nicht -- einen Slash?
Inzwischen bin ich trotzdem dazu übergegangen, nur noch posix-Pfade zu verwenden. Dazu benötigt man ein paar selbstgestrickte Universal-Pfadkonvertiererer, die zwar nicht unbedingt die Scripts schneller machen, aber das Leben leichter.
Wäre es möglich daß Du die mit mir "teilst"? ;)

Wie gesagt, ich bin kein großer AppleScript-Kenner und wäre wahnsinnig dankbar wenn ich einfach nur ein paar Dateien aus einer Cocoa-Applikation heraus anzeigen (also im Finder selektieren) könnte.
 

pete

Gast
Sprich: da ich immer zuerst die POSIX-Pfade habe hinter alle Verzeichnisnamen -- seien es nun Bundles oder nicht -- einen Slash?

Kommt darauf an, was Du danach tun willst. Bis zum bitteren Script-Ende Posix-Pfade verarbeiten? Hast Du es schon mal mit Slash am Ende aller Verzeichnisnamen -- seien es nun Bundles oder nicht -- probiert? ;)

Wäre es möglich daß Du die mit mir "teilst"? ;)

Ja, das wäre möglich. Etwas Geduld noch, bitte. :cool:

Wie gesagt, ich bin kein großer AppleScript-Kenner und wäre wahnsinnig dankbar wenn ich einfach nur ein paar Dateien aus einer Cocoa-Applikation heraus anzeigen (also im Finder selektieren) könnte.

Was ja normalerweise auch kein Problem ist. Wie heißt eigentlich die Applikation, die Dir die Pfade und das Applescript generiert? :innocent:
 

Daisy

Uelzener Rambour
Registriert
14.01.06
Beiträge
366
Und irgendwo habe ich auch mal eine längere Diskussion darüber gelesen, ob man '(POSIX file t)' schreiben kann - es wurde damals empfohlen, '(t as POSIX file)' zu verwenden, da das sicherer sei/das andere teilweise nicht funktioniert (ich kann das allerdings nur weitergeben - ich hatte auch mit der anderen Schreibweise bisher keine Probleme).

Hi,

ich habe mittlerweile nun eine Bestätigung für das oben erwähnte Phänomen:

bei einem exisiterenden File 'test-äöü.test' in meinem temporary items ordner liefert:

Code:
get ("/private/var/tmp/folders.501/TemporaryItems/test-äöü.test" as POSIX file)

das korrekte Ergebnis:
Code:
file "A:private:var:tmp:folders.501:TemporaryItems:test-äöü.test"

Das hier ...
Code:
get (POSIX file of "/private/var/tmp/folders.501/TemporaryItems/test-äöü.test")

bringt dagegen eine Fehlermedung:
Code:
POSIX file of "/private/var/tmp/folders.501/TemporaryItems/test-äöü.test" kann nicht gelesen werden

Scheint an den Umlauten zu liegen. Hast du mal versucht, das POSIX file umzustellen?
 

pete

Gast
@Daisy

Ich möchte mich nur ganz kurz einmischen. Ich kann bestätigen, dass es besser ist, bei "Coercions", also bei allen Typ-Umwandlungen von Variablen, alle Variablengruppen strikt zu klammern und mit nachgestelltem Verweis und "as" anstelle vorangestelltem Verweis (und eventuellem "of") zu referenzieren. Ich hatte diese Regel in meinen eigenen Scripts zwar inzwischen teilweise befolgt, aber nicht wirklich bewußt erkannt.

Vielen Dank von meiner Seite zur Lösung dieses sehr grundsätzlichen Problems!
 
Zuletzt bearbeitet von einem Moderator:

seb2

Gast
Kommt darauf an, was Du danach tun willst. Bis zum bitteren Script-Ende Posix-Pfade verarbeiten? Hast Du es schon mal mit Slash am Ende aller Verzeichnisnamen -- seien es nun Bundles oder nicht -- probiert? ;)
Noch nicht. Aber morgen. War den ganzen Tag heute unterwegs und schaffe heute nichts Anspruchsvolles mehr... ;)
Ja, das wäre möglich. Etwas Geduld noch, bitte. :cool:
*Händereib* Prima!
Was ja normalerweise auch kein Problem ist. Wie heißt eigentlich die Applikation, die Dir die Pfade und das Applescript generiert? :innocent:
Nichts Weltbewegendes... die neue Version von Übertragen, an der wir gerade sitzen ist unter anderem flexibler was den Speicherort angeht und es reicht nicht mehr, nur eine Datei zu selektieren -- was aus Cocoa heraus hervorragend funktioniert -- sondern es müssen gegebenenfalls eben mehrere Dateien selektiert werden nach erfolgtem Transfer.
 

seb2

Gast
@Daisy
Das mit den Umlauten hatte ich auch schon überlegt... allerdings -- lange Geschichte warum -- wird das bei mir immer mit Dateien mit einem "ß" im Pfad getestet und es hat oft genug funktioniert.
Klar, ich gebe Dir Recht, Vorsicht hat noch nie geschadet.
 

pete

Gast
*Händereib* Prima!

Jetzt muss ich aber noch eine Zeile in meinem Code anpassen! Das kann dauern... :p

Nebenbei: Daisy hat das Problem komplett erfasst. Und nun weiß ich auch ganz bestimmt, dass sich POSIX path etwas "anders" verhält (Nackenhaare). Man kann nicht die Form "as POSIX path" bilden.