Nhận đường dẫn của thư mục mẹ của vị trí tập lệnh: Applescript


9

Bối cảnh: Tôi đang cố gắng viết một ứng dụng applescript đơn giản sẽ khởi chạy một ứng dụng tcl, nhưng tôi đang bị kẹt ở phần đầu tiên của kịch bản.

Tôi cần lấy thư mục cha của đường dẫn đến applescript. Khi tôi chạy mã này:

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

... Tôi nhận được lỗi này:

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:"

Sau khi đọc câu trả lời này , tôi đã thử điều này:

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

... nhưng tôi đã gặp lỗi này:

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:"

Bất kỳ trợ giúp hoặc ý tưởng nhiều đánh giá cao. Cảm ơn trước!

PS một khi tôi tìm ra các vấn đề trên, kịch bản đầy đủ sẽ giống như thế này:

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

CẬP NHẬT: Đây là kịch bản làm việc kết hợp câu trả lời dưới đây:

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

Câu trả lời:


17

Thử:

set UnixPath to POSIX path of ((path to me as text) & "::")

Cảm ơn, adayzdone! Tôi đã đăng mã cuối cùng ở trên trong câu hỏi ban đầu. Tôi có một vấn đề nữa. Ứng dụng launcher không đóng sau khi chạy nó. Bạn có bất cứ ý tưởng làm thế nào để làm việc xung quanh đó? Tôi nghĩ rằng việc gửi đầu ra tới dev / null sẽ ngăn điều đó xảy ra ...
Simon

Nevermind, tôi tìm thấy câu trả lời ở đây . Tôi đã thêm "/ dev / null 2> & 1 &" vào cuối lệnh thay vì chỉ "/ dev / null &".
Simon

1

Bạn nên chạy tập lệnh từ bên trong 'Tell Block' như:


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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.