আমি কীভাবে অন্য ব্যাট ফাইল থেকে পটভূমিতে ব্যাট ফাইল চালাব?


92

আমার একটি "সেটআপ" স্ক্রিপ্ট রয়েছে যা আমি সকালে চালনা করি যা আমার প্রয়োজন সমস্ত প্রোগ্রাম শুরু করে। এখন তাদের মধ্যে কিছুগুলির জন্য পরিবেশের অতিরিক্ত সেটআপ প্রয়োজন, তাই আমি তাদের ছোট বিএটি স্ক্রিপ্টগুলিতে মোড়ানো প্রয়োজন।

আমি কীভাবে পটভূমিতে উইন্ডোজ এক্সপিতে এই জাতীয় স্ক্রিপ্ট চালাব?

CALL env-script.bat এটি সমকালীনভাবে চালিত হয়, যেমন এনভি-স্ক্রিপ্টের কমান্ডটি শেষ হওয়ার পরে সেটআপ স্ক্রিপ্টটি চলতে পারে।

START/B env-script.bat একই কমান্ড প্রম্পটে CMD.exe এর আরেকটি উদাহরণ চালায়, এটিকে সত্যই অগোছালো অবস্থায় ফেলে রাখা হয় (আমি নেস্টেড সিএমডি.এক্সির আউটপুট দেখি, কীবোর্ডটি কিছুক্ষণের জন্য মারা গেছে, স্ক্রিপ্টটি কার্যকর হয় না)।

START/B CMD env-script.batএকই ফলন দেয়। সিএমডি-তে থাকা কোনও পতাকা আমার বিলের সাথে মেলে না।

উত্তর:


72

প্রকৃতপক্ষে, নিম্নলিখিতটি আমার পক্ষে ভাল কাজ করে এবং নতুন উইন্ডোজ তৈরি করে:

test.cmd:

@echo off
start test2.cmd
start test3.cmd
echo Foo
pause

test2.cmd

@echo off
echo Test 2
pause
exit

test3.cmd

@echo off
echo Test 3
pause
exit

একত্রিত করুন যে পরামিতি সঙ্গে startযেমন /min, মোশে নির্দিষ্ট হিসাবে আপনি কি আপনার সামনে ডিম নতুন জানালা না চান।


4
ঠিক আছে, এটি কাজ করে তবে 100% নিখুঁত নয়: আমি "টেস্ট 2" তে "রিটার্ন" টিপানোর পরে, উইন্ডোটি বন্ধ হয় না। কোন ধারনা?
অ্যারন দিগুল্লা

এগুলি পরে পুনরায় বন্ধ করতে আপনি বানানো ব্যাচগুলিতে "প্রস্থান" যুক্ত করতে পারেন। দুঃখিত, এখনও পর্যন্ত পরীক্ষা করেনি :)
জোয়ি

আসলে স্ক্রিপ্ট 1.bat \ n শুরু স্ক্রিপ্ট 2.bat \ n শুরু স্ক্রিপ্টএন.বাট আমার জন্য যথেষ্ট ছিল
andrej

142

দুই বছরের পুরানো, তবে সম্পূর্ণতার জন্য ...

স্ট্যান্ডার্ড, ইনলাইন অ্যাপ্রোচ: (যেমন &লিনাক্স ব্যবহার করার সময় আপনি যে আচরণটি পেয়েছিলেন)

START /B CMD /C CALL "foo.bat" [args [...]]

নোটস: ১। CALL.Bat ফাইলের সাথে যুক্ত করা হয়েছে কারণ এটি সাধারণত যেখানে যায় .. (যেমন এটি CMD /C CALL "foo.bat"ফর্মটিকে এ্যাসক্রোনাস হিসাবে তৈরি করার জন্য এটি কেবলমাত্র একটি এক্সটেনশন Usually এখানে.); 2. .bat ফাইলের চারপাশে ডাবল উক্তিগুলি কেবলমাত্র তখনই প্রয়োজন হয় যদি নামের ফাঁকা থাকে। (নামটি এমন একটি পথ হতে পারে যার ক্ষেত্রে এর বেশি সম্ভাবনা থাকে))।

আপনি যদি আউটপুটটি না চান:

START /B CMD /C CALL "foo.bat" [args [...]] >NUL 2>&1

আপনি যদি চান যে ব্যাটটি একটি স্বাধীন কনসোলে চালিত হয়: (যেমন অন্য একটি উইন্ডো)

START CMD /C CALL "foo.bat" [args [...]]

আপনি যদি চান অন্য উইন্ডোটি এরপরে ঝুলতে পারে:

START CMD /K CALL "foo.bat" [args [...]]

দ্রষ্টব্য: এটি প্রকৃতপক্ষে দুর্বল ফর্ম তবে আপনার যদি না থাকে এমন ব্যবহারকারীরা বিশেষত খোলা উইন্ডোটিকে সাধারণ কনসোল হিসাবে ব্যবহার করতে চান। যদি আপনি কেবল আউটপুটটি দেখতে উইন্ডোটির চারদিকে আটকে থাকতে চান PAUSEতবে ব্যাট ফাইলের শেষে একটি স্থাপন করা ভাল । বা এখনও, ^& PAUSEকমান্ড লাইনের পরে যুক্ত করুন :

START CMD /C CALL "foo.bat" [args [...]] ^& PAUSE

10
&একজন "এবং তারপরে" (পরিভাষা?) অপারেটর। (যেমন cmd1 & cmd2মানে হলো "cmd1" এবং তারপরে "CMD2" না। ভিন্ন &&অপারেটর, "CMD2" এর সম্পাদন "cmd1" এর সফল প্রস্থান উপর নির্ভর করে না।) ^পালাতে &এটি ধ্বংস করা হচ্ছে পরিবর্তে সিএমডি এর আর্গুমেন্ট মধ্যে যায় তাই এবং একই কনসোল দ্বারা চালিত যে START দৌড়েছিল।
এন্টাক

ধন্যবাদ এটি খুব সহায়ক। আমি লিনাক্সে কিছু স্ক্রিপ্ট পোর্ট করতে চলেছিলাম, কারণ অন্যান্য গাইডরা আমার সন্ধান করা সম্পূর্ণ কার্যকারিতা দেয় startএবং দেয় cmdনি। আপনার উত্তর এটি নখ।
ইট্রেটর

4
আপনি যদি আউটপুটটি না চান তবে পুনঃনির্দেশটি এড়াতে হবে যাতে এটি সিএমডিতে যায়। এছাড়াও কল প্রয়োজন নেই:START /B "" CMD /C "foo.bat" [args [...]] ^>nul 2^>^&1
dbenham

4
@ ডিবেনহাম: আপনি যা বলছেন তা বোধগম্য হলেও, তা START /B "" CMD /C PING 127.0.0.1 >NULনির্বিশেষে কাজ করে বলে মনে হচ্ছে এবং কিছুই আউটপুট নয়। (সম্ভবত কারণ CMDউত্তরাধিকারী START'র ইনপুট / আউটপুট হ্যান্ডলগুলি।) আমি পার্থক্য নেই আপনি রাখতে চান তাহলে START' অক্ষত সম্ভবত একটি ভাল ধারণা গুলি (ত্রুটি) আউটপুট। CALLঠিক আছে কারণ আমি অনুভব করেছি এটি রাখা ভাল অনুশীলন। (অর্থাত্ সিঙ্ক্রোনাস ব্যাট কলগুলির CALLজন্য না ব্যবহারের ফলে অপ্রত্যাশিত বহির্গমন কোডের ফলস্বরূপ ফলস্বরূপ ব্যাট কলগুলি যথাযথভাবে প্রয়োগ করা হয় না, যেমন এই ক্ষেত্রে যেমন হয় আমি CALL
ততক্ষণ জোড় করে রাখি

7

যেহেতু সিএমডি স্ক্রিপ্ট থেকে পটভূমিতে কোনও কিছু কার্যকর করার একমাত্র উপায় START হল, তাই আমি আপনাকে এটি ব্যবহার চালিয়ে যাওয়ার পরামর্শ দিই। / বি মোডিফায়ারের পরিবর্তে, / এমআইএন চেষ্টা করুন যাতে নতুন তৈরি উইন্ডো আপনাকে বিরক্ত করবে না। এছাড়াও, আপনি / LOW বা / BELOWNORMAL এর সাথে কম কিছুতে অগ্রাধিকার সেট করতে পারেন যা আপনার সিস্টেমে সাড়া জাগাতে পারে।


-1 সমস্যাটি হ'ল START আপনি যখন একটি BAT ফাইল শুরু করবেন তখন একটি নতুন উইন্ডো তৈরি করে না; পরিবর্তে এটি বর্তমান উইন্ডোটিকে পুনরায় ব্যবহার করে এবং I / O দুটি সিএমডি প্রক্রিয়া মিশ্রিত করে।
অ্যারন দিগুল্লা

4
এটি একটি নতুন উইন্ডো তৈরি করছে না কারণ আপনি / বি পতাকা ব্যবহার করছেন। এটা মুছুন.
মোশে

5

অগ্রভাগ / পটভূমি শব্দ ব্যতীত। চলমান উইন্ডোটি আড়াল করার আরেকটি উপায় হ'ল vbscript এর মাধ্যমে, যদি এটি এখনও আপনার সিস্টেমে উপলব্ধ থাকে।

DIM objShell
set objShell=wscript.createObject("wscript.shell")
iReturn=objShell.Run("yourcommand.exe", 0, TRUE)

এটিকে sth.vbs হিসাবে নাম দিন এবং ব্যাট থেকে কল করুন, শিডযুক্ত টাস্কে রেখে দেওয়া হবে Pers


আমার নির্দিষ্ট ব্যবহারের ক্ষেত্রে, আমি কাজ করতে পেলাম এটিই কেবলমাত্র সমাধান ছিল ...
বেন

0

একটি নতুন সি # উইন্ডোজ অ্যাপ্লিকেশন তৈরি করুন এবং এই পদ্ধতিটি মূল থেকে কল করুন:

public static void RunBatchFile(string filename)
{
    Process process = new Process();

    process.StartInfo.FileName = filename;

    // suppress output (command window still gets created)
    process.StartInfo.Arguments = "> NULL";

    process.Start();
    process.WaitForExit();
}

4
আহ ... আমি আশা করছিলাম যে এত সহজ কিছু ভিজ্যুয়াল স্টুডিও ইনস্টল করার প্রয়োজন হবে না ...
অ্যারন ডিগুল্লা

4
পাওয়ারশেল 100% না পাওয়া পর্যন্ত - সি # সত্যিই ওভারকিল।
জিম

4
হারুন: সি # সংকলক। নেট ফ্রেমওয়ার্ক 2 এ অন্তর্ভুক্ত রয়েছে, সুতরাং আপনি কেবল একটি পাঠ্য সম্পাদকে কিছু কোড সম্পাদনা করতে এবং এটি সংকলন করতে পারেন। তবুও, যেহেতু এটি একটি ব্যাচের ফাইলে পুরোপুরি সম্ভব, আমি সি # ওভারকিলও বলতে পারি।
জোয়

0

এটি আমার উইন্ডোজ এক্সপি হোম ইনস্টলেশন, ইউনিক্স পদ্ধতিতে কাজ করে:

call notepad.exe & 

7
আমি মনে করি এটি কেবল কাকতালীয়ভাবে কাজ করে এবং এটি প্রয়োজনীয় নয়।
স্যাম ওয়াটকিন্স

4
হ্যাঁ, নোটপ্যাড.এক্স.ই.
এন্টাক

0

প্রকৃতপক্ষে এই বিকল্পটির সাথে শেষে খুব সহজ:

সি: \ শুরু করুন BATCH.bat -WindowStyle লুকানো


উইন্ডোজ কমান্ডের startকোনও -WindowStyleবিকল্প নেই।
স্টিফান

টুইটারে বিজোড় পথ ( C:` instead of সি: \ উইন্ডোজ`) পরামর্শ দেয় যে সে ইন্টারনেটে কোথাও একটি সরঞ্জাম পেয়েছে এবং তার হার্ড ড্রাইভে অনুলিপি করেছে।
অ্যারন দিগুল্লা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.