একটি তফসিল টাস্কে পরিবেশের ভেরিয়েবল অ্যাক্সেস করা


14

একটি নির্ধারিত টাস্ক সেট আপ করার সময়, অ্যাকশন বিভাগের জন্য আমি চালানোতে চাইলে নির্বাহযোগ্যের অবস্থানের জন্য পরিবেশের পরিবর্তনশীল অ্যাক্সেস করার চেষ্টা করছি। এই প্রধানত কারণ এক মেশিনে এক্সিকিউটেবল সি হতে পারে: অন্য তে এটি ডি হতে পারে: আমি যাচাই করেছি যে যদি আমি একটি হার্ড কোডেড পাথ আমার নির্ধারিত কাজের রানে ব্যবহার করেন, কিন্তু যদি আমি কর্ম বিন্দু পরিবর্তন "%MyAppPath%\MyApp.exe"টাস্ক আরম্ভের ব্যর্থতা শুরু করবে না। আমি যাচাই করেছি যে পরিবেশের পরিবর্তনশীল সেট আপ হয়েছে।

পরিবেশের ভেরিয়েবলটি উল্লেখ করার জন্য টাস্ক শিডিয়ালের অংশ (এবং ওয়ার্কিং ডিরেক্টরি) এর ভিতরেও কি এটি সম্ভব - আমার বাক্য গঠনটি ভুল।

পাশের নোটটিতে, আমি একটি বিএটি ফাইল কল করতে এবং সেখানে পরিবেশের ভেরিয়েবলটি উল্লেখ করার বিষয়ে চিন্তাভাবনা করেছি, তবে এটি আমার পক্ষে কিছুই সমাধান করতে পারে না কারণ মূল সমস্যাটি আসলে (এবং ব্যাটের ফাইলটিও) সিটিতে রয়েছে কিনা তা জানাচ্ছে: বা ডি: ড্রাইভ - ড্রাইভের ভিতরেই পথটি একই।

আপডেট : দেখা যাচ্ছে আপনি এগুলি মেশিন রিবুট দিয়ে ব্যবহার করতে পারেন তবে সম্ভবত আরও ভাল উপায় আছে

উত্তর:


23

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


আপনাকে ধন্যবাদ এমকিউহ! আমি কয়েক দিন ধরে এটির সাথে লড়াই করে যাচ্ছি। আমি উইন / / উইন ২০০৮ এ সিডিউলার পরিষেবাটি পুনরায় আরম্ভ করার চেষ্টা করছি (এটি পুনরায় চালু করার জন্য সিস্টেম হিসাবে চালানো দরকার), তবে এটি এত সহজ!
তৈমুর

2

আমি ভেবেছিলাম যে আপনি টাস্ক শিডিয়ুলার থেকে পরিবেশের পরিবর্তনগুলি উল্লেখ করতে পারেন, তবে কেবল চেষ্টা করে দেখে মনে হচ্ছে আপনি পারছেন না।

একটি ব্যতিক্রম বলে মনে হয় %PATH%তাই প্রতিটি মেশিনের সংগ্রহের MyAppPathসাথে আপনার মূল্য যুক্ত করা সম্ভব হবে %PATH%, তবে কেবল MyApp.exeটাস্ক শিডিয়ুলারের কাছ থেকে কল করুন , যেখানে মেশিনটি প্রয়োজনীয়ভাবে পুরোপুরি যোগ্য পথটি সমাধান করতে সক্ষম হবে?


1
আকর্ষণীয়, আমি মাত্র% PATH% দিয়ে চেষ্টা করেছি এবং এটি কাজ করতে পারিনি। এই সময়ে আমি একটি বোকা টাইপো লক্ষ্য করেছিলাম যখন আমি% PATH% আপডেট করেছি। আমি টাইপ ঠিক করেছিলাম এবং যাচাই করেছিলাম যে কোনও ডস বাক্সে PATH ঠিক আছে, তবে কার্য নির্ধারিত এখনও সমস্যাটি জানিয়েছিল - এটি নির্দেশ করে যে এটি% PATH% এর "খারাপ" সংস্করণটি দেখছিল। পরিবর্তনটি পুনরুদ্ধার করার প্রয়োজন ছিল (যেহেতু আপনি টাস্ক শিডিয়ুলার পুনরায় আরম্ভ করতে পারবেন না)। এই মুহূর্তে দেখা গেল যে আমি এখন আমার মূল পরিবেশ পরিবর্তনশীলটি ব্যবহার করতে পারি। সুতরাং আপশটটি হ'ল আপনি পরিবেশের ভেরিয়েবলগুলি ব্যবহার করতে পারেন তবে কোনও পরিবর্তন / নতুন পরিবেশের ভেরিয়েবলগুলি তুলতে একটি সম্পূর্ণ মেশিন রিবুট প্রয়োজন
পল হ্যাডফিল্ড

আপনি উত্তরটি সঠিক হিসাবে চিহ্নিত করেছেন যে আপনি এগুলি ব্যবহার করতে পারেন তবে আপনি যদি কাজটি সংশোধন করার আগে / পরিবেশের ভেরিয়েবলের রেফারেন্স যুক্ত করার আগে টাস্ক শিডিয়ুলারটি চালিত হয় তবে এটির জন্য মেশিনটির রিবুট লাগবে।
পল হ্যাডফিল্ড

2
Tsvayer এর উত্তর দেখুন - আপনার মেশিনটি পুনরায় বুট করার দরকার নেই। শুধু টাস্ক শিডিয়ুলার প্রক্রিয়া।
বেন চ্যালেঞ্জার

1

পাশের নোটটিতে, আমি একটি বিএটি ফাইল কল করতে এবং সেখানে পরিবেশের ভেরিয়েবলটি উল্লেখ করার বিষয়ে চিন্তাভাবনা করেছি, তবে এটি আমার পক্ষে কিছুই সমাধান করতে পারে না কারণ মূল সমস্যাটি আসলে (এবং ব্যাটের ফাইলটিও) সিটিতে রয়েছে কিনা তা জানাচ্ছে: বা ডি: ড্রাইভ - ড্রাইভের ভিতরেই পথটি একই।

%~d0ব্যাচ ফাইলটি যেখানে রয়েছে তার ড্রাইভ লেটারে প্রসারিত হবে। ( %~dp0ড্রাইভ + ডিরেক্টরির জন্য, ইত্যাদি। )


1

tsvayer এর উত্তর আমার পক্ষে উইন্ডোজ 7 চালিত একটি কম্পিউটারে বেশ কার্যকর হয়নি, তবে এটি আমাকে সঠিক দিকে নির্দেশ করেছিল। টাস্ক শিডিয়ুলারটি আমার কম্পিউটারে একটি পরিষেবা বলে মনে হচ্ছে; এটি নাম Schedule; প্রদর্শন নামটি টাস্ক শিডিয়ুলার

পরিষেবাদি এমএমসি থেকে এটি পুনরায় চালু করার পাশাপাশি , wmicকমান্ড প্রম্পট উইন্ডো থেকে চালানো নিম্নলিখিত আদেশগুলি (প্রশাসকের সুযোগসুবিধা সহ) পুনরায় আরম্ভ করা যেতে পারে :

wmic service where "name='Schedule'" call StopService
wmic service where "name='Schedule'" call StartService

আপনি অবশ্যই পরিষেবাটি পুনরায় চালু করতে পারেন sc:

sc stop Schedule
sc start Schedule

পরীক্ষার এবং ত্রুটির ভিত্তিতে এটি একক কার্যকে অক্ষম করা এবং তারপরে পুনরায় সক্ষম করার পক্ষে যথেষ্ট বলে মনে হয়, যদি আপনাকে কেবল এটির প্রভাবিত করতে হয় তবে:

schtasks /Change /TN \"The name of the task\" /DISABLE
schtasks /Change /TN \"The name of the task\" /ENABLE

0

পাশের নোটটিতে, আমি একটি বিএটি ফাইল কল করতে এবং সেখানে পরিবেশের ভেরিয়েবলটি উল্লেখ করার বিষয়ে চিন্তাভাবনা করেছি, তবে এটি আমার পক্ষে কোনও সমস্যার সমাধান করতে পারে না কারণ মূল বিষয়টি আসলে জানে যে অ্যাপ্লিকেশনটি (এবং ব্যাট ফাইলটিও) সিটিতে রয়েছে: বা ডি: ড্রাইভ - ড্রাইভের ভিতরেই পথটি একই।

মহাকর্ষের উত্তরটি প্রসারিত করে, আমি একটি দুটি পদক্ষেপ প্রক্রিয়া ব্যবহার করি। এটি আমাকে প্রয়োজনে অন্যান্য বিবৃতিগুলিতে পথটি ব্যবহার করতে দেয়।

SET WD=%~dp0
pushd %WD%

দ্রষ্টব্য: pushdড্রাইভ এবং ডিরেক্টরি উভয়ই পরিবর্তন করে। এবং আপনি যদি পরিষ্কার হয়ে থাকতে চান, popdযখন আপনি হয়ে গেছেন।

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