আমি আমার ব্যাচ স্ক্রিপ্টটি একটি ব্যাচ স্ক্রিপ্ট চালাতে চাই, যা শেষ হয় না, তারপরে আরও অনেক ব্যাচ স্ক্রিপ্ট চালায় যা শেষ হয় এবং তারপর প্রথম ব্যাচ স্ক্রিপ্টটি বন্ধ করে।
ইস্যু হল, প্রথম ব্যাচের স্ক্রিপ্টটি শুরু করার আগে আমি অন্য কোনও চালনা শুরু করতে পারার আগে একটি সংযোগ স্থাপন করতে হবে এবং এটি কখন করা হবে তা নির্ধারণ করতে আমার প্রথম স্ট্রিটের আউটপুটটি দেখতে হবে যা আমি স্ট্রিংয়ের জন্য শুরু করব যা নির্দেশ করে যে সংযোগটি প্রতিষ্ঠিত.
ছদ্ম-কোডে,
start first script
wait for first script to output specific string
while the first script remains running:
run several other scripts
close the first script
কয়েকটি পূর্ববর্তী লাইন মুদ্রিত হওয়ার পরে এই স্ট্রিংটি প্রদর্শিত হবে। লাইন সংখ্যা এবং এই লাগে উভয় সময় পরিবর্তিত হতে পারে। স্ট্রিং সব সময়ে outputted হয় না। আমি এই স্ক্রিপ্ট পরিবর্তন করতে পারবেন না।
পছন্দসই ফলাফল এই হল:
C:\>first_batch_script.bat
Some line
Doing a thing
Winning the points
The Sims did this joke better
Connection established
certain string
C:\>other_batch_script.bat
other_batch_script is done!
C:\>another_batch_script.bat
another_batch_script is done!
C:\>REM kill first_batch_script.bat
এই কোডটি আমি চেষ্টা করছি:
FOR /f "tokens=* delims=" %%L IN ('first_batch_script.bat ^| find "certain string"') DO echo %%L
call other_batch_script.bat
call another_base_script.bat
REM kill first_batch_script.bat
ব্যবহার FOR /f
প্রতিশ্রুতিশীল মনে হচ্ছে, কিন্তু যখন আমি এটি চালাচ্ছি তখন ব্যাচ স্ক্রিপ্ট বেশ ধীরে ধীরে রান করে এবং তারপর ঝুলতে থাকে। কোনও ইভেন্টে, এমনকি যদি এটির মধ্য দিয়ে দৌড়াতে থাকে, তবে আমি লুপটি ভেঙ্গে দেওয়ার জন্য এবং আমার কোডটি কার্যকর করার জন্য একটি ভাল উপায় দেখছি না
ব্যবহার START /WAIT
সাহায্য করে না কারণ প্রথম স্ক্রিপ্টটি আমি শুরু করি না (এবং নাও) বন্ধ করতে হবে। যেকোনো ধরনের টাইমিং পদ্ধতি ব্যবহার করা ঠিক কাজ করবে না কারণ এটি সংযোগ স্থাপন করার জন্য মোটামুটি ভিন্ন সময় নিতে পারে।
তাই, দীর্ঘ এবং সংক্ষিপ্ত: