(पुराने?) खुले फ़ोल्डर कमांड के साथ सिंटैक्स त्रुटि


-2

मैं AppleScript 1-2-3 (2009) के माध्यम से अपना काम कर रहा हूं और इस उदाहरण को चलाने के लिए प्रतीत नहीं कर सकता:

tell application "Finder" 
    close every window
    open home
    set toolbar visible of the front Finder window to true
    set the sidebar width of the front Finder window to 135
    set the current view of the front Finder window to column view
    set the bounds of the front Finder window to {36, 116, 511, 674}
    set folder "Documents" of home
    set toolbar visible of the front Finder window to false
    set the current view of the front Finder window to flow view
    set the bounds of front Finder window to {528, 116, 1016, 674}
    select the last finder window
end tell

पार्सर ने set folderकमांड पर चुटकी लेते हुए कहा, "इस संपत्ति के बाद लाइन का एक छोर नहीं जा सकता।" जब तक मैंने पंगा नहीं लिया (पूरी तरह से संभव है), या पुस्तक सिर्फ गलत है, 2009 के बाद से भाषा बदल गई होगी। यदि हां, तो कैसे?

अपडेट: उत्तर और टिप्पणियां (पढ़ने लायक!) मुझे समझाती हैं कि किताबें सिर्फ गलत हैं।


set folder "Documents" of homeआपके प्रश्न से कोड की प्राथमिक वजह , त्रुटियां हैं, क्योंकि यह वाक्य-रचना सही नहीं है! इसके सिंटैक्स और उदाहरणों के लिए AppleScript लैंग्वेज गाइड में कमांड पर एक नज़र डालें ! set
user3439894

मुझे यकीन है कि आप सही हैं, लेकिन मुझे देखने के लिए कह रहे हैं और भाषा गाइड सहायक नहीं है। मैं लगभग 15 मिनट के लिए एप्सस्क्रिप्ट का अध्ययन कर रहा हूं; अज्ञानता की मेरी वर्तमान स्थिति में भाषा गाइड का जिक्र ऑक्सफोर्ड इंग्लिश ग्रामर के माध्यम से एक भ्रमित ईएसएल छात्र की तरह होगा! बेकार है कि "Apple प्रमाणित" पुस्तक में ऐसी बुनियादी त्रुटि है। और पहले 39 पृष्ठों में!
आइजैक राबिनोविच

ओह, एफएफएस। मैं स्वीकार कर सकता हूं कि कुछ लोग सोच सकते हैं कि यह बुरा सवाल है। लेकिन यह बताए बिना कि यह बचकाना है कि सिर्फ बचकाना क्यों है।
इसहाक राबिनोविच

1
आपकी टिप्पणी के जवाब में "मुझे दिखने के लिए और भाषा गाइड सहायक नहीं है", मुझे लगता है कि सलाह @ user3439894 ने आपको (देखो और भाषा गाइड) की ओर बढ़ाया, "उपयुक्त" मृत था। केवल खुद के लिए बोलना (लेकिन मुझे यकीन है कि अन्य लोग सहमत होंगे), लर्निंग AppleScript बिल्कुल उसी की एक प्रक्रिया रही है .. भाषा गाइड पढ़ना, और उदाहरण, बार-बार और (भले ही ऐसा लगे कि जैसे मैं जापानी पढ़ रहा था)
wch1zpink

मुझे लगता है कि आपकी टिप्पणी बिंदु याद आती है। मैं अच्छी तरह से आपकी सलाह का पालन कर सकता हूं (खासकर अगर मैं अधिक बेवकूफ गलतियों में भागता हूं), लेकिन अभी मैं इस पुस्तक को पढ़ने की कोशिश कर रहा हूं । आपकी सलाह "उस मूर्खतापूर्ण पुस्तक को बाहर निकालने और भाषा के मैनुअल को पढ़ने के लिए आती है।" जो अच्छी तरह से अच्छी सलाह हो सकती है, लेकिन मुझे काम में मदद नहीं करती है।
इसहाक रैबिनोविच

जवाबों:


1

2009 से AppleScript कैसे बदल सकता है, के आपके विशिष्ट प्रश्न का उत्तर देने के लिए, मैं तब से आज तक विकसित किए गए असंख्य तरीकों की कोशिश नहीं करूंगा और अनुमान लगा सकता हूं (और मैं 2009 या उससे पहले भाषा के दस्तावेज नहीं खोज सका), लेकिन मैं इसे उजागर कर सकता हूं वर्तमान सूत्रीकरण जैसा कि आपके कोड स्निपेट से संबंधित है। अर्थात्, आपकी स्क्रिप्ट त्रुटि को फेंक रही है, जिसमें सिंटैक्स त्रुटि है set folder "Documents" of home

जिस तरह से setकमांड को परिभाषित किया गया है (वर्तमान संस्करण) AppleScript है:

[के लिए] एक या अधिक चर के लिए एक या एक से अधिक मूल्यों के [मानसिक ] असाइन करें

इसमें निम्नलिखित सिंटैक्स है:

अभिव्यक्ति के लिए चर चर सेट करें

variablePatternएक चर या चर की सूची का नाम कहां है, और expressionउस मान के लिए मूल्यांकन करता है जिसे चर को सौंपा जाएगा।

(नोट: AppleScript लैंग्वेज गाइड बताता है कि घोषणा के बाद का आधा हिस्सा यानी to %expression%वैकल्पिक है। हालाँकि, मैं एक ऐसे उदाहरण के बारे में नहीं सोच सकता जिसके लिए यह सच है, और, जहाँ तक मुझे पता है, हमेशा पूर्ण सिंटैक्स का पालन setकरना चाहिए। ऊपर उल्लिखित है। शायद यह उन तरीकों में से एक है जो भाषा बदल गई है ...?)

तो, सीधे शब्दों में कहें, setहमेशा एक चीज का मूल्य लेने के लिए और इसे दूसरे को सौंपने के लिए उपयोग किया जाता है , ठीक उसी तरह जैसे आपके कोड की सभी अन्य रेखाएं स्निपेट करती हैं।

निम्नलिखित पंक्ति में:

    set folder "Documents" of home

हमारे पास केवल आधी घोषणा है: एक वस्तु (एक फ़ोल्डर, इस मामले में) प्रदान करके कमांड शुरू होती है जो एक नया मान लेना चाहता है, लेकिन फिर यह बताने के लिए नहीं जाता है कि नया मान क्या होना चाहिए।

इसके अलावा, folderऑब्जेक्ट आमतौर पर एक ऐसा नहीं है जिसे स्वयं मान निर्दिष्ट किए जा सकते हैं। कोई आदेश नहीं दे सकता:

    set folder "Documents" of home to desktop

हालांकि, एक कर सकते हैं आवंटित folderवस्तु कुछ और करने के लिए, इस तरह के एक चर या की तरह एक मौजूदा संपत्ति के मूल्य, के रूप में targetएक की संपत्ति Finder window:

    set the target of the front Finder window to folder "Documents" of home

setआदेश अभिव्यक्ति के मूल्य का उपयोग करने के निर्देश देते हुए AppleScript है folder "Document" of home(जो हार्ड ड्राइव पर एक स्थान संदर्भ का मूल्यांकन) और के लिए असाइन करें targetकी संपत्ति front Finder window(जो जो निर्देशिका खिड़की में दिखाया गया है नियंत्रित करता है)। जैसा कि आप अपेक्षा करते हैं, यह सक्रिय खोजक विंडो की निर्देशिका को होम निर्देशिका से दस्तावेज़ निर्देशिका में स्विच करने का कारण बनता है ।

यह एक अप्रत्याशित वांछित परिणाम की तरह लगता है एक भी करने के लिए इन कार्यों के सभी आवेदन के रूप में खोजक खिड़की का मतलब है कि पूर्ववर्ती लाइनों कुछ हद तक ज़रूरत से ज़्यादा हैं: खोलने के लिए कोई ज़रूरत नहीं होगा होम फ़ोल्डर और उसकी गुण सेट ( toolbar visible, sidebar width, current viewऔर bounds), उसके बाद ही निर्देशिका बदलने के लिए और इन सभी गुणों को नए मूल्यों पर सेट करें।

इसलिए मुझे लगता है कि सबसे अधिक संभव समाधान उनके उत्तर में @ wch1zpink द्वारा इंगित किया गया है, जो कि दस्तावेज़ फ़ोल्डर के स्थान पर एक नई खोजक विंडो खोलना है ।

मैंने इसे ठीक उसी तरह चुना, जिस तरह स्क्रिप्ट ने होम फोल्डर के साथ ऐसा किया था :

    open folder "Documents" of home

जो समस्या रेखा को पूरी तरह बदल देता है। इसलिए परिणामस्वरूप स्क्रिप्ट में दो खिड़कियों के निर्माण और हेरफेर करने के तरीके में एक मनभावन समरूपता है:

    tell application "Finder"
        activate
        close every window

        open home
        set toolbar visible of the front Finder window to true
        set the sidebar width of the front Finder window to 135
        set the current view of the front Finder window to column view
        set the bounds of the front Finder window to {36, 116, 511, 674}

        open folder "Documents" of home
        set toolbar visible of the front Finder window to false
        set the current view of the front Finder window to flow view
        set the bounds of front Finder window to {528, 116, 1016, 674}

        select the last Finder window
    end tell

openआदेश, जाहिर है, एक नया खोलता खोजक निर्दिष्ट स्थान पर खिड़की, लेकिन यह भी है कि नया खोजक खिड़की सामने खोजक खिड़की

इससे, यह देखना आसान है कि setबयानों का पहला ब्लॉक एक खोजक विंडो के लिए है; और दूसरा ब्लॉक दूसरे के लिए है।

उम्मीद है, मैंने आपकी क्वेरी को सीधे संबोधित किया है और एक स्पष्टीकरण प्रदान किया है जो समझ में आता है। अगर मैंने जो कुछ भी लिखा है, तो मुझे क्षमा करें, जो मुझे लगता है कि संरक्षक है: मैंने यह मानने से बचने की कोशिश की कि आप क्या करते हैं और AppleScript के बारे में नहीं जानते हैं, इस बात के सबूत के बावजूद कि आप स्पष्ट रूप से कोई नौसिखिया नहीं हैं (सुपर यूजर पर 2.5K प्रतिष्ठा)। दूसरी ओर, अगर मैंने जो कुछ भी लिखा है वह अस्पष्ट या खराब तरीके से समझाया गया है, तो मुझे बताएं, और मैं खुशी से या उपयुक्त रूप में फिर से शब्द स्पष्ट कर दूंगा।


1
आपके "नोट: द AppleScript लैंग्वेज गाइड स्टेट्स ..." के बारे में, मेरा मानना ​​है कि संदर्भ में, अभिव्यक्ति वैकल्पिक है कि इसमें भी इसे सेट किया जा सकता है "", जिसे ऐप्पल शायद एक अभिव्यक्ति के रूप में नहीं मान सकता है, क्योंकि ""यह शाब्दिक रूप से कुछ भी नहीं है लेकिन यह इनिशियलाइज़ करता है चर , जो अपने उपयोग हैं। यह या तो कुछ ऐसा है या खराब दस्तावेज़ीकरण है, जिसे केवल Apple ही संबोधित कर सकता है यदि वह बाद का हो।
user3439894

धन्यवाद, यह ठीक मेरे सवाल का जवाब देता है। (शायद मेरी आवश्यकता से अधिक विवरण में, लेकिन इसमें कोई बुराई नहीं है।) आप मुझे संदेह करते हैं कि यह भाषा में बदलाव नहीं है, लेकिन एक साधारण गलती और वास्तव में इसे चलाने से उदाहरण की जांच करने में विफलता है। किंडा मुझे आश्चर्य होता है कि किताब कितनी अच्छी तरह से क्यूए है।
इसहाक रैबिनोविच

-1

यदि कोड की इस पंक्ति के साथ आपका इरादा ... set folder "Documents" of homeक्या "दस्तावेज़" फ़ोल्डर को प्रदर्शित करने वाली वर्तमान खोजक विंडो है, तो बस इस लाइन set folder "Documents" of homeको इस से बदलें ...

set theFolder to folder "Documents" of home
open theFolder

मेरा इरादा जैसा कहा गया है: पता करें कि मुझे वाक्य रचना त्रुटि क्यों मिल रही है।
इसहाक राबिनोविच
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.