ব্যাচ ফাইলে আপনি কোন এক্সিকিটির জন্য অপেক্ষা করতে পারেন?


43

আমি এসপি 1 ইনস্টল করতে শাটডাউনে একটি এক্সিকিউট চালানোর জন্য একটি স্ক্রিপ্ট তৈরি করার চেষ্টা করছি। আমার স্ক্রিপ্ট এর মতো কিছু হয় (আসল ব্যাটের স্ক্রিপ্ট নয়)।

If installed GOTO END
    Install.exe
END:

আমার সমস্যাটি হ'ল এটি যখন চালায় তখন এটি ইনস্টলারটি শুরু করে, স্ক্রিপ্টটি সমাপ্ত করে কারণ ইনস্টলারটি একটি আলাদা প্রক্রিয়া এবং ইনস্টল প্রক্রিয়াটি বন্ধ করে অনুসরণ করে কারণ কম্পিউটারের কম্পিউটারটি বন্ধ হয়ে যায় এবং সিস্টেমটি বন্ধ করে দেয় (অন্ততপক্ষে, এটাই আমার মনে হয় এটা করছে।)

এটি শুরু হওয়া প্রক্রিয়াটি শেষ না হওয়া এবং তারপরে বন্ধ বন্ধ হওয়া পর্যন্ত অপেক্ষা করার কোনও উপায় আছে কি?

উত্তর:


81

চালানোর চেষ্টা করুন

START /WAIT Install.exe

এই উত্তর দিয়ে দুর্দান্ত কাজ!
l -'''''--------- '' '' '' '' '' ''

আপনি চেইন করতে পারেন? like start /wait install; exit?
সার্জ সাগান

আপনি সর্বদা করতে পারেনcmd /C start /wait install
গ্রেওয়াল্ফ

ব্যাচের ফাইলটি শুরু না হওয়া কোনও প্রক্রিয়ার জন্য যদি আপনার অপেক্ষা করতে হয় তবে কী হবে?
কাইল ডেলাানি

23

একটি ছোট উপায়:

Install.exe|more

এছাড়াও

install|rem

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


এবং ডাউনলোট কেন?
এনপোকমাকা

এটি দুর্দান্ত! আমি তোমাকে ভোট দিই
চ্যাংওয়ং জাং

2
এটি সুস্পষ্টভাবে জেতে
Fnord

এক্সি যদি পরামিতি নেয়? কিভাবে কাজ করবে?
m4l490n

@ m4l490n - এটি ঠিক কাজ করবে। ফেরৎ এবং শর্তাধীন সঞ্চালনের অপারেটার (ব্যাচ স্ক্রিপ্ট উচ্চতর অগ্রাধিকার আছে <, >, >>, &, &&, ||, |)
npocmaka

13

হয় ব্যাচের ফাইল থেকে সরাসরি এক্সিকে কল করা বা ব্যবহার করা কার্যকর start /waitহবে তবে একটি সতর্কতা রয়েছে।

আপনি যেই এপিকে কল করেন তারপরে অন্য প্রক্রিয়া তৈরি করে, যেমন অন্য এক্সকে কল করা, এবং তারপরে প্রস্থানিত ব্যাচ ফাইলটি প্রেরণ করা নামক এক্সি শেষ হওয়ার পরে প্রক্রিয়া চলতে থাকবে, কারণ এটি দ্বারা শুরু হওয়া অন্যান্য প্রক্রিয়াগুলির কোনও জ্ঞান নেই।

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


আপনি সবসময় শাটডাউন রুটিনে একটি লুপ যুক্ত করতে পারতেন কিনা তা দেখতে পরীক্ষা করে দেখুন যে এমএসএেক্সেক.এক্সে (বা যা কিছু হোক না কেন) চলছে এবং তারপরে অপেক্ষা করুন এবং আবার লুপ করুন।
mfinni

@ এমফিন্নি, বিষয়গুলি আরও জটিল করার জন্য msiexecপ্রায়শই অন্যান্য প্রক্রিয়াগুলিও বন্ধ করে দেয়। :(
জন গার্ডেনিয়ার্স

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

আমার এই সমস্যা ছিল, উত্তর হিসাবে আমার সমাধান যুক্ত করে।
ফ্রিসফটওয়্যার সার্ভারগুলি

5

এখানে ম্যাটল্যাব ব্যবহার করে একটি উদাহরণ দেওয়া হল! আমি ধরে নিয়েছি যে ম্যাটল্যাবের জন্য পাথ সেটআপ হয়ে গেছে এবং ম্যাটল্যাব প্রস্থানটি ফাইলনাম.এম ফাইল দ্বারা নিশ্চিত করা হচ্ছে (বা ব্যবহারকারী এটি অভ্যন্তরীণভাবে নির্দিষ্ট করেছেন)।

echo off
matlab -nosplash /r "FileName.m"
:loop
tasklist /fi "imagename eq MATLAB.exe" |find ":" > nul
if errorlevel 1 goto loop
exit

2
মতলব ধরে নেওয়া আমার কাছে কিছুটা অদ্ভুত বলে মনে হচ্ছে, বিশেষত সার্ভারফল্টে।
এরিক

এটি ম্যাটল্যাব ব্যতীত অন্য কিছুর জন্য কাজ করতে পারে। স্রেফ "MATLAB.exe" কে অন্য কিছুতে পরিবর্তন করুন। ফিল্টারপুট আউটপুটটিতে আবার এক্সের সন্ধান করতে সম্ভবত সেই দ্বিতীয়টি 'সন্ধান করুন' ঠিক করুন।
অলিভার বক

1

আমার কাছে জন গার্ডেনিয়ারদের হ্যাড বা বর্ণিত সমস্যা ছিল, যেখানে আমার এক্সেপ অন্য একটি এক্সকে ডেকেছে এবং সমাপ্ত করে, যার জন্য শুরু / অপেক্ষা কাজ করে না work এটি চলমান কিনা তা পরীক্ষা করার জন্য আমি একটি "উইল লুপ" তৈরি করেছি এবং তারপরে এটি একবার হয়ে গেলে on আপনার প্রয়োজন অনুসারে সময়গুলি টুইট করা যেতে পারে।

TIMEOUT /T 60

SETLOCAL EnableExtensions
set EXE=MYEXETOCHECK.exe
:LOOPSTART
FOR /F %%x IN ('tasklist /NH /FI "IMAGENAME eq %EXE%"') DO IF %%x == %EXE% goto FOUND
goto FIN
:FOUND
TIMEOUT /T 30
goto LOOPSTART
:FIN

0

আপনি স্টার্ট / ওয়েট কমান্ডটি ব্যবহার করতে পারেন। এটি একটি অ্যাপ্লিকেশন শুরু করে এবং এটি শেষ হওয়ার জন্য অপেক্ষা করে।

অথবা আপনি যদি জানেন যে এটি কার্যকর করতে কতক্ষণ সময় লাগে, আপনি উইন্ডোজ সার্ভার 2003 রিসোর্স কিট সরঞ্জামগুলির দ্বারা সরবরাহিত স্লাইড কমান্ডটি একবার দেখে নিতে পারেন । ব্যাচ ফাইলটি অন্য কোনও কিছু ইনস্টল করার আগে প্রোগ্রামটিকে পুরোপুরি ইনস্টল করার অনুমতি দেওয়ার জন্য আপনার ব্যাচকে যেকোন সেকেন্ডের জন্য বিরতি দিতে ঘুম.এক্সই ব্যবহার করা যেতে পারে। কিছু প্রোগ্রাম রয়েছে যা "স্টার্ট / ওয়েট" সিনট্যাক্সকে উপেক্ষা করে, প্রোগ্রাম নিজেই অন্য প্রক্রিয়া চালু করার কারণে, তবে ঘুম.এক্সি খুব দরকারী।

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