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


121

আমি জানি আমি ইতিমধ্যে একটি অনুরূপ প্রশ্নের উত্তর দিয়েছি ( উইন্ডোজ বুট করার সময় পটভূমিতে ব্যাচ ফাইল চালানো ), তবে এবার আমার একটি ব্যাচ চালু করা দরকার:

  • অন্য ব্যাচ থেকে,
  • কোনও কনসোল উইন্ডো প্রদর্শিত না করে,
  • সমস্ত যুক্তি অদৃশ্য ব্যাচে পাস দিয়ে with

প্রথম ব্যাচটি কনসোল উইন্ডোতে কার্যকর করা হয়। তবে, আমি চাই না যে দ্বিতীয় ব্যাচটি (প্রথম অ্যাসিক্রোনাস পদ্ধতিতে চালু করা ) কনসোল উইন্ডোটি প্রদর্শন করতে।

আমি একটি ভিবিএস স্ক্রিপ্ট স্ক্রিপ্ট নিয়ে এসেছি যা কেবল এটিই করে এবং আমি অন্যদের কাছে উল্লেখ করার জন্য একটি উত্তর হিসাবে স্ক্রিপ্টটি রেখেছিলাম , তবে আপনার যদি অন্যান্য ধারণা / সমাধান থাকে তবে অবদান নির্দ্বিধায় অনুভব করুন।

দ্রষ্টব্য: উইন্ডোজ কমান্ড প্রসেসরের কনসোল উইন্ডোটির নামকরণ করা হয়নি অনেক লোকের দ্বারা ডস উইন্ডোটি সত্যই সঠিক নয়।


উত্তরের জন্য আপনি সমস্ত ধন্যবাদ। আমি যা বুঝি সেগুলি থেকে, যদি অদৃশ্য মোডে চালানোর জন্য আমার একটি অবিচ্ছিন্নভাবে একটি স্ক্রিপ্ট কল করতে হয়:

  • কনসোল উইন্ডোতে ইতিমধ্যে দ্বিতীয় স্ক্রিপ্ট থেকে start /bযথেষ্ট।
  • উইন্ডোজ থেকে, দ্বিতীয় উইন্ডোটি ট্রিগার না করেই , আমার সমাধানটি এখনও বৈধ।

আপনি অন্য ব্যাচ ফাইল থেকে ব্যাচ ফাইল চালু করছেন? এই ইতিমধ্যে চলমান ব্যাচ ফাইলে কি উইন্ডো রয়েছে?
ওডথিংকিং

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

উত্তর:


53

তাত্পর্যপূর্ণভাবে চালনার জন্য আপনার কি দ্বিতীয় ব্যাচের ফাইলের দরকার? সাধারণত একটি ব্যাচের ফাইল callকমান্ডের সাথে আরেকটি সমকালীনভাবে চালিত হয় এবং দ্বিতীয়টি প্রথমটির উইন্ডোটি ভাগ করে দেয়।

আপনি করতে পারেন ব্যবহার start /b second.bat একটি দ্বিতীয় ব্যাচ ফাইল আরম্ভ করার জন্য একটি আপনার প্রথম যে শেয়ারের আপনার প্রথম একজনের জানালা থেকে সিঙ্ক্রোনাস। উভয় ব্যাচ ফাইল যদি একই সাথে কনসোলে লিখিত হয় তবে আউটপুটটি ওভারল্যাপ হয়ে যাবে এবং সম্ভবত অনিবার্য। এছাড়াও, আপনি exitআপনার দ্বিতীয় ব্যাচ ফাইলের শেষে একটি কমান্ড রাখতে চাইবেন , বা cmdসবকিছু শেষ হয়ে গেলে আপনি দ্বিতীয় শেলের মধ্যে চলে যাবেন ।


1
সঠিক। আমি বিশ্বাস করি যে স্টার্ট / বি একটি নতুন উইন্ডো খুলবে, তবে ডস উইন্ডো থেকে চালানো হলে এটি একই উইন্ডো ভাগ করে দেয়।
ভোনসি

110

এখানে একটি সম্ভাব্য সমাধান:

আপনার প্রথম স্ক্রিপ্ট থেকে আপনার দ্বিতীয় স্ক্রিপ্টকে নিম্নলিখিত লাইনের সাথে কল করুন:

wscript.exe invis.vbs run.bat %*

প্রকৃতপক্ষে, আপনি এর সাথে একটি ভিবিএস স্ক্রিপ্ট কল করছেন:

  • [পথ] your আপনার স্ক্রিপ্টের নাম
  • আপনার স্ক্রিপ্ট দ্বারা প্রয়োজনীয় অন্যান্য সমস্ত যুক্তি ( %*)

তারপরে, invis.vbs আপনার স্ক্রিপ্টটিকে উইন্ডোজ স্ক্রিপ্ট হোস্ট রান () পদ্ধতিতে কল করবে , যা গ্রহণ করে:

  • #WindowStyle: 0 এর অর্থ "অদৃশ্য উইন্ডো"
  • bWaitOnReturn: মিথ্যা মানে আপনার প্রথম স্ক্রিপ্টটি আপনার দ্বিতীয় স্ক্রিপ্টটি শেষ হওয়ার অপেক্ষা করতে হবে না

এখানে invis.vbs:

set args = WScript.Arguments
num = args.Count

if num = 0 then
    WScript.Echo "Usage: [CScript | WScript] invis.vbs aScript.bat <some script arguments>"
    WScript.Quit 1
end if

sargs = ""
if num > 1 then
    sargs = " "
    for k = 1 to num - 1
        anArg = args.Item(k)
        sargs = sargs & anArg & " "
    next
end if

Set WshShell = WScript.CreateObject("WScript.Shell")

WshShell.Run """" & WScript.Arguments(0) & """" & sargs, 0, False

3
2 কে দর্শন এবং কী দুর্দান্ত পোস্ট + উত্তর, আরও বেশি লোক এই থ্রেডে ভোট দেওয়া উচিত
রিক টোকিও

দুর্দান্ত সমাধান, ঠিক আমার যা প্রয়োজন ছিল।
নিখিল

একমাত্র সমস্যা হ'ল এটি "cmd.exe" নামে একটি প্রক্রিয়া তৈরি করে, যা ভবিষ্যতে খুঁজে পাওয়া শক্ত।
আদিত্য গুপ্ত

12

ব্যাচ ফাইলকে একটি এক্সে রূপান্তর করুন। ব্যাট টু এক্সএইভার রূপান্তরকারী বা অনলাইন ব্যাট টু এক্স্ভার কনভার্টারের চেষ্টা করুন এবং এটিকে ভূত অ্যাপ্লিকেশন হিসাবে চালানোর বিকল্পটি বেছে নিন, অর্থাত কোনও উইন্ডো নেই।


3
সম্ভব, তবে আমি এই উদাহরণে কোনও অতিরিক্ত পদক্ষেপ এড়াতে চেষ্টা করব।
ভনসি

21
আমি সাধারণত সেই অদ্ভুত নই তবে বেনামি কাউকে আমার জন্য সেই এক্সাই তৈরি করতে দেওয়া কি খুব বোকামি হবে না? সমস্ত ধরণের দূষিত পদার্থ ইনজেকশন দেওয়া যেতে পারে।
টোবিয়াস

9

আমি মনে করি এটি ডস উইন্ডোটি না খোলার মাধ্যমে ব্যাচ ফাইল চালানোর সবচেয়ে সহজ এবং সংক্ষিপ্ত সমাধান, আপনি যখন পর্যায়ক্রমে চালনার জন্য কমান্ডের একটি সেট নির্ধারণ করতে চান তখন এটি খুব বিভ্রান্তিকর হতে পারে, তাই ডস উইন্ডোটি পপ আপ করে রাখবে, এখানে আপনার সমাধানটি রয়েছে । ব্যাচ ফাইলে কল করতে একটি ভিবিএস স্ক্রিপ্ট ব্যবহার করুন ...

Set WshShell = CreateObject("WScript.Shell" ) 
WshShell.Run chr(34) & "C:\Batch Files\ mycommands.bat" & Chr(34), 0 
Set WshShell = Nothing 

উপরের রেখাগুলি একটি সম্পাদকে অনুলিপি করুন এবং .VBS এক্সটেনশন দিয়ে ফাইলটি সংরক্ষণ করুন। .BAT ফাইলের নাম এবং সেই অনুসারে পথ সম্পাদনা করুন।


1
আকর্ষণীয় পদ্ধতির, আমার সমাধানের চেয়ে অবশ্যই খাটো। +1
ভোনসি

দুর্দান্ত সমাধান। পড়া এই আমি করেছি বিজ্ঞপ্তি কোন সত্যিই ব্যবহার করতে হবে হয় Set WshShell = Nothingআমার জন্য জরিমানা কাজ করেন এবং আপনাকে এটা করতে একটি এমনকি ছোট উপায় থাকতে পারে।
প্যাট্রিক বার্ড

7

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

1) আইএক্সপ্রেস সমাধানটি পুরানো উইন 95/98 মেশিনেও ব্যবহার করা যেতে পারে। আইেক্সপ্রেস একটি সত্যই প্রাচীন সরঞ্জাম যা এখনও উইন্ডোজের সাথে প্যাকেজড - আর্গুমেন্টগুলি কেবল আদেশ এবং তার যুক্তিগুলি গ্রহণ করে।

ব্যবহারের উদাহরণ:

call IEXPhidden.bat "cmd /c myBat.bat"  "argument"

2) স্ক্যাসটাক্স - আবার কেবল দুটি আর্গুমেন্ট গ্রহণ করে - কমান্ড এবং আর্গুমেন্টগুলি। এছাড়াও এটি পরীক্ষা করে যদি এটি এলিভেটেড অনুমতি দিয়ে শুরু হয় এবং যদি সম্ভব হয় ওয়েভটুইটিলের মাধ্যমে প্রক্রিয়াটির পিআইডি পায় (ভিস্টা থেকে পাওয়া যায় এবং উপরে তাই উইন্ডোজের নতুন সংস্করণটি গ্রহণ করবে) পিআইডি) কমান্ড।

ব্যবহারের উদাহরণ:

call SCHPhidden.bat "cmd /c myBat.bat"  "argument"

3) 'WScript.Shell' - স্ক্রিপ্টটি 'WScript.Shell' এর পূর্ণ মোড়কযুক্ত এবং প্রতিটি সম্ভাব্য বিকল্প কমান্ড লাইন বিকল্পগুলির মাধ্যমে সেট করা যেতে পারে t এটি একটি jscript / ব্যাচের সংকর এবং একটি ব্যাট হিসাবে বলা যেতে পারে।

ব্যবহারের উদাহরণ (আরও তথ্যের জন্য '-h' দিয়ে সহায়তা মুদ্রণ করুন):

call ShellRunJS.bat "notepad.exe" -style 0 -wait no 

৪) 'উইন 32_প্রসেস স্টার্টআপ' - আবার পুরো র‍্যাপার এবং সমস্ত বিকল্প কমান্ড লাইন আর্গুমেন্টের মাধ্যমে অ্যাক্সেসযোগ্য T এই সময় এটি কিছু জেএসক্রিপ্ট এবং কিছু ভিবিএস স্ক্রিপ্ট কোডের সাথে ডাব্লুএসএফ / ব্যাচ সংকর - তবে এটি শুরু হওয়া প্রক্রিয়ার পিআইডি ফেরত দেয় f যদি প্রক্রিয়াটি হয় গোপন নয় X / Y স্থানাঙ্কের মতো কিছু বিকল্প ব্যবহার করা যেতে পারে (প্রতিটি এক্সিকিউটেবলের জন্য প্রযোজ্য নয় - তবে উদাহরণস্বরূপ cmd.exe স্থানাঙ্ক গ্রহণ করে)।

ব্যবহারের উদাহরণ (আরও তথ্যের জন্য '-h' দিয়ে সহায়তা মুদ্রণ করুন):

call win32process.bat "notepad" -arguments "/A openFile.txt"  -showWindows 0 -title "notepad"

5)। নেট সমাধান । প্রসেসস্টার্টআইএনফো বিকল্পের বেশিরভাগ বিকল্প ব্যবহার করা হয় (তবে শেষে আমি সমস্ত কিছু অন্তর্ভুক্ত করতে খুব ক্লান্ত হয়ে পড়েছিলাম):

ব্যবহারের উদাহরণ (আরও তথ্যের জন্য '-h' দিয়ে সহায়তা মুদ্রণ করুন):

call ProcessStartJS.bat "notepad" -arguments "/A openFile.txt"  -style Hidden -directory "." -title "notepad" -priority Normal

2

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

এটি শুরু করতে ব্যাচফাইলটি দেখতে পারা যায় (অনির্ধারিত):

echo call c:\path\to\batch.cmd %* > c:\windows\system32\autoexnt.bat
net start autoexnt

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

যা শুরু করেছো উইন্ডোস 2003 রিসোর্স কিট ডাউনলোড এটি পেতে। রিসোর্স কিটটি উইন্ডোজ এক্সপির মতো উইন্ডোজের অন্যান্য সংস্করণেও ইনস্টল করা যেতে পারে।


1
আকর্ষণীয়, তবে এই দৃশ্যের জন্য একটি কঠোর ওভারকিল।
ভোনসি

2

"রানাস" ব্যবহার করে বা উইন্ডোজ শিডিউল টাস্কগুলিতে ভিন্ন ব্যবহারকারীর অধীনে নির্ধারিত করে এটিকে একটি পৃথক ব্যবহারকারীর নামে চালান।


সম্ভব, তবে ঠিক ঠিক পরে যাচ্ছি না (পটভূমিতে সরাসরি
অ্যাসিক্রোনাস

0

আপনি .vbs ফাইলের মাধ্যমে আপনার .bat ফাইলটি চালাতে পারেন আপনার .vbs ফাইলে
নিম্নলিখিত কোডটি অনুলিপি করুন:

Dim WshShell
Dim obj
Set WshShell = WScript.CreateObject("WScript.Shell") 
obj = WshShell.Run("C:\Users\file1.bat", 0) 
obj = WshShell.Run("C:\Users\file2.bat", 0)  and so on
set WshShell = Nothing 

0

আপনি ব্যবহার করতে পারেন

start /MIN notepad.exe

পিএস: দুর্ভাগ্যক্রমে, উইন্ডোর হ্রাসের অবস্থাটি চালানোর আদেশের উপর নির্ভর করে। ভিজি কাজ করে না

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