উইন্ডোজ কমান্ড লাইন সময় সীমা


9

আমি কীভাবে উইন্ডোজে একটি কমান্ড লাইন প্রোগ্রামের প্রয়োগের সময় সীমাবদ্ধ করতে পারি? আমি লিনাক্সে জানি টাইমআউট / টাইমলিমিট উপলব্ধ, তবে আমি উইন্ডোজগুলির জন্য অনুরূপ ইউটিলিটিগুলি সন্ধান করতে ব্যর্থ হয়েছি।


এটি করার জন্য পাওয়ারশেল বা পাইথন লিপিটি লেখা ভাল probably
ব্রেকথ্রু

উত্তর:


9
start yourprogram.exe
ping 127.0.0.1 -n 10
taskkill /im yourprogram.exe

আপনি যদি এটি নোটপ্যাডে রাখেন এবং এটি সংরক্ষণ করেন কারণ .batএটি একটি ব্যাচ ফাইল তৈরি করবে যা এটি করবে।

আমি উদাহরণ হিসাবে 10 সেকেন্ড ব্যবহার করেছি, কেবল আপনার প্রয়োজনগুলিতে টুইট করুন।

এছাড়াও, আপনি যদি ভিস্তা ব্যবহার করছেন বা উপরে আপনি pingলাইনটি স্ক্র্যাপ করতে পারেন এবং timeoutতার জায়গায় আরও সহজ কমান্ড ব্যবহার করতে পারেন

timeout /t 10

1
এটি কীভাবে আপনার প্রোগ্রামের যুক্তি এবং একাধিক উদাহরণ পরিচালনা করবে? শুরুটি কোনও পিআইডি ফিরিয়ে দিলে ভাল লাগবে, তবে এরকম ভাগ্য নেই ...

আপনি যুক্তি দিয়ে পাস করতে পারেন start yourprogram.exe yourarguments। হ্যাঁ, taskkillএটি পিআইডি দ্বারা মারার বিকল্প রয়েছে তবে আপনাকে tasklistপ্রথমে নামের ভিত্তিতে এটি বের করতে হবে , যদি আপনার একাধিক উদাহরণ থাকে তবে এটি স্কয়ার একের দিকে ফিরে আসে। এটি কেবলমাত্র সেন্টিমিটারের একটি সীমাবদ্ধতা।
বালি সি

1
+1 টাইমআউট টাইমার হিসাবে পিং ব্যবহার করা একটি মজার ধারণা :)
কল

এর আউটপুট স্কোয়াশ > NULকরতে pingকমান্ডে যুক্ত করুন ।
স্টারবিয়াম্রেনবোলাবস

4

যেহেতু আমি জানি যে এ জাতীয় কোনও ফাংশন নেই বলে মনে হয় তবে আমি মনে করি এটি কার্যকরী যদি আপনি এটি উইন্ডো টাস্ক হিসাবে টাস্ক শিডিয়ুলারের মাধ্যমে চালনা করেন তবে সেখান থেকে আপনি মৃত্যুদন্ড কার্যকর করার সীমাবদ্ধতা নির্ধারণ করতে পারেন, নামকরণের সেটিংটি: এটি যদি চালায় তবে কার্য থামান এর চেয়ে লম্বা:, আপনি এখান থেকে আরও বিশদ পেতে পারেন: http://technet.microsoft.com/en-us/library/cc722178.aspx


3

আপনি যদি পাওয়ারশেল ব্যবহার করে বিরক্ত হতে পারেন: $app = Start-Process -PassThru -FilePath 'notepad' -ArgumentList 'test.txt'টেস্ট.টেক্সট এর আর্গুমেন্টের সাথে নোটপ্যাড শুরু করবেন (আপনি একাধিক যুক্তি দ্বারা আলাদা করতে পারবেন) ,

Start-Sleep -Seconds 10 10s জন্য ঘুমাতে হবে।

উভয় ক্ষেত্রেই $app.Kill()বা taskkill /PID $app.Idশুরু আবেদন মেরে ফেলবে।

আপনি যদি এমন কোনও সেন্টিমিডি দ্রবণ পছন্দ করেন যা প্রক্রিয়া শুরু করার জন্য কেবল পাওয়ারশেলকে কল করবে এবং তারপরে এটির পিআইডি সংরক্ষণ করবে: 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%শুরু করতে এবং শুরু হওয়া অ্যাপ্লিকেশনটি হত্যা করতে পারেন।


1

সমাধান:

উইন্ডোতে এটি তিন ব্যাচের ফাইল তৈরি করা প্রয়োজন

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

এবার রান করুন প্রসেস.বাট। এটি একই সাথে / সমান্তরালভাবে সেমি.বাট এবং রান.বাট উভয়ই শুরু করবে। যখন cm.bat থেকে a.exe সমাপ্ত হয়; সেমি.বাট রান.ব্যাটকে মেরে ফেলে এবং এইভাবে এটি উবুন্টুর সময়সীমা হিসাবে কাজ করবে।

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