উইন্ডো ছাড়াই একটি নির্ধারিত কাজে একটি .bat ফাইল চালান


143

আমার একটি নির্ধারিত টাস্ক রয়েছে যা robocopyপ্রতি ঘণ্টায় চলমান একটি ব্যাচের স্ক্রিপ্ট শুরু করে। প্রতিবার এটি চালিত উইন্ডোটি ডেস্কটপের উপরে রোবোকপির আউটপুট নিয়ে আসে, যা আমি সত্যিই দেখতে চাই না।

আমি নির্ধারিত কাজটি চালিয়ে উইন্ডোটি ন্যূনতম প্রদর্শিত করতে পরিচালিত করেছি

cmd /c start /min mybat.bat

তবে এটি আমাকে প্রতি ঘন্টা একটি নতুন কমান্ড উইন্ডো দেয়। আমি এতে আশ্চর্য হয়েছি, cmd /c"স্ট্রিং দ্বারা নির্দিষ্ট কমান্ড বহন করে তারপরে সমাপ্তি দেওয়া" - দিয়ে আমি অবশ্যই ডক্সকে ভুল বুঝেছি।

কোনও সেমিডি উইন্ডোটি পপিং না করে কোনও ব্যাচ স্ক্রিপ্ট চালানোর কোনও উপায় আছে কি?


আমি এই এক একটি অধিক বাঞ্ছনীয় উত্তর পাওয়া stackoverflow.com/questions/6568736/...
Efekt

উত্তর:


144

পরিবর্তে উইন্ডোজ স্ক্রিপ্ট ফাইলটি ব্যবহার করে আপনি এটি নীরবে চালাতে পারেন। রান পদ্ধতিটি আপনাকে অদৃশ্য মোডে স্ক্রিপ্ট চালানোর অনুমতি দেয়। .vbsএই মত একটি ফাইল তৈরি করুন

Dim WinScriptHost
Set WinScriptHost = CreateObject("WScript.Shell")
WinScriptHost.Run Chr(34) & "C:\Scheduled Jobs\mybat.bat" & Chr(34), 0
Set WinScriptHost = Nothing

এবং সময়সূচী। এই উদাহরণে দ্বিতীয় যুক্তি উইন্ডো শৈলী সেট করে। 0 এর অর্থ "উইন্ডোটি আড়াল করুন"।

রান পদ্ধতির সম্পূর্ণ বাক্য গঠন :

 object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

যুক্তি:

  • অবজেক্ট: WshShell অবজেক্ট।
  • স্ট্রোকমন্ড: স্ট্রিং মানটি যে কমান্ড লাইনটি আপনি চালাতে চান তা নির্দেশ করে। এক্সিকিউটেবল ফাইলটিতে আপনি যে প্যারামিটারটি দিতে চান তা অবশ্যই আপনাকে অন্তর্ভুক্ত করতে হবে।
  • #WindowStyle: ptionচ্ছিক। পূর্ণসংখ্যা মান প্রোগ্রামটির উইন্ডোটির উপস্থিতি নির্দেশ করে। নোট করুন যে সমস্ত প্রোগ্রাম এই তথ্যটি ব্যবহার করে না।
  • bWaitOnReturn: ptionচ্ছিক। আপনার স্ক্রিপ্টের পরবর্তী বিবৃতিতে চালিয়ে যাওয়ার আগে স্ক্রিপ্টটি প্রোগ্রামটি সম্পাদন শেষ হওয়ার অপেক্ষা করবে কিনা তা নির্দেশ করে বুলিয়ান মান। যদি সত্য হিসাবে সেট করা থাকে, প্রোগ্রামটি শেষ না হওয়া পর্যন্ত স্ক্রিপ্ট সম্পাদন বন্ধ হয়ে যায়, এবং রান প্রোগ্রাম দ্বারা ফিরে আসা কোনও ত্রুটি কোড প্রদান করে। যদি মিথ্যা (ডিফল্ট) হিসাবে সেট করা থাকে, রান পদ্ধতিটি প্রোগ্রাম শুরু করার সাথে সাথেই স্বয়ংক্রিয়ভাবে 0 (ত্রুটি কোড হিসাবে ব্যাখ্যা করার জন্য নয়) ফিরে আসে।

+1, ঠিক ঠিক একই জিনিসটি লিখেছেন
স্যাম কোগান

আপনি এটি মুছে ফেলার আগে আমি এটি দেখেছি। আমার ধারণা আমরা দুজনেই বট ;-)
স্প্ল্যাটনে

1
ব্যবহারকারীর নাম, আমি সত্যই বলেছি যে স্যাম আমার চেয়ে অনেক বেশি প্রাপ্য। তবে যাইহোক আপনাকে ধন্যবাদ! এবং একই বাক্যে আমার এবং জন স্কিটির উল্লেখ করবেন না। এটাই নিন্দা! ;-)
স্প্লাটনে

3
"কোন ব্যাচ স্ক্রিপ্টটি কোনও সেমিডি উইন্ডোটি পপিং না করে চালানোর কোনও উপায় আছে?" এই প্রশ্নের উত্তর দেওয়ার জন্য এটি একটি সরাসরি উত্তর দেয়: উইন্ডোজ স্ক্রিপ্ট ফাইল ব্যবহার করে এটি চালান।
মিউয়ার

2
@ আপনারা যদি মনে করেন যে আপনার পথে ফাঁকা স্থান রয়েছে তবে ডাবল উক্তিগুলি প্রয়োজনীয় বলে আমি মনে করি।
স্প্ল্যাটনে

58

আপনি কি এটি নির্ধারিত কাজ হিসাবে চালাচ্ছেন? যদি এটি আলাদা ব্যবহারকারীর অ্যাকাউন্ট হিসাবে চালানোর জন্য সেট করে থাকে তবে এটি লগ-ইন করা ব্যবহারকারীর কাছে দৃশ্যমান হবে না। যদি স্ক্রিপ্টটিতে আইটেমগুলির জন্য কোনও উইন্ডোজ অ্যাক্সেসের প্রয়োজন নেই যার জন্য উইন্ডোজ লেখার (ফাইল শেয়ার বা প্রিন্টারগুলির মতো) প্রয়োজন হয় তবে আপনি এটিকে "এনটি কর্তৃপক্ষ \ সিস্টেম" হিসাবে চালাতে পারেন এবং পাসওয়ার্ডটি ফাঁকা রেখে দিতে পারেন। উইন্ডোজ On-তে, ব্যবহারকারীকে কেবল সিস্টেমে সেট করুন এবং ঠিক আছে চাপুন।

(আপনি সম্ভবত সত্যিকারের ব্যবহারকারী ব্যবহার করতে পারেন যদিও আপনি যদি রোবকপি ব্যবহার করেন ...)

জেআর


3
ধন্যবাদ - এটি আমার জন্য .vbs বিকল্পের চেয়ে কম ঝামেলা ছিল।
ম্যাকেনির

8
আমি "রান হিসাবে" ব্যবহারকারীকে সিস্টেমে সেট করেছিলাম (এটি এটি পরে এনটি কর্তৃপক্ষ Y সিস্টেমে পরিবর্তিত হয়েছিল) এবং এটি আমার পক্ষে কাজ করে। আমার নির্ধারিত টাস্কটি চললে আমি আর পপআপ সিএমডি উইন্ডো দেখতে পাই না। ধন্যবাদ!
রায়ান স্টিল

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

1
সিস্টেম ব্যবহারকারী সহজ এবং মার্জিত, দুর্দান্ত টিপ! +1!
মাত্তিও কন্টা

1
স্বল্প-সুবিধাপ্রাপ্ত প্রশাসনিক মডেলগুলি বাস্তবায়ন করা দেখুন । সিস্টেম অ্যাকাউন্ট ব্যবহারের জন্য এটি কি সর্বনিম্ন অধিকার-নীতি লঙ্ঘন করে? যদি তা হয় তবে প্রশাসকদের বেশিরভাগ পরিস্থিতিতে এটি না করার বিষয়টি জানতে হবে ।
ব্যবহারকারী 34660

29

"নির্ধারিত কার্যটি" ব্যবহারকারী লগ ইন আছে কিনা তা চালিয়ে যান "হিসাবে কেবল কনফিগার করুন।


6
পারফেক্ট! এমনকি আপনি শংসাপত্র সঞ্চয় করতে অক্ষম করতে পারেন এবং তারপরে এটি সিস্টেমে চালিত হওয়ার চেয়ে আরও সুরক্ষিত হয়ে যায়!
বিনকি

17

আপনি সিএইচপি চেষ্টা করতে পারেন (লুকানো প্রক্রিয়া তৈরি করুন) , আপনি যা ভাবেন ঠিক তা করে ...

সিএইচপি.এক্স.এই.এই.এই.এস.ই.

কোনও কমান্ড উইন্ডো না দিয়ে চলে। পারফেক্ট! CMDOW হিসাবে একই লোক দ্বারা তৈরি, তবে এটি আরও উপযুক্ত।


লগ ইন হওয়া ব্যবহারকারীর প্রসঙ্গে যখন আপনাকে টাস্কটি চালানোর দরকার হবে তখন সঠিকভাবে কাজ করে ("ট্রিগার: ইউজার সেশনে কানেক্ট করার সময়", "টাস্ক রান করুন: ইউজারস")
সের্গেই

1
এটি কোনও অন্তর্নির্মিত সরঞ্জাম নয়
JonnyRaa

9

সিএমডাবো একটি দুর্দান্ত সরঞ্জাম যা আপনাকে কমান্ড লাইন থেকে উইন্ডোতে অনেকগুলি, অনেক কিছু করতে দেয়।

করণীয় সহজ কাজগুলির মধ্যে একটি হ'ল বর্তমান উইন্ডোটি (সাধারণত ব্যাটের ফাইলের প্রথম লাইন হিসাবে) আড়াল করা:

cmdow @ /hid

বা দিয়ে একটি নতুন লুকানো প্রক্রিয়া শুরু করুন

cmdow /run /hid mybat.bat 

4
এই এবং রকেটমোনকি উভয়ের পরামর্শেই নতুন সরঞ্জামগুলি ডাউনলোড করা জড়িত, যার অর্থ বিভিন্ন লোকের ডেস্কটপগুলির সাথে আরও সামঞ্জস্য। বেকড ইন, উইন্ডোজ কমান্ড ব্যবহার করা আরও ভাল।
ইয়ানওয়াঘন

কিছু অ্যান্টি-ভাইরাস প্রোগ্রাম দ্বারা প্লাস সেমিডো "বিপজ্জনক" হিসাবে সনাক্ত করা হয়েছে (এটি বিপজ্জনক নয় , তবে যদি সেমিডো ফাইলটি পৃথকীকৃত থাকে তবে সনাক্তকরণটি নিজেই কিছু সমস্যা সৃষ্টি করতে পারে ...)।
ওটিয়েল

3
পপআপ কনসোল এখনও আছে, খুব দ্রুত ফ্ল্যাশ।
বাঁশ

5

এর সাথে স্ক্রিপ্টটি চাওয়ার চেষ্টা করুন

start /b <command>

1
এটি কাজ করে না, তফসিলি কার্যটি-> স্থিতিটি "শুরু করতে পারে না" বলে উল্লেখ করে: শুরু / বি সি: \ file.bat: এবং: start / b "C: \ file.bat": তবে: C: \ file.bat: ঠিক কাজ করে।
ইয়ানওয়াঘন

1
কারণ startকোনও প্রোগ্রাম নয়, এটি একটি আদেশ। cmdআপনাকে চালানোর জন্য প্রোগ্রাম /c start /b <file>হিসাবে এবং যুক্তি হিসাবে নির্দিষ্ট করতে হবে । যাইহোক, এটি এখনও কাজ করে না কারণ এটি এখনও cmdপর্দার জন্য একটি কালো উইন্ডো জন্য কনসোল উইন্ডো তৈরি করবে এবং ফ্ল্যাশ করবে।
সিনিটেক

1
@ সাইনটেক দিয়ে এটিও নিশ্চিত করতে পারেন যে এটি কোনও নতুন উইন্ডো তৈরি করবে না, তবে এটি শুরু করতে আপনার এখনও একটি কনসোল উইন্ডো খোলা থাকা দরকার। এটি প্রকৃতপক্ষে একটি কার্যকর আদেশ, তবে তফসিলি কার্যগুলির সাথে অনুরোধ হিসাবে ব্যবহার করা যাবে না।
জোনাথন

5

আপনি ব্যাচ ফাইলে একটি শর্টকাট তৈরি করতে পারেন, ছোট করার জন্য শর্টকাট সেট করতে পারেন (শর্টকাটের বৈশিষ্ট্যগুলিতে, 'শর্টকাট' ট্যাব) এবং তারপরে শর্টকাট শুরু করার জন্য কাজটি সেট করতে পারেন।

গুরুত্বপূর্ণ : আপনার শর্টকাটের পথটি ম্যানুয়ালি রান পাঠ্য ক্ষেত্রে টাইপ করে '.lnk' এক্সটেনশন দিয়ে সম্পূর্ণ করতে হবে; আপনি যদি এটিতে কেবল ব্রাউজ করার চেষ্টা করেন, এটি শর্টকাটটি যেদিকে ইঙ্গিত দেয় তা সহায়কভাবে নিজেকে পুনঃনির্দেশ করবে ।


এটি উইন্ডোজ 10 x64 এ কাজ করে না, এটি একটি পপআপ দেয় "আপনি এই ফাইলটি কীভাবে খুলতে চান?"
জানুয়ারী

1

আমি বুঝতে পারি যে এই প্রশ্নের উত্তর ইতিমধ্যে একটি নিখুঁত ভাল রেজোলিউশনের সাথে দেওয়া হয়েছে যা উইন্ডোজের স্থানীয় এবং এটি সর্বাধিক সামঞ্জস্যপূর্ণ হওয়া উচিত এবং আমি সম্পূর্ণরূপে সম্মত agree

আমি আরও বলতে চেয়েছিলাম যে আমি @ স্প্ল্যাটেনের মন্তব্যের সাথে একমত নই (তবে তার আসল উত্তর নয়) - অন্যান্য রেফারেন্সড থ্রেডে রেজুলেশন কৃতিত্বের দাবিদার। এই উত্তরের মধ্যে স্ক্রিপ্টটি কোনও পৃথক ব্যবহারকারী (SYSTEM) হিসাবে চালানো জড়িত যা স্ক্রিপ্টের মূল অ্যাক্সেস দেওয়ার সমতুল্য। এটি ROBOCOPY(যেমন জন রেনি উল্লেখ করেছেন) এর মতো কাজের ক্ষেত্রেও ব্যর্থ হবে , যার নেটওয়ার্ক অ্যাক্সেস প্রয়োজন।

আমি এর CMDOWআগে কখনও চেষ্টা করিনি, তবে আমি আর একটি অনুরূপ রেজোলিউশন প্রস্তাব করতে চাই, যা [যদিও উইন্ডোজে নেটিভ-ইন্সটল করা নেই] এখনও বেশিরভাগ সংস্করণে উচ্চ-বহনযোগ্য, এবং এটি 32 এবং 64-বিট উভয় সংস্করণেই আসে এবং তা হ'ল নীরসিএমডি

নিআরসিএমডি হ'ল একটি শক্তিশালী সরঞ্জাম যার মধ্যে অগণিত অপশন রয়েছে যার মধ্যে সবচেয়ে দরকারী, আমি ব্যক্তিগতভাবে কেবল নিম্নলিখিতটি সম্পাদন করে গোপন কমান্ড উইন্ডো চালু করার ক্ষমতা বলে মনে করি:

c:\path\to\nircmd.exe exec hide "c:\path\to\mybat.bat"

থেকে execবিভাগে NirCmd কমান্ড রেফারেন্স :

exec [show/hide/min/max] [application + command-line]

একটি অ্যাপ্লিকেশন চালায় এবং কার্যকরভাবে প্রয়োগযোগ্য প্রয়োগের জন্য এক বা একাধিক কমান্ড-লাইন প্যারামিটার নির্দিষ্ট করে specify [শো / লুকান / মিনিট / সর্বাধিক] পরামিতিটি চলমান অ্যাপ্লিকেশনটি দৃশ্যমান হবে কিনা তা নির্দিষ্ট করে। যদি 'লুকান' নির্দিষ্ট করা থাকে তবে চলমান অ্যাপ্লিকেশনটি ব্যবহারকারীর কাছে দৃশ্যমান হবে না। 'সর্বোচ্চ' নির্দিষ্ট করা থাকলে চলমান অ্যাপ্লিকেশন উইন্ডোটি সর্বাধিক করা হবে। যদি 'মিনিট' নির্দিষ্ট করা থাকে তবে চলমান অ্যাপ্লিকেশন উইন্ডোটি ছোট করা হবে।

সম্পাদনা: আমি একটি ROBOCOPYচাকরী চালানোর চেষ্টা করছিলাম এবং এই উত্তরে পদ্ধতিটি চেষ্টা করেছিলাম, এবং নেটওয়ার্ক অ্যাক্সেস সুবিধাগুলি সম্পাদনা করার পরেও এটি কার্যকর হয়নি। আমি স্ক্রিপ্টটিতে ডাবল-ক্লিক করার চেষ্টা করেছি এবং এটি কাজ করতে পারিনি, তবে এটি কেবল একটি উন্নত কমান্ড প্রম্পটের অধীনে চালানো পেতে পারি। আমি ব্যাচ ফাইলে একটি শর্টকাট তৈরি করেছি এবং এটি প্রশাসক হিসাবে চালিত করেছি এবং এটিতে ডাবল-ক্লিক করে এটি সম্পাদন করতে সক্ষম হয়েছি, তবে যে পদ্ধতিটি আমি শেষ করেছি তা হ'ল এটি সিস্টেম হিসাবে লুকানো চালানো (আমি জানি, আমি জানি) - তবে ROBOCOPYব্যাচ ফাইলের যতক্ষণ সঠিক অনুমতি রয়েছে ততক্ষণ এটির জন্য এটি কার্যকর।

সম্পাদনা 2: কোনও কারণে এটি সিস্টেম হিসাবে কাজ করবে না (সম্ভবত নেটওয়ার্ক অ্যাক্সেসের জিনিসটি আগে উল্লেখ করা হয়েছে) - আমি কেবল এটি লক্ষ্য করেছি ROBOCOPY/ এল পতাকা ছাড়া চলার পরে যা মূলত কেবল একটি সিমুলেশন এবং [আপাতদৃষ্টিতে] হয় না প্রকৃতপক্ষে রিমোট সিস্টেমের সাথে সংযোগ স্থাপন করি, তবে যখন আমি সর্বোচ্চ সুবিধাগুলি সহ ব্যাচ ফাইলটি চালিত করি এবং লুকানো বাক্সটি চেক করি এবং আমি এখনও এটি কমান্ড উইন্ডো না দেখিয়ে ব্যাকগ্রাউন্ডে লগ ইন করা ব্যবহারকারী হিসাবে চালাতে পারি, এটি যে কারও জন্যই উপযুক্ত for ।



-2

আপনার ব্যাচ ফাইলের শেষে একটি প্রস্থান কমান্ড দেওয়ার চেষ্টা করুন। স্ক্রিপ্টটি সম্পন্ন হওয়ার সাথে সাথে কমান্ড উইন্ডোটি বন্ধ করা উচিত।


-2

আউটপুটটি (যদিও উইন্ডো নয়) আড়াল করতে, এটি আপনার ব্যাচ ফাইলের শুরুতে যুক্ত করুন:

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