मैं एक AppleScript कैसे बना सकता हूं जो एक विशिष्ट समय पर एक एप्लिकेशन छोड़ देगा और फिर कंप्यूटर को सोने के लिए डाल देगा?


8

मैं काम करने के लिए इस चीज़ को पाने के लिए AppleScript और Automator के साथ आस-पास रहा हूँ, लेकिन मैं अभी इसके चारों ओर अपना सिर नहीं लपेट सकता। अगर कोई मुझे एक उदाहरण दिखा सकता है या मुझे कुछ सुझाव दे सकता है कि मैं एक विशिष्ट समय पर बंद करने के लिए एक आवेदन कैसे सेट कर सकता हूं और फिर कंप्यूटर को सोने या बंद करने के लिए रखूं, तो यह बहुत सराहना की जाएगी।


क्या आप इसे नियमित रूप से करना चाहेंगे या यह कुछ ऐसा है जिसे आप मैन्युअल रूप से आरंभ करना चाहते हैं?
इफ्सिथ

क्या आपके पास AppleScript पहले से लिखा है?
एफिशिथ

यह कुछ ऐसा है जिसे मैं नियमित रूप से करना चाहूंगा और इसे शुरू करने के बारे में चिंता नहीं करनी चाहिए। मेरे पास एक पटकथा लिखी गई थी, लेकिन यह काफी गड़बड़ थी इसलिए मैंने इसे रौंद दिया और यहीं समाप्त हो गया। आपके उत्तर के लिए धन्यवाद। मैं इसे एक रास्ता दूंगा और उम्मीद है कि यह उन मुद्दों को साफ करता है जो मैं कर रहा हूं।
टॉमस रिचर्डसन

यदि आप चाहते हैं कि यह नियमित रूप से किया जाए, तो आप जो चाहते हैं, atवह नहीं है। cronया launchd। यदि आप इसे स्थापित करने के लिए एक आसान इंटरफ़ेस चाहते हैं, तो शायद lingon 3 मदद करेगा।
ephsmith

जवाबों:


14

मैं यह मान रहा हूं कि आप इस प्रक्रिया को आरंभ करने के विपरीत चाहते हैं क्योंकि यह नियमित रूप से निर्धारित समय पर चलती है।

मेरा दृष्टिकोण कमांड लाइन से इसे शुरू करने के लिए होगा, लेकिन किसी भी कमांड को एक स्वचालित स्क्रिप्ट के शेल स्क्रिप्ट घटक में किसी भी संशोधन के साथ चलाया जा सकता है। निम्नलिखित दृष्टिकोण काम पूरा करने के लिए कुछ घटकों को जोड़ती है:

  1. एक tellआदेश आवेदन छोड़ने की
  2. कंप्यूटर को सोने के लिए रखने के लिए एक कमांड-लाइन कॉल
  3. एक विशिष्ट समय के लिए 1 और 2 अनुसूची करने के लिए एक कमांड-लाइन कॉल।

1. आवेदन छोड़ने के लिए कह रहा है

यह उतना ही सरल हो सकता है:

osascript -e 'tell application "AppName" to quit'

2. सोने के लिए कंप्यूटर लगाना

pmsetअधिक जानकारी के लिए एक नज़र है , लेकिन निम्नलिखित आदेश जारी करने से आपके कंप्यूटर को नींद आ जाएगी:

pmset sleepnow

3. एक विशेष समय पर चलाए जाने वाले ऑपरेशन को शेड्यूल करना

पर एक नज़र डालें पर आदेश। यह कमांड आपको चलाने के लिए कमांड के लिए एक समय निर्दिष्ट करने की क्षमता देता है। आपको इस कार्यक्षमता को सक्षम करने की आवश्यकता होगी क्योंकि यह डिफ़ॉल्ट रूप से नहीं है। atrunडेमन को सक्षम करने के लिए , निम्न कमांड [SU पर संदर्भ] चलाएं :

sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist

एक बार जब आप सक्षम हो जाते हैं atrun, तो किसी भी आदेश को जारी करके विशिष्ट समय के लिए निर्धारित किया जा सकता है

echo "<command>" | at HH:MM

जो काम करता है क्योंकि atयह stdinडिफ़ॉल्ट रूप से इनपुट है । फ़ाइल में सूचीबद्ध कमांड चलाने के लिए एक सरल तरीका है। -fझंडे का उपयोग करके एक फ़ाइल को निष्पादित किया जा सकता है , इसके बाद स्क्रिप्ट का नाम इस तरह चलाया जाएगा:

at -f /path/to/file HH:MM

यह सब एक साथ डालें

जो इस प्रकार atrunसक्षम है, वह मानता है । एक खिलौने के उदाहरण के रूप में, मान लीजिए कि मैं मेल छोड़ना चाहता हूं और कंप्यूटर को रात के 11 बजे तक सोना चाहता हूं। मैं एक फ़ाइल बनाऊंगा जिसमें कमांड है जिसे मैं निम्नानुसार चलाना चाहता हूं:

osascript -e 'tell application "Mail" to quit'
pmset sleepnow

उस फाइल को सेव करें quit-and-sleepऔर फिर कमांड लाइन पर रन करें

at -f /path/to/quit-and-sleep 23:00

चेतावनियां

मैंने यह सुनिश्चित करने के लिए कोई जाँच नहीं की कि मेल वास्तव में बंद है। स्क्रिप्ट यह भी मानती है कि कंप्यूटर को सोने के लिए रखने के अलावा और कुछ नहीं मिलने वाला है। मैंने इसे यहाँ सरल रखा है जो आप चाहते हैं के लिए एक शुरुआती बिंदु के रूप में।


1

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

--Get time setting for action to occur
set t to "3:16:30 PM"
--build a time string to use as a target.
set cd to (current date) as text
set AppleScript's text item delimiters to " "
set targetTime to text items 1 thru -3 of cd
set targetTime to date ((targetTime as text) & " " & t)

repeat while (current date) < targetTime
    beep
    delay 30 -- check the time every 30 seconds
end repeat

tell application "Mail"
    quit
end tell

tell application "Finder"
    display dialog "Do you want to shut the computer down now?"
    if button returned of the result is "Ok" then
        shutdown
    end if
end tell

1

आप किसी कार्यक्रम को एक बार यहां से देख सकते हैं:

at 23:59 <<< 'osascript -e "quit app \"Mail\""; pmset sleepnow'

या फिर इसे हर दिन दोहराने के लिए, साथ में कोंट्राब संपादित करें EDITOR=nano crontab -eऔर इस तरह एक प्रविष्टि जोड़ें:

59 23 * * * osascript -e 'quit app "Mail"'; pmset sleepnow

23:59 बजे <<< 'ऑसस्क्रिप्ट' में "ऐप छोड़ो" "मेल \" "; pmset sleepnow 'मेरे लिए काम नहीं करता है। यह "जॉब 1 एट सैट 30:30 12:47:00 2016" कहता है, लेकिन समय आने पर कमांड नहीं चलाता
ऑक्युमैन

0

यहां वह कोड है जो वर्तमान एप्लिकेशन को छोड़ने और सोने जाने से पहले कुछ सेकंड इंतजार करेगा।

delay (your amount of seconds here)
tell application "System Events"
    key down {command}
    keystroke "q"
    key up {command}
    set volume "1"
    say "computer going to sleep"
    tell application "Finder"
        sleep
    end tell
end tell
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.