get name exception

Atalantia

Atalantia

Aktives Mitglied
Thread Starter
Dabei seit
26.11.2009
Beiträge
1.894
Reaktionspunkte
432
Hallo Leute.
für eines meiner Skripte brauche ich den Filenamen:
Code:
set input to choose file multiple selections allowed yes
tell application "System Events"
    set {nameInfo, sourcePath} to {name of item 1 of input, POSIX path of container of item 1 of input}
end tell
Wenn aber im Filenamen ein "/" ist z.B "soso/lala.txt" kommt der Name als "soso:lala.txt" zurück.
Ich habe es auch mit:
Code:
do shell script "basename " & item 1 of input
versucht aber dann kommt nur noch "lala.txt" an.
Kann man das irgendwie hinbiegen?
 
das / ist halt das pfad trennzeichen bei posix, das mit den : ist halt ein mac pfad.
und bei posix path am besten immer die quoted form of posix path verwerden, damit die leerzeichen usw auch richtig maskiert werden.
du musst halt bei name verhindern, dass der bei einem dateinamen mit / einen mac pfad draus macht.
 
name konvertiert wohl immer automatisch, da wirst du wohl selber mal den alias path als string auswerten müssen mit text delimiter und dann das nach dem letzten doppelpunkt nehmen.
doppelpunkt im dateinamen lässt der finder ja nicht zu, im gegensatz zu slashes.

oder sich das leben leichter machen und keine slashes in dateinamen verwenden.
als multi OS user verwendet man die verschiedenen nicht erlaubten zeichen ja auch irgendwann automatisch nicht mehr.
 
Hallo,

AppleScript und der Skripteditor liefern gerne mal interessante Ergebnisse...

Wandelt man HFS Pfade in POSIX Pfade um, so werden im Pfad enthaltene / durch : ersetzt
System Events kann mit POSIX Pfaden umgehen...und macht das ebenso.
Lies den Namen mit dem Finder aus!
Den Pfad zum Ordner wiederum.... da liefern System Events und Finder ja auch unterschiedliche Ergebnisse (mit oder ohne / am Ende) Wie du es brauchst :)

Gruß
 
da muss man aber dann zwei abfragen basteln, einmal name of mit finder und für den über system events.
pfad posix path of container klappt dann beim finder ja nicht.
 
Code:
tell application "System Events"
    set nameInfo to displayed name of item 1 of input
end tell
Did the trick. Thanks.
 
Zurück
Oben Unten