यह एक अलग दृष्टिकोण से समस्या को समझने में मदद कर सकता है .. मान लीजिए कि आप प्रोग्रामर हैं, जिन पर विंडोज में एक कार्य अनुसूचक जोड़ने का आरोप लगाया गया है। आपको इसे कैसे करना होगा? आपको कई समस्याओं का सामना करना पड़ता है: यदि कार्य उपयोगकर्ता के लॉग इन के अलावा किसी और के रूप में चलाया जाता है, तो क्या आपको किसी भी त्रुटि पॉपअप के साथ उपयोगकर्ता में लॉग इन को परेशान करना चाहिए? यदि कार्य चलने के समय उपयोगकर्ता में कोई लॉग इन नहीं है तो क्या होगा? GUI प्रोग्राम और कंसोल प्रोग्राम के बीच अंतर के बारे में क्या? जीयूआई में स्टड, स्टडआउट और स्टेडर नहीं है; उनमें अवधारणा निरर्थक है। COMMAND.COM/CMD.EXE में आंतरिक या बाहरी कार्यक्रमों के बारे में क्या? या अन्य स्क्रिप्टिंग इंजन? कमांड नाम के रिक्त स्थान वाले रास्तों के बारे में क्या? या मापदंडों (विकल्प / तर्क) में? (जैसा कि आप अभी निपटने की कोशिश कर रहे हैं ..)
हालांकि मैं इस मामले में इंटर्न या पूर्ण तकनीकी विवरण के बारे में 100% निश्चित नहीं हूं, लेकिन उत्तर प्रतीत होते हैं .. कार्य एक पृथक, गैर-संवादात्मक सत्र में चलाए जाते हैं, जो वर्तमान में लॉग इन उपयोगकर्ता के साथ बातचीत नहीं कर सकता है (यदि कोई हो ); यह चलाने की उम्मीद है कि कोई कंसोल आउटपुट नहीं है, क्योंकि यह गैर-संवादात्मक है, यह आउटपुट को दिखाने के लिए किसी भी लॉग इन उपयोगकर्ता को बाधित नहीं कर सकता, किसी भी तरह (और यदि आउटपुट है, तो स्टड बिटबकेट / NULL है, स्टडआउट और strr लॉग इन हो सकता है) सिस्टम लॉगिंग सुविधा); इस मुद्दे को दरकिनार करके रिक्त स्थान को नियंत्रित किया जाता है: कमांड का नाम बिल्कुल वैसे ही लिया जाता है, और कमांड को पास किया जाता है टास्क संपत्तियों में एक और इनपुट बॉक्स में निर्दिष्ट किया जाता है।
सभी साधनों का मतलब यह है कि आपके कार्य को ऐसे चलाया जाना चाहिए जैसे कि यह एक डेमॉन की तरह था (अन * x दुनिया में)। सब कुछ स्थिर और सटीक है। कमांड नाम वास्तविक कमांड नाम है, बिना किसी पैरामीटर के। इसमें अक्सर CMD.EXE जैसे रनिंग कमांड / स्क्रिप्ट दुभाषिए शामिल होते हैं! पैरामीटर, यदि कोई हो, कहीं और निर्दिष्ट किए जाते हैं, और यह ज्ञात होना चाहिए कि जब आप कार्य सेट करते हैं (अर्थात, आप मापदंडों को "ऑन-द-फ्लाई" नहीं बदल सकते हैं)। और इसी तरह।
इसलिए, यदि आप मापदंडों को शामिल करना चाहते हैं, तो आपको मापदंडों को निर्दिष्ट करने के लिए पैरामीटर अनुभाग का उपयोग करना होगा। टास्क शेड्यूलर नहीं करता हैकमांड नाम को पार्स करने के लिए इसे "कमांड" और "आर्ग्स" में विभाजित करने की कोशिश करें जैसे कमांड लाइन प्रोग्राम करते हैं। यह सिर्फ इसे एक बड़ा, पूर्ण कमांड नाम मानता है। इसी तरह, यदि आप परिवर्तनीय पैरामीटर चाहते हैं, जैसे BATCH फ़ाइलों में% 1 ..% n का उपयोग करना, तो आप टास्क शेड्यूल से ऐसा नहीं कर सकते हैं; आपको दूसरा रास्ता खोजना होगा। (ध्यान दें कि आप पर्यावरण चर का उपयोग नहीं कर सकते हैं, या तो, क्योंकि कार्यक्रम के लिए पारित पर्यावरण उस वातावरण पर निर्भर करता है जो कार्य के साथ शुरू किया गया है, "वर्तमान" वातावरण नहीं।) आप मापदंडों को बचाने के लिए एक अस्थायी फ़ाइल का उपयोग कर सकते हैं, लेकिन जब से आप। टास्क गुणों में एक स्थिर फ़ाइल नाम निर्दिष्ट करना चाहिए, जब आप 5000 उपयोगकर्ताओं के साथ नेटवर्क पर होते हैं और उनमें से चार एक ही समय में एक ही कार्य को चलाने की कोशिश करते हैं तो क्या होता है? वे सभी एक दूसरे को एक ही समय में एक ही अस्थायी फ़ाइल में लिखने की कोशिश कर रहे हैं, शायद वह नहीं जो आप चाहते थे। (इस समस्या के समाधान भी हैं, लेकिन यह इस सवाल और जवाब के दायरे से बहुत दूर है ..)
तो अंतिम उत्तर: साधारण मामले में - जिस पथ को आप एक पैरामीटर के रूप में पारित करना चाहते हैं वह स्थिर है और नहीं बदलता है - आपको या तो प्रोग्राम / स्क्रिप्ट बॉक्स के बजाय उपयुक्त टास्क संपत्ति (तर्क) में पैरामीटर निर्दिष्ट करना होगा , या बैच फ़ाइल का उपयोग करें। एक अधिक जटिल मामले में - आपको सही सवाल या शोध करने की आवश्यकता होगी कि डेमॉन कैसे काम करते हैं और लॉकिंग / सेमाफोरेस का उपयोग कैसे करते हैं और इस तरह अंतर-प्रक्रिया संचार (आईपीसी) के लिए।
सौभाग्य।