Unix Pfad aus AppleScript angeben?

CrazyMetal

CrazyMetal

Mitglied
Thread Starter
Dabei seit
21.12.2001
Beiträge
67
Reaktionspunkte
0
Hallo,

ich versuche grade ein AppleScript zu schreiben, welches verschiedene Shell-Scripte ausführt. Ich hole mir mittel "choose folder" den Pfad eines Ordners in AppleScript, allerdings hänge ich momentan an der Funktion die mir das Ganze dann in einen UNIX Pfad ändern soll.

Ich habe mir da eine geschrieben, da wird z.B. aus ":" ein "/" und so weiter, eben für alle möglichen Zeichen die vorkommen können.
Leider nur mit mittelmäßigem Erfolg, momentan tauscht die Funktion noch Dinge die Sie nicht soll. Mein Vorgehen ist, dass ich den ganzen Pfad als einzelne Zeichen "durch kurbel".
Oder gibt es eine Funktion die das automatisch kann und ich habe diese nicht gefunden?

Würde mich über Tipps freuen.

CU,
Nico
 
posix zickt!

Danke, habe ich auch schon probiert.

set myPath to choose folder
set myNewPath to getUnixPath(myPath)


on getUnixPath(thePath)
set newPath to POSIX path of thePath
set theResult to {thePath,newPath}
set thePath to theResult
end getUnixPath


So ungefähr (mal stark gekürtzt). ;)
Allerdings springt er mir (z.B. beim "ls -dl") Befehl aus der Bahn und dieses immer wenn entweder
a) Lücken im Ordnernamen sind ---> "Huddel duddel"
b) Ordnernamen mit Sonderzeichen ----> "Tschöö mit Ö"

Hat jemand eine Idee dafür?

Grüße,
Nico
 
CrazyMetal schrieb:
...ich versuche grade ein AppleScript zu schreiben, welches verschiedene Shell-Scripte ausführt...

Wenn Du magst, nimm dieses: http://flolog.de/osx/?p=23 und pass es einfach an.

CrazyMetal schrieb:
a) Lücken im Ordnernamen sind ---> "Huddel duddel"
b) Ordnernamen mit Sonderzeichen ----> "Tschöö mit Ö"

a: auskommentieren, a la: /Users/Username/Desktop/Test\ Ordner/
b: Sonderzeichen sind bloed

Grüße,
Flo
 
lengsel schrieb:
b: Sonderzeichen sind bloed

Jau sind Sonderzeichen auch :)
Ich habe mir mal einen "Dummy" angelegt und ihm aus dem Terminal angesprochen, das sieht dann so aus:

cd /Volumes/Prophecy/Testen/Hat\ viele\ Leerzeich\ und\ ein\ o\314\210/

Der Ordner heißt "Hat viele Leerzeichen und ein ö"

CU,
Nico
 
einfach zusätzlich einfache Anführungszeichen ' verwenden
do shell script "ls -dl '" & POSIX path of (choose folder) & "'"

Probleme mit Sonderzeichen kann ich nicht nachvollziehen
sicher das es nicht am Leerzeichen in "Tschöö mit Ö" liegt?
 
w2lab schrieb:
einfach zusätzlich einfache Anführungszeichen ' verwenden
do shell script "ls -dl '" & POSIX path of (choose folder) & "'"
Geht auch via script:
Code:
set thePath to quoted form of thePath

Good scripting
Farid
 
Anführungszeichen...

w2lab schrieb:
einfach zusätzlich einfache Anführungszeichen ' verwenden
do shell script "ls -dl '" & POSIX path of (choose folder) & "'"

hi habe grade deinen code ausprobiert und er geht - egal wie viele Hundertausend Sonderzeichen da im Namen sind.

ich habe das probiert:
Code:
set testPath to POSIX path of (choose folder)
do shell script "ls -dl " & testPath

Durch deine Setzung der Anführungszeichen bin ich noch nicht so ganz durchgestiegen, könntest du mir das bitte nochmal erklähren?

Danke schonmal,
Nico
 
CrazyMetal schrieb:
...
Code:
set testPath to POSIX path of (choose folder)
do shell script "ls -dl " & testPath
...

Ich bin mal so frei:

nach do shell script kommt das was dann zusammengebaut den ganzen Befehl ergibt.
Das was Du direkt auf der Kommandozeile tippen würdest ist der Teil zwischen den Anführungszeichen, also "ls -dl ". Das danach sind die Befehlsfragmente die sich aus dem was vorher in dem AS passiert ist ergeben. Das kaufmännische & verbindet die beiden Teile zu dem Gesamtbefehl.

Mir hilft es bei sowas wenn ich mir den zusammengesetzten Befehl wie er ausgeführt werden würde erstmal ansehe. Dazu einfach das do shell script durch display dialog ersetzen. Hier kann ich dann sehen ob ich mir den Befehl passend zusammengebaut habe oder nicht. Wenn der dann mal passt ändere ich einfach wieder das display dialog in do shell script um.

Grüße,
Flo
 
Des Rätsels Lösung?

Hi Flo,

danke für deine Antwort. Schon klar dann habe ich nachher das da stehen:
ls -dl '/Volumes/MeinePladde/undDerOrdner/'

Nur im Terminal schreibe ich das doch auch so:
ls -ld /Volumes/MeinePladde/undDerOrdner/


Oder habe ich da grade was übersehen?

Grüße,
Nico
 
CrazyMetal schrieb:
...danke für deine Antwort. Schon klar dann habe ich nachher das da stehen:
ls -dl '/Volumes/MeinePladde/undDerOrdner/'

Nur im Terminal schreibe ich das doch auch so:
ls -ld /Volumes/MeinePladde/undDerOrdner/
...

Jetzt probier das nochmal mit einem Ordner der Leerzeichen und/oder Sonderzeichen enthält, also in der Art:

Code:
set cmd to "mv " & "'/Users/" & theUser & "/Desktop/.iTeletreiber/Market Drivers/' '/Library/'"
	do shell script cmd

Nur ein Ausschnitt aus einem längeren Script...ich baue hier in den cmd-String die AS-Variable theUser ein, ausserdem hat der Ordner "Market Drivers" ein Leerzeichen. Ich nutze die doppelten Anführungszeichen für den "allgemeinen" Teil, um Kommandos mit AS-Variablen zu verbinden. Zusätzlich sind die Pfadangaben in einfache Anführungszeichen gesetzt.

Grüße,
Flo
 
Zurück
Oben Unten