मैं विंडोज़ में कमांड लाइन प्रोग्राम के निष्पादन समय को सीमित करने के बारे में कैसे जा सकता हूं? मुझे पता है कि linux में timeout / timelimit उपलब्ध है, लेकिन मैं विंडोज़ के लिए समान उपयोगिताओं को खोजने में असमर्थ रहा हूं।
मैं विंडोज़ में कमांड लाइन प्रोग्राम के निष्पादन समय को सीमित करने के बारे में कैसे जा सकता हूं? मुझे पता है कि linux में timeout / timelimit उपलब्ध है, लेकिन मैं विंडोज़ के लिए समान उपयोगिताओं को खोजने में असमर्थ रहा हूं।
जवाबों:
start yourprogram.exe
ping 127.0.0.1 -n 10
taskkill /im yourprogram.exe
यदि आप इसे नोटपैड में डालते हैं और इसे सहेजते हैं क्योंकि .batयह एक बैच फ़ाइल बनाएगा जो ऐसा करेगी।
मैंने एक उदाहरण के रूप में 10 सेकंड का उपयोग किया है, बस अपनी आवश्यकताओं के लिए ट्विक करें।
इसके अलावा, यदि आप विस्टा या इसके बाद के संस्करण का उपयोग कर रहे हैं, तो आप pingलाइन को स्क्रैप कर सकते हैं और इसमें बहुत आसान timeoutकमांड का उपयोग कर सकते हैं
timeout /t 10
start yourprogram.exe yourarguments। हाँ, यह taskkillपीआईडी द्वारा मारने का एक विकल्प होगा, लेकिन आपको इसे tasklistपहले नाम के आधार पर निकालना होगा , जो कि यदि आपके पास एक से अधिक उदाहरण हैं, तो वर्ग एक पर वापस आ जाएगा। यह सिर्फ cmd की एक सीमा है।
> NULकरने के लिए pingआदेश में यह उत्पादन छुटकारा पाने के लिए।
जैसा कि मुझे पता है कि ऐसा कोई फ़ंक्शन मौजूद नहीं है, लेकिन मुझे लगता है कि यह उल्लेखनीय है यदि आप इसे टास्क शेड्यूलर के माध्यम से एक विंडोज़ कार्य के रूप में चलाते हैं, तो वहां से आप निष्पादन की सीमा निर्धारित कर सकते हैं, नाम दिया गया सेटिंग: यदि यह चलता है तो कार्य रोक दें इससे अधिक समय: आप यहाँ से और अधिक विवरण प्राप्त कर सकते हैं: http://technet.microsoft.com/en-us/library/cc722178.aspx
यदि आपको PowerShell का उपयोग करके परेशान किया जा सकता है:
$app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'test.txt के तर्क के साथ नोटपैड शुरू करेगा (आप कई तर्क अलग कर सकते हैं) ,।
Start-Sleep -Seconds 10 10 के लिए सो जाएगा।
शुरू किए गए आवेदन को $app.Kill()या तो taskkill /PID $app.Idमार देंगे।
यदि आप एक cmd समाधान पसंद करते हैं जो प्रक्रिया शुरू करने के लिए केवल PowerShell को कॉल करेगा और फिर इसे PID को एक चर में संग्रहित करेगा:
for /F %A in ('powershell -Command "(Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt').Id"') do set PID=%A(जब इसे -bat / .cmd से बुलाया जाता है तो आपको %%Aइसके बजाय उपयोग करना होगा %A)। इसके बाद आप @ बालीसी के तरीकों का उपयोग कर सकते हैं और taskkill /PID %PID%शुरू किए गए एप्लिकेशन को मार सकते हैं।
समाधान :
खिड़कियों में इसे तीन बैच फाइलें बनाने की आवश्यकता होती है
process.bat
@ECHO OFF
start /b cm.bat
start cmd.exe /c run.bat
EXIT
cm.bat
@ECHO OFF
a.exe < input.txt > out.txt
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT
run.bat
@ECHO off
timeout /t 5
taskkill /im a.exe /f
taskkill /im cmd.exe /f
EXIT
अब Run process.bat। यह cm.bat और run.bat दोनों को एक साथ / समानांतर रूप से शुरू करेगा। जब cm .bat से a.exe समाप्त हो जाता है; cm.bat run.bat को मारता है और इस प्रकार यह ubuntu टाइमआउट के रूप में काम करेगा।