Dapatkan path folder induk dari lokasi skrip: Applescript

9

Latar Belakang: Saya mencoba untuk menulis aplikasi applescript sederhana yang akan meluncurkan aplikasi tcl, tetapi saya terjebak pada bagian pertama skrip.

Saya perlu mendapatkan folder induk path ke applescript. Ketika saya menjalankan kode ini:

set LauncherPath to path to me
set ParentPath to container of LauncherPath

... Saya mendapatkan kesalahan ini:

error "Can’t get container of alias \"Macintosh HD:Users:simon:Downloads:folder with spaces:CrossFire-master:CrossFire Launcher for Mac.app:\"." number -1728 from container of alias "Macintosh HD:Users:simon:Downloads:folder with spaces:CrossFire-master:CrossFire Launcher for Mac.app:"

Setelah membaca jawaban ini , saya mencoba ini:

set LauncherPath to path to me
set RealLauncherPath to first item of LauncherPath
set ParentPath to container of RealLauncherPath

... tapi saya mendapat kesalahan ini:

error "Can’t get item 1 of alias \"Macintosh HD:Users:simon:Downloads:folder with spaces:CrossFire-master:CrossFire Launcher for Mac.app:\"." number -1728 from item 1 of alias "Macintosh HD:Users:simon:Downloads:folder with spaces:CrossFire-master:CrossFire Launcher for Mac.app:"

Setiap bantuan atau ide sangat dihargai. Terima kasih sebelumnya!

PS begitu saya mengetahui masalah di atas, skrip lengkap akan menjadi seperti ini:

set LauncherPath to path to me
set RealLauncherPath to first item of LauncherPath
set ParentPath to container of RealLauncherPath
set UnixPath to POSIX path of ParentPath
set launcherCrossFire to "/usr/local/bin/wish " & UnixPath & "/CrossFire.tcl > /dev/null &" -- creat command to launch CrossFire
do shell script launcherCrossFire

UPDATE: Berikut skrip yang berfungsi menggabungkan jawaban di bawah ini:

set UnixPath to POSIX path of ((path to me as text) & "::") --get path to parent folder
set LaunchCrossFire to "/usr/local/bin/wish '" & UnixPath & "CrossFire.tcl' > /dev/null 2>&1 &" -- creat command to launch CrossFire
do shell script LaunchCrossFire -- run command
Simon
sumber

Jawaban:

17

Mencoba:

set UnixPath to POSIX path of ((path to me as text) & "::")
adayzdone
sumber
Terima kasih, adayzdone! Saya memposting kode terakhir di atas dalam pertanyaan awal. Saya punya satu masalah lagi. Aplikasi peluncur tidak menutup setelah menjalankannya. Apakah Anda punya ide untuk mengatasinya? Saya pikir mengirim output ke dev / null akan menghentikan itu terjadi ...
Simon
Namun, saya menemukan jawabannya di sini . Saya menambahkan "/ dev / null 2> & 1 &" ke akhir perintah alih-alih hanya "/ dev / null &".
Simon
1

Anda harus menjalankan skrip dari dalam 'Tell Block' seperti:


tell application "Finder"
get path to me

set a to container of the result
return (a as alias)
-- Or just get the name of the Parent Container like;
set b to name of a
return b
end tell
Capitainos
sumber