আমি কীভাবে এমন অ্যাপলস্ক্রিপ্ট তৈরি করব যা নির্দিষ্ট সময়ে কোনও অ্যাপ্লিকেশনটি ছেড়ে দেবে এবং তারপরে কম্পিউটারকে ঘুমাতে দেবে?


8

এই জিনিসটি কাজ করার জন্য আমি অ্যাপলস্ক্রিপ্ট এবং অটোমেটরের সাথে ঝাঁপিয়ে পড়েছি, তবে আমার মাথাটি এটির চারপাশে জড়িত মনে হয় না। যদি কেউ আমাকে একটি উদাহরণ দেখায় বা নির্দিষ্ট সময়ে বন্ধ করার জন্য কীভাবে একটি অ্যাপ্লিকেশন সেট করতে পারি এবং তারপরে কম্পিউটারকে ঘুমাতে বা শাটডাউন করতে পারি সে সম্পর্কে কিছু টিপস দিতে পারলে এটি প্রশংসিত হবে।


আপনি কি নিয়মিত এটি করতে চান বা এটি নিজে যা নিজেই শুরু করতে চান?
এফস্মিথ

আপনার কাছে ইতিমধ্যে অ্যাপলস্ক্রিপ্ট লেখা আছে?
এফস্মিথ

এটি এমন কিছু যা আমি নিয়মিত করতে চাই এবং শুরু করার বিষয়ে চিন্তা করতে হবে না। আমার কাছে একটি স্ক্রিপ্ট লেখা আছে তবে এটি যথেষ্ট অগোছালো তাই আমি এটি ট্র্যাশে ফেলে এখানে এসেছি। আপনার উত্তরের জন্য ধন্যবাদ. আমি এটি দিয়ে যাব এবং আশা করি এটি আমার যে সমস্যাগুলি হয়েছে তা সরিয়ে দেবে।
টমস রিচার্ডসন

আপনি যদি নিয়মিত এটি করতে চান, তবে কাজের সময় নির্ধারণ atআপনি যা চান তা নয়। cronবা launchd। যদি আপনি এটি সেট আপ করার জন্য আরও সহজ ইন্টারফেস চান তবে সম্ভবত লিঙ্গন 3 সহায়তা করবে।
এফস্মিথ

উত্তর:


14

আমি ধরে নিচ্ছি যে আপনি নিয়মিত নির্ধারিত সময়ে এটি চালানোর বিপরীতে আপনি এই পদ্ধতিটি শুরু করতে চান like

আমার পন্থাটি কমান্ড লাইন থেকে এটি সূচনা করা হবে, তবে কোনও কমান্ড কিছু সংশোধন করে একটি স্বয়ংক্রিয় স্ক্রিপ্টের শেল স্ক্রিপ্ট অংশে চালানো যেতে পারে। নিম্নলিখিত পদ্ধতিটি কাজটি সম্পন্ন করার জন্য কয়েকটি উপাদানকে একত্রিত করেছে:

  1. tellঅ্যাপ্লিকেশনটি প্রস্থান করার জন্য একটি আদেশ
  2. কম্পিউটারকে ঘুমানোর জন্য একটি কমান্ড-লাইন কল
  3. একটি নির্দিষ্ট সময়ের জন্য 1 এবং 2 তফসিলের জন্য একটি কমান্ড-লাইন কল।

1. অ্যাপ্লিকেশনটি ছাড়ার কথা বলা হচ্ছে

এটি এতটা সহজ হতে পারে:

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

2. কম্পিউটার ঘুমানোর জন্য

কটাক্ষপাত আছে pmsetআরো বিস্তারিত জানার জন্য, কিন্তু নিম্নলিখিত কমান্ডের ঘুম আপনার কম্পিউটার করা হবে:

pmset sleepnow

৩. নির্দিষ্ট সময় চালানোর জন্য একটি অপারেশন নির্ধারিত

কটাক্ষপাত আছে কমান্ড। এই কমান্ডটি আপনাকে কমান্ড চালানোর জন্য একটি সময় নির্দিষ্ট করার ক্ষমতা দেয়। আপনার এই কার্যকারিতাটি সক্ষম করতে হবে কারণ এটি ডিফল্টরূপে নয়। atrunডেমন সক্ষম করতে , নিম্নলিখিত কমান্ডটি চালান [এসইউতে রেফারেন্স] :

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সক্ষম। খেলনার উদাহরণ হিসাবে, ধরা যাক যে আমি মেলটি ছেড়ে দিতে এবং কম্পিউটারটিকে 11PM এ ঘুমাতে চাই। আমি কমান্ডগুলি সহ একটি ফাইল তৈরি করব যা আমি নিম্নলিখিতভাবে চালাতে চাই:

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 <<< 'osascript -e "অ্যাপ্লিকেশনটি quit" মেল \ "ছাড়ুন; পিএমসেট ঘুমানো আমার পক্ষে কাজ করে না। এটি বলেছে "শনিবার এপ্রিল 30 12:47:00 2016 এ চাকরি 1" তবে সময়
পেলে

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.