स्क्रिप्ट स्थान के मूल फ़ोल्डर का पथ प्राप्त करें: 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 2> & 1 &" को केवल "/ dev / null &" के बजाय कमांड के अंत में जोड़ा।
साइमन

1

आपको स्क्रिप्ट को 'टेल ब्लॉक' के भीतर से चलाना चाहिए जैसे:


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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.