1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies. Weitere Informationen
  2. Unsere jährliche Weihnachts-Banner-Aktion hat begonnen! Wir freuen uns auf viele, viele kreative Vorschläge.
    Mehr dazu könnt Ihr hier nachlesen: Weihnachtsbanner 2016

    Information ausblenden

Dateien im Finder zeigen

Dieses Thema im Forum "AppleScript" wurde erstellt von seb2, 17.09.06.

  1. seb2

    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?
     
  2. Daisy

    Daisy Uelzener Rambour

    Dabei seit:
    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
     
  3. pete

    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.

    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.
     
    #3 pete, 17.09.06
    Zuletzt von einem Moderator bearbeitet: 17.09.06
  4. seb2

    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.
     
  5. pete

    pete 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.

    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.
     
  6. seb2

    seb2 Gast

    Sprich: da ich immer zuerst die POSIX-Pfade habe hinter alle Verzeichnisnamen -- seien es nun Bundles oder nicht -- einen Slash?
    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.
     
  7. pete

    pete 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? ;)

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

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

    Daisy Uelzener Rambour

    Dabei seit:
    14.01.06
    Beiträge:
    366
    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?
     
  9. pete

    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!
     
    #9 pete, 17.09.06
    Zuletzt von einem Moderator bearbeitet: 17.09.06
  10. seb2

    seb2 Gast

    Noch nicht. Aber morgen. War den ganzen Tag heute unterwegs und schaffe heute nichts Anspruchsvolles mehr... ;)
    *Händereib* Prima!
    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.
     
  11. seb2

    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.
     
  12. pete

    pete Gast

    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.
     

Diese Seite empfehlen