একাধিক সমবর্তী ব্যাকগ্রাউন্ড প্রক্রিয়াগুলি চালনা করে তারপরে উইন্ডোজে তাদের সকলের সমাপ্তির জন্য অপেক্ষা করুন


14

যে কেউ সিএমডি স্ক্রিপ্ট আছে তা / এবং অথবা কোনও কমান্ড লাইন সরঞ্জাম কাজের জন্য প্রস্তুত কিনা তা জানেন?


এটি করা আপনার ডেটা ক্ষতি করতে পারে!
সন্তোষ কুমার

8
@ সন্তোষ: "আপনার ডেটা ক্ষতি করতে পারে" এর অর্থ কী? আমার নির্দিষ্ট ক্ষেত্রে পটভূমি কাজগুলি তাদের নিজস্ব স্বাধীন ডেটা সেটগুলি প্রক্রিয়া করবে। একযোগে পরিবর্তনের কোনও ঝুঁকি নেই।
সার্জিও

1
উইন 32 এপিআই পাশ থেকে, আমি মনে করি ওয়েটফর্ম মাল্টিপলঅবজেক্টস বিউইটএল = সত্যের সাথে কাজটি করবে। কোনও সন্তুষ্টিজনক উত্তর না থাকলে এমন কোনও প্রোগ্রাম লিখতে অসুবিধা হবে না যা কিছু ইনপুট ফাইলে প্রদত্ত প্রোগ্রামগুলি বন্ধ করে দেয়।
ব্যবহারকারী1686

1
@ গ্রায়েটি: হ্যাঁ, আমি ঠিক তেমন পরিকল্পনা করেছিলাম যে যদি কিছু না আসে তবে (এবং কোডটি এখানে পোস্ট করুন) তবে আসুন দেখি আমি চক্রটি পুনর্বিবেচনা এড়াতে পারি কিনা :)
সেরজিও

যদি বর্তমানে বিদ্যমান চাকাগুলি বর্গক্ষেত্র হয় তবে
চাকাটির পুনঃব্যবস্থাপনা

উত্তর:


10

নীচে তিনটি ব্যাচের ফাইল তৈরি করুন। মেইন.ব্যাট 1.bat এবং 2.bat চালু করে

1.bat এবং 2.bat অস্থায়ী ফাইলগুলি লিখুন যার জন্য মেইন.ব্যাট চেক করে। 1.bat এবং 2.bat কাজ করার সময়, main.bat পুনরায় জানায় যে প্রক্রিয়াজাতকরণ এখনও চলছে। আপনি যখন 1.bat বা 2.bat এর খোলা উইন্ডোতে প্রবেশ চাপলে অস্থায়ী ফাইলটি মুছে ফেলা হয় এবং প্রোগ্রামটি প্রস্থান হয়। এটি .bat ফাইলের জন্য প্রসেসিং স্টপিংয়ের অনুকরণ করে। আপনি যদি 1 এবং 2.bat উভয়ের জন্য এটি করেন তবে মেইন.ব্যাট আপনাকে জানায় যে এই প্রক্রিয়াগুলির জন্য প্রক্রিয়াজাতকরণ শেষ হয়েছে। আপনি 1.bat এবং 2.bat কে যা কিছু করতে চান তা করতে পারেন, যতক্ষণ আপনি শেষ করে অস্থায়ী ফাইল সাফ করবেন। এই মুহুর্তে মেইন.বাট আপনি যা করতে চান তা করতে পারেন।

1.bat

echo %time% > 1.tmp
pause
del 1.tmp
exit 

2.bat

echo %time% > 2.tmp
pause
del 2.tmp
exit

main.bat

@echo off
start "1" 1.bat
start "2" 2.bat
    @ping -n 1 127.0.0.1 > nul
:loop
@echo Processing......
if not exist *.tmp goto :next
    @ping -n 5 127.0.0.1 > nul
goto loop
:next
@echo Done Processing!

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

আমি এই সমাধানে খুশি।
ব্যবহারকারী 1068446

আপনি @ পিপিং কমান্ডটি প্রসারিত করতে পারেন? আপনি কেন এটি করতে পছন্দ করেছেন এবং 127.0.0.1 কী তা আমি বুঝতে পারি না।
জো

6

পর্যাপ্ত সরল, প্রদত্ত প্রক্রিয়াগুলির জন্য স্ট্যান্ডার্ড ইনপুট বা আউটপুট না দরকার। কমান্ড লাইন থেকে, বা একটি ব্যাচ ফাইলে:

process1 | process2 | process3 | process4

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

আপনি ঠিক কতগুলি প্রক্রিয়া একই সাথে চালু করতে পারবেন তা আমি নিশ্চিত নই। আমি দশ পর্যন্ত চেষ্টা করেছি।


আহ, আমি যা পাই তা হ'ল সমস্ত প্রক্রিয়া প্রকৃতপক্ষে একবারে শুরু হয়েছিল, তবে প্রক্রিয়া 3 প্রক্রিয়া 4 সমাপ্ত হওয়া অবধি প্রসেস 2 অপেক্ষারত রাখা হয়, প্রক্রিয়া 3 সম্পূর্ণ হওয়া অবধি অপেক্ষারত রাখা হয়, ইত্যাদি। এটি উপায় দ্বারা ক্লাসিক উইন্ডোজ কমান্ড প্রম্পট থেকে।
সার্জিও

@ সার্জিও: "অপেক্ষা করে" বলতে কী বোঝ?
হ্যারি জনস্টন

1

এটি করার একমাত্র উপায় হ'ল পৃথক ব্যাচ ফাইলগুলি শুরু করা (দেখুন start /?) যা পৃথক টাস্কটি চালায় এবং সম্পূর্ণ হওয়ার পরে একটি পাঠ্য ফাইল লিখুন। তারপরে, আপনি পর্যায়ক্রমে পরীক্ষা করে দেখুন যে পাঠ্য ফাইলগুলি করা হয়েছে কিনা।


0

আপনি পাওয়ারশেল স্টার্ট-জব সেমিডিলেটটি দেখতে পারেন। এটি আপনাকে এটি করার অনুমতি দেওয়া উচিত। এখানে আরও পাওয়ারশেল হ'ল মাইক্রোসফ্টের পছন্দের শেল। এটি সিএমডি স্ক্রিপ্টগুলির চেয়ে অনেক বেশি শক্তিশালী এবং আপনার সময়ের বিনিয়োগকে ভালভাবে মূল্যায়িত করে


এটি কি তাদের সকলের সমাপ্তির জন্য অপেক্ষা করে না?
তমারা উইজসম্যান

এটি অবশ্যই আপনি এটি কীভাবে লিখছেন তার উপর নির্ভর করে। আপনি শুরু করা কাজগুলি পোল করে দেখতে পারেন যে তারা স্ক্রিপ্টটি সম্পন্ন করেছে কিনা এবং একবারে স্ক্রিপ্টটি শেষ হয়ে গেলে তার বাইরে চলে যায়। এই পৃষ্ঠার কোডটি একটি সময়ে তিনটি কাজের পুরো তালিকাটি প্রসেস করে এবং তাদের বেরিয়ে যাওয়ার জন্য অপেক্ষা করে।
u স্ল্যাকার

উহম, পাওয়ারশেলের সাথে এর আগে কখনও কিছু করেনি। আমি স্বেচ্ছাসেবী প্রক্রিয়াগুলি চালানোর জন্য উদাহরণটি পরিবর্তন করার চেষ্টা করেছি এবং সেগুলি শেষ হওয়ার জন্য অপেক্ষা করেছিলাম এবং এম-টেকনেটে প্রায় 30 মিনিট এবং 100 টি লুকআপের পরে। আমি যদি কারও অনুভূতিতে আঘাত করে তবে আমি ক্ষমা করছি তবে পাওয়ারশেল বাজে। এটি সিতে এটি করা সহজ (যা আমি বলে দিচ্ছি বলে মনে করি ...) যাইহোক ধন্যবাদ, আমি বাজি ধরছি যে কেউ এখনও এটি দরকারী খুঁজে পাবেন।
সার্জিও

যদি পাওয়ারশেলের কোনও জিনিস না হয় তবে ক্রেপ না হয় এবং আপনি যদি তা ব্যবহার না করেন তবে আমার অনুভূতিতে আঘাত করবেন না। তবে আপনি এটি 30 মিনিটের অনুসন্ধানে শিখতে পারবেন না।
u স্ল্যাকার

1
পাওয়ারশেলটি বোকা নয়, এটি কেবল একটি সম্পূর্ণ প্রোগ্রামিং ল্যাঙ্গুয়েজ শিখতে হবে, চিরাচরিত শ-এর মতো সিনট্যাক্সের পরিবর্তে। আমার মনে আছে পার্ল, পাইথন, টিসিএল, সি # এবং অন্য যে কোন ভাষা সম্পর্কে আমি এখনও কোনও বাস্তব ব্যবহার ছাড়াই "লুলজের জন্য" শেখার চেষ্টা করেছি about (যখন আমি আসলে তাদের প্রয়োজন হয়েছিল, যদিও এটি মোটামুটি সহজেই চলে গেছে))
ব্যবহারকারীর 6868

0

অথবা আপনি এটি ব্যবহার করতে পারেন: http://www.out-web.net/?p=167

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


2
দয়া করে সংযোগটি কী সেই লিঙ্কটি বলে। পৃষ্ঠাটি যদি নীচে যায় তবে এই উত্তরটি সহায়ক হবে না।
কেভিন প্যাঙ্কো

খুব দেরি হয়ে গেছে বলে মনে হচ্ছে।
রবার্ট মাসা

0

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

( start "" /B cmd /c ping localhost -n 6 ^>nul timeout /t 5 /nobreak start "" /B /D "C:\users\username\Desktop" cmd /c dir ^> dr.txt ^2^>^&^1 start "" /B cmd /c ping localhost -n 11 ^>nul timeout /t 10 /nobreak ) | pause Echo waited timeout /t 12 /nobreak

ভিতরে সমস্ত বিবৃতি ()প্রথমে কার্যকর করা হয়, সেগুলি সম্পূর্ণ হওয়ার জন্য অপেক্ষা করুন, তারপরে শেষ দুটি লাইন কার্যকর করা হবে। সমস্ত কমান্ডের সাথে অনুরোধ startকরা একই সাথে কার্যকর করা হয়।

এই লিঙ্কগুলি সহায়ক: /programming//a/43762349/9689416 এবং https://ss64.com/nt/start.html

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