스크립트 위치의 상위 폴더 경로 가져 오기 : Applescript


9

배경 : tcl 앱을 시작하는 간단한 애플 스크립트 앱을 작성하려고하는데 스크립트의 첫 부분에 붙어 있습니다.

애플 스크립트 경로의 상위 폴더를 가져와야합니다. 이 코드를 실행할 때 :

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

...이 오류가 발생합니다.

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

이 답변을 읽은 후 시도했습니다.

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

...하지만이 오류가 발생했습니다 :

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

어떤 도움이나 아이디어라도 대단히 감사합니다. 미리 감사드립니다!

추신 : 위의 문제를 파악하면 전체 스크립트는 다음과 같습니다.

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

업데이트 : 아래 답변을 통합 한 작업 스크립트가 있습니다.

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

답변:


17

시험:

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

고마워, adayzdone! 원래 질문에 위의 최종 코드를 게시했습니다. 하나 더 문제가 있습니다. 실행기 앱은 실행 한 후에 닫히지 않습니다. 그 문제를 해결하는 방법에 대한 아이디어가 있습니까? dev / null로 출력을 보내면 그 결과가 발생하지 않을 것이라고 생각했습니다.
Simon

신경 쓰지 마, 나는 여기서 대답을 찾았다 . 명령 끝에 "/ dev / null &"대신 "/ dev / null 2> & 1 &"를 추가했습니다.
Simon

1

다음과 같은 'Tell Block'내에서 스크립트를 실행해야합니다.


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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.