আমি কীভাবে একটি ব্যাচ ফাইল করব যা প্রক্রিয়াটি শেষ হওয়ার অপেক্ষার জন্য একটি প্রক্রিয়া শুরু করেছিল?


3

আমার কম্পিউটারটি সেরা নয় তবে এটি জিটিএ ভি খেলতে সর্বনিম্ন প্রয়োজনীয়তা পূরণ করে । আমি গেমটি আরও দ্রুত চালানোতে চেয়েছিলাম যাতে স্বাভাবিক .exe ব্যবহার না করে, গেমটি আরম্ভ করার জন্য আমি ব্যাচ ফাইলটি ব্যবহার করি:

start steam://rungameid/271590 
timeout 60
wmic process where name="GTA5.exe" CALL setpriority "high priority"
wmic process where name="gtavlauncher.exe" CALL setpriority "idle"
wmic process where name="subprocess.exe" CALL setpriority "idle"

সুতরাং মূলত গেমটি চালু করার পরে এটি অগ্রাধিকারগুলি সেট করে তাই কেবল জিটিএ 5. এক্সই চালায় এবং সিপিইউ এটির সাথে আসা অন্যান্য প্রক্রিয়াগুলি উপেক্ষা করে। আমি চেয়েছিলাম এটি আরও মসৃণভাবে চালানো এবং উইন্ডোজ থিমটিকে "ক্লাসিক" রূপান্তরিত করা এতে সহায়তা করে, তাই আমি একটি প্রোগ্রাম ডাউনলোড করেছি যা আমাকে সিএমডি কমান্ডের সাহায্যে থিমগুলি পরিবর্তন করতে দেয় এবং আমি এই স্ক্রিপ্টটি তৈরি করেছিলাম-

START c:\ThemeSwitcher classic
start steam://rungameid/271590 
timeout 60
wmic process where name="GTA5.exe" CALL setpriority "high priority"
wmic process where name="gtavlauncher.exe" CALL setpriority "idle"
wmic process where name="subprocess.exe" CALL setpriority "idle"
wait process where name="GTA5.exe" 
-----------------------------------------------------------
start c:\ThemeSwitcher MY PC

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

উত্তর:


1

এই মত ব্যাচ তৈরি করুন:

title i'm waiting
start /wait /high cmd /ktitle kill me 
echo This is the end 
pause

প্যারামিটার startসহ ওয়ার্ক কমান্ড আপনি দেখতে পাবেনwait

আপনি ব্যাচটি তৈরি করতে পারেন pause, ব্যাচের উইন্ডোতে কিছু হিট স্পেস করার পরে এটি পরবর্তী কমান্ডটি চালায়

আপনি সম্ভবত এর মতো কিছু খুঁজছেন waiting for terminate existing process:

echo do somthing at start
:start_test
::wait ~6s -1s = 5s
::you can use TIMEOUT 5
call :sleep 6
wmic process where name="notepad.exe" get name |find "notepad.exe">nul
if %errorlevel%==0 goto :start_test
echo do somthing at the end
::pause
goto :eof

:sleep
ping 127.0.0.1 -n %1 > nul
goto :eof

এটি পরীক্ষার প্রক্রিয়াটি প্রতি 5s তে বিদ্যমান থাকে, আপনি অন্তর পরিবর্তন করতে পারেন।


0

আর একটি পদ্ধতি যা কেবলমাত্র একটি নতুন প্রক্রিয়া চালু করে তা হ'ল পাওয়ারশেল ব্যবহার করা!

আপনি Get-Processcmdlet সহ নাম দ্বারা একটি প্রক্রিয়া খুঁজে পেতে পারেন । প্রতিটি প্রক্রিয়া অবজেক্টের এমন একটি WaitForExitপদ্ধতি থাকে যা প্রত্যাশা করা যায়, প্রক্রিয়াটি থামানো পর্যন্ত অবরুদ্ধ করে। অতএব, এই PowerShell কমান্ড পর্যন্ত স্তব্ধ হবে GTA5.exe, gtavlauncher.exeএবং subprocess.exeপ্রস্থান:

Get-Process 'gta5', 'gtavlauncher', 'subprocess' | % {$_.WaitForExit()}

এটি সেই নামগুলির সাথে সমস্ত প্রক্রিয়া সন্ধান করে এবং প্রতিটি প্রস্থান করার জন্য অপেক্ষা করে। সমস্ত শেষ না হওয়া পর্যন্ত প্রম্পটটি ফিরে আসবে না।

আপনি পাওয়ার শেলটি কমান্ডটি চালু করে ব্যাচের স্ক্রিপ্টটি ব্লক করতে এটি ব্যবহার করতে পারেন (একটি নাম ব্যবহার করে আমি এটি কিছুটা ছোট করেছি):

powershell -command "gps 'gta5','gtavlauncher','subprocess'|%{$_.WaitForExit()}"

প্রসেসগুলি প্রস্থান হওয়ার পরে, পাওয়ারশেলটি প্রস্থান করবে এবং আপনার ব্যাচের স্ক্রিপ্টে নিয়ন্ত্রণ ফিরিয়ে দেবে।

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