Ottieni componenti (percorso e nome file) del percorso file POSIX

2

Data:

~ / Desktop / Foo.scpt contiene:

(POSIX path of (path to me)) as text

Che restituisce:

/Users/[username]/Desktop/Foo.scpt

Come ottengo il percorso /users/[username]/Desktop/ e il nome file Foo.scpt come pezzi singoli?

    
posta craig 09.09.2013 - 00:24
fonte

3 risposte

6

Basta chiedere a Finder che sa come farlo :)

tell application "Finder"
     set parentpath to POSIX path of (parent of (path to me) as string)
     set filename to name of (path to me)

     display dialog parentpath
     display dialog filename
 end tell
    
risposta data 09.09.2013 - 01:00
fonte
1

Questo dovrebbe funzionare:

-- This script returns the full path to the directory that this script is running in

-- get the full path to be split
set pathToMe to POSIX path of (path to me as text)

-- get the path to the directory
set script1 to "dirname '" & pathToMe & "'"
set dirPath to do shell script script1

-- get the file name
set script2 to "basename '" & pathToMe & "'"
set fileName to do shell script script2

-- display the results
display dialog "Directory Path: " & dirPath & return & return & "File Name: " & fileName
    
risposta data 09.09.2013 - 02:39
fonte
1

Un'altra opzione è usare i delimitatori di elementi di testo:

set text item delimiters to "/"
POSIX path of (path to me)
text item -1 of result -- "Untitled.scpt"

Se il percorso può terminare con una barra, puoi utilizzare un gestore come questo:

on basename(x)
    if x is "/" then return "/"
    if item -1 of x is "/" then set x to text 1 thru -2 of x
    set text item delimiters to "/"
    text item -1 of x
end basename

basename("/dir1/dir2/file.txt") -- "file.txt"
basename("/dir1/") -- "dir1"
basename("/dir1/dir2/") -- "dir2"
basename("/dir1/dir2") -- "dir2"
basename("/") -- "/"

Si noti che text item delimiters è una proprietà dell'oggetto AppleScript (non locale per la funzione), ma per quanto ne so, non è necessario ripristinare la proprietà dei delimitatori degli elementi di testo se non si fa affidamento su di esso più avanti nello script.

    
risposta data 09.09.2013 - 14:52
fonte

Leggi altre domande sui tag