উইন্ডোজ ব্যাচের ফাইলগুলি: .bat বনাম। সিএমডি?


747

আমি এটি বুঝতে পেরেছি, .batপুরানো 16-বিট নামকরণ কনভেনশন, এবং .cmd32-বিট উইন্ডোজের জন্য, অর্থাৎ এনটি দিয়ে শুরু হয়। তবে আমি সর্বত্র .bat ফাইলগুলি দেখতে পাচ্ছি এবং তারা প্রত্যয় ব্যবহার করে ঠিক একই কাজ করবে বলে মনে হচ্ছে। ধরে নেওয়া যাক যে আমার কোড, এটা সত্যিই কোন ব্যাপার কোন পথে আমি আমার ব্যাচ ফাইল নাম NT তে চেয়ে পুরোনো কিছু চালানো প্রদান করার প্রয়োজন নেই হবে, অথবা কিছু হয় gotcha হয় আমাকে অপেক্ষা ভুল প্রত্যয় ব্যবহার করে?


19
শুধু বিভ্রান্তি যোগ করার জন্য আমাদের কাছে এখন .ps1 ফাইল রয়েছে।
মার্টিন ব্রাউন

42
আমি যদি ভুল না হয়ে থাকি তবে .ps1 ফাইলগুলি উইন্ডোজ পাওয়ার শেল ফাইল হওয়া উচিত। আমি যদিও ভুল হতে পারে।
সিএমএস_৯৫

উত্তর:


454

থেকে এই খবর গ্রুপ পোস্টিং দ্বারা মার্ক Zbikowski নিজে:

সিএমডি.এক্সই-র হিসাবে .CMD এবং .BAT এর মধ্যে পার্থক্যগুলি হ'ল: এক্সটেনশন সক্ষম করার সাথে সাথে .CMD ফাইলগুলিতে পাঠ / অ্যাপেন্ডেল / প্রম্পট / এসইটি / এসএসওসি ত্রুটি নির্বিশেষে ERRORLEVEL সেট করবে। .BAT কেবল ত্রুটিগুলিতে ERRORLEVEL সেট করে।

অন্য কথায়, যদি ERRORLEVEL অ-0-এ সেট করা থাকে এবং তারপরে আপনি সেই কমান্ডগুলির মধ্যে একটি চালনা করেন তবে ফলাফলিত ERRORLEVEL হবে:

  • একটি .bat ফাইলে এর অ-0 মানে একা রেখে যান
  • .Cmd ফাইলে 0 এ পুনরায় সেট করুন।

4
এর দ্বারা কি বোঝানো হয় যে .bat স্ক্রিপ্টটি ব্যবহার করলে কোনও সাফল্যের সাথে কোনও ERRORLEVEL 0 মান ফিরে আসবে না? যদি এটি সত্য হয়, আমি এটি কখনই লক্ষ্য করিনি।
জাঙ্গোফান 16

31
আমি মনে করি এর অর্থ এই যে যদি ERRORLEVEL অ -0 তে সেট করা থাকে, তবে আপনি সেই কমান্ডগুলির মধ্যে একটি চালান, এটি একটি .bat ফাইলে একা (নন -0) রেখে যাবে তবে .Cmd ফাইলে 0 এ পুনরায় সেট করুন। তবে, উইন্ডোজ যা তা হ'ল এটি যথেষ্টই সম্ভব, এটি পিগ লাতিন ভাষায় আপনাকে বলতে অস্বীকারকারী কণ্ঠস্বর সৃষ্টি করে, "যদি আপনি এত যত্নশীল হন তবে নিজেকে পুনরায় সেট করুন!"!
ম্যাড সায়েন্টিস্ট

5
আমি মনে করি এটি কেবলমাত্র নির্দিষ্ট সুনির্দিষ্ট আদেশগুলি বিভিন্ন সেট / সেট না করে পৃথক সেট করবে। অন্যরা স্বাভাবিকের মতো কাজ করবে
সাইকোডাটা

1
আমি এখন বুঝতে পেরেছি. আমি আমার সারাংশ আপডেট করেছি স্পষ্টতই, কোনও set var=..বিবৃতি কল করার সময় এটি (পুনরায়) ত্রুটিযুক্ত সেট করে না । যা বিজোড়, কারণ আমি ধরে নিয়েছিলাম যে এটি প্রত্যাশিত আচরণ ছিল। উভয়ের পক্ষে যুক্তি দেওয়া যেতে পারে। আমি .bat ফাইল দিয়ে আটকে যাব। :-)
wasatchwizard

1
দ্রষ্টব্য - অ্যাপেন্ড কমান্ডটি অননুমোদিত DPATH কমান্ডের সাথে প্রতিস্থাপন করা হয়েছে, তবুও DPATH /?কমান্ডটি অ্যাপেন্ডেল হিসাবে তালিকাভুক্ত করে। এছাড়াও, উইকি নিবন্ধটি তখন থেকে বেশিরভাগ ক্ষেত্রেই সংশোধন করা হয়েছে, এটি ডিপিএটিএইচ তালিকাভুক্ত না করে।
dbenham

417

এই থ্রেডে বিভিন্ন উত্তর এবং উদ্ধৃত উল্লেখগুলি থেকে যাচাই করা তথ্যের সংকলন এখানে দেওয়া হয়েছে:

  1. command.com এমএস-ডস-এ প্রবর্তিত 16-বিট কমান্ড প্রসেসর এবং এটি Win9x সিরিজের অপারেটিং সিস্টেমগুলিতে ব্যবহৃত হয়েছিল।
  2. cmd.exeউইন্ডোজ এনটি-তে 32-বিট কমান্ড প্রসেসর (64-বিট উইন্ডোজ ওএসেও একটি 64-বিট সংস্করণ রয়েছে)। cmd.exeউইন্ডোজ 9x এর অংশ ছিল না। এটি ওএস / 2 সংস্করণ 1.0 এ উদ্ভূত হয়েছিল এবং cmd16-বিটের ওএস / 2 সংস্করণ শুরু হয়েছিল (তবে এটির মতো কমান্ড সহ সম্পূর্ণরূপে সুরক্ষিত মোড প্রোগ্রাম ছিল start)। উইন্ডোজ এনটি cmdওএস / ২ থেকে উত্তরাধিকার সূত্রে প্রাপ্ত , তবে উইন্ডোজ এনটি-র উইন 32 সংস্করণ 32-বিট থেকে শুরু হয়েছিল। 1992 সালে ওএস / 2 32-বিট চলে cmdগেলেও এটি 16-বিট ওএস / 2 1.x প্রোগ্রাম হিসাবে থেকে যায়।
  3. ComSpecEnv পরিবর্তনশীল সংজ্ঞায়িত কোন প্রোগ্রাম চালু করা হয় .batএবং .cmdস্ক্রিপ্ট। (উইনএনটি দিয়ে এটি ডিফল্ট হয় cmd.exe)
  4. cmd.exeপিছনে সামঞ্জস্যপূর্ণ command.com
  5. উইন্ডোজ 9 এক্স-তে দুর্ঘটনাজনিত কার্যকর হওয়া রোধ cmd.exeকরতে একটি স্ক্রিপ্টের জন্য নামকরণ .cmdকরা যেতে পারে এই ফাইলের নাম এক্সটেনশানটি ওএস / 2 সংস্করণ 1.0 এবং 1987 এ ফিরে আসে।

এখানে এমন cmd.exeবৈশিষ্ট্যগুলির একটি তালিকা রয়েছে যা দ্বারা সমর্থিত নয় command.com:

  • দীর্ঘ ফাইলের নাম (8.3 ফর্ম্যাট অতিক্রম করে)
  • কমান্ড ইতিহাস
  • ট্যাব সমাপ্তি
  • পালানোর চরিত্র: ^(এর জন্য ব্যবহার করুন \ & | > < ^)
  • ডিরেক্টরি স্ট্যাক: PUSHD/POPD
  • পূর্ণসংখ্যার গাণিতিক: SET /A i+=1
  • অনুসন্ধান করুন / প্রতিস্থাপন / সাবস্ট্রিং: SET %varname:expression%
  • কমান্ড প্রতিস্থাপন: FOR /F(পূর্বে বিদ্যমান, উন্নত করা হয়েছে)
  • কার্যাবলী: CALL :label

আদেশ কার্যকর:

যদি স্ক্রিপ্টের (bat.bat, test.cmd) উভয় .bat এবং .Cmd সংস্করণ একই ফোল্ডারে থাকে এবং আপনি এক্সটেনশন (পরীক্ষা) ছাড়াই স্ক্রিপ্টটি চালান, ডিফল্টরূপে স্ক্রিপ্টের .bat সংস্করণটি চলবে, এমনকি 64৪-বিট উইন্ডোজ on এ কার্যকর করার ক্রমটি পাঠ্য পরিবেশের পরিবর্তনশীল দ্বারা নিয়ন্ত্রিত হয়। কমান্ড প্রম্পট আরও তথ্যের জন্য ফাইলগুলি কার্যকর করে সেই আদেশটি দেখুন ।

তথ্যসূত্র:

উইকিপিডিয়া: কমান্ড শেলের তুলনা


4
বেশ কয়েকটি ছোটখাটো বিষয়: 1) .bat অগত্যা কমান্ড ডট কমকে ডাকে না - দৃশ্যত যখন কমান্ড ডট কম ডাকা হয় তখন একটি জটিল রহস্য; 2) কমান্ড ডট কম এমএস-ডসের সাথে চালু হয়েছিল; 3) cmd.exe বেশিরভাগ কমান্ড ডট কম স্ক্রিপ্ট চালাতে পারে তবে কয়েকটি ছোটখাটো কমান্ড ডট কম রয়েছে যা সেমিডিতে কাজ করে না।
মাইকেল বারার


1
ক্রিস: উইকিপিডিয়া নিবন্ধের বর্তমান সংস্করণটি দেখুন, esp। মার্ক Zbikowski দ্বারা মন্তব্য groups.google.com/group/...
মার্ক

2
এই বিষয়ে কিছু তথ্য যুক্ত করতে: কমান্ড ডটকমের dir filenameমতই dir filename.*; ওয়াইল্ড কার্ডটি cmd.exe এ প্রয়োজনীয়। কমান্ড ডট কম rem Create an empty file > empty.txtকাজ করে; cmd.exe এ নেই।
আছিনী

2
এটির একটি সামান্য অংশই ওপি-র প্রশ্নের সাথে প্রাসঙ্গিক বলে মনে হচ্ছে, যা .bat এবং .Cmd এর মধ্যে পার্থক্য সম্পর্কে, কমান্ড ডট কম এবং সেমিডি.এক্সির মধ্যে পার্থক্য নয়। আমি এটি পড়ার পরে, প্রশ্নটি একটি .bat ফাইল এবং একটি। সিএমডি ফাইলের মধ্যে পার্থক্য সম্পর্কে, অন্যান্য সমস্ত জিনিস সমান হচ্ছে।
স্টিয়ার্ট

85

এই উত্তরগুলি কিছুটা দীর্ঘ এবং ইন্টারেক্টিভ ব্যবহারের উপর দৃষ্টি নিবদ্ধ করে। স্ক্রিপ্টিংয়ের জন্য গুরুত্বপূর্ণ পার্থক্যগুলি হ'ল:

  • .cmd অ-এনটি সিস্টেমে অযত্নে কার্যকর হওয়া রোধ করে।
  • .cmd সাফল্যে ত্রুটিযুক্তকে 0-এ পরিবর্তন করতে অন্তর্নির্মিত কমান্ডগুলিকে সক্ষম করে।

উত্তেজনাপূর্ণ না, তাই না?

.cmdকমান্ড এক্সটেনশান নামে পরিচিত ফাইলগুলিতে বেশ কয়েকটি অতিরিক্ত বৈশিষ্ট্য সক্ষমিত ছিল । যাইহোক, তারা এখন উভয়ের জন্য ডিফল্টরূপে সক্রিয় করা থাকে .batএবং .cmdউইন্ডোজ অধীনে ফাইল 2000 এবং পরে।

নীচের লাইন: 2012 এবং তার বাইরে, আমি .cmdএকচেটিয়াভাবে ব্যবহারের পরামর্শ দিই ।


7
আইএমও, এটিই মূল বিষয়। আপনি নতুন স্ক্রিপ্টগুলির জন্য এক্সটেনশন হিসাবে .সিএমডি ব্যবহার করেন যখন আপনি নিশ্চিত করতে চান যে তারা পুরানো 16-বিট ওএসগুলিতে ছাড় পেয়েছে না, বা যদি আপনি নিশ্চিত না হন যে তারা কাজ করবে।
অলিভার

12
আমি অবাস্তব, বিশ্ববিদ্যালয় শ্রেণির মতো উত্তরের বহু সংখ্যক প্রাচীরের উপর সংক্ষিপ্ত, বাস্তববাদী এবং স্পষ্ট উত্তরগুলির প্রশংসা করি।
তরল কোর

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

24

না - কিছুটা হলেও কিছু যায় আসে না। এনটি তে .bat এবং .Cmd এক্সটেনশান উভয়ই cmd.exe প্রসেসরের ফাইলটিকে ঠিক একই পদ্ধতিতে প্রক্রিয়াকরণের কারণ করে।

এমএস টেকনেট ( http://technet.microsoft.com/en-us/library/cc723564.aspx ) থেকে WinNT- শ্রেণির সিস্টেমে কমান্ড ডট কম বনাম cmd.exe সম্পর্কিত অতিরিক্ত আকর্ষণীয় তথ্য :

এই আচরণটি উইন্ডোজ এনটি-র একটি খুব সূক্ষ্ম বৈশিষ্ট্য প্রকাশ করে যা খুব গুরুত্বপূর্ণ। উইন্ডোজ এনটি সহ 16 বিট এমএস-ডস শেল (COMMAND.COM) বিশেষভাবে উইন্ডোজ এনটি-র জন্য ডিজাইন করা হয়েছে। এই শেল দ্বারা কার্যকর করার জন্য যখন কোনও কমান্ড প্রবেশ করা হয়, এটি আসলে এটি সম্পাদন করে না। পরিবর্তে, এটি কমান্ড পাঠ্যটি প্যাকেজ করে এবং এটি কার্যকর করার জন্য 32-বিট সিএমডি.এক্সই কমান্ড শেলকে প্রেরণ করে। যেহেতু সমস্ত কমান্ডগুলি আসলে সিএমডি.এক্সই (উইন্ডোজ এনটি কমান্ড শেল) দ্বারা সম্পাদিত হয়, 16-বিট শেল সম্পূর্ণ উইন্ডোজ এনটি শেলের সমস্ত বৈশিষ্ট্য এবং সুবিধাগুলি উত্তরাধিকার সূত্রে প্রাপ্ত হয়।


5
এটা ব্যাপার হতে পারে; আপনার লিঙ্ক পাঠ্যের মধ্যে পার্থক্যগুলি সূক্ষ্ম বলে উল্লেখ করা হয়েছে।
Gringo Suave

আপনি কমান্ড ডট কমকে কমান্ড লাইনে উল্লেখ করে একটি ডস কমান্ড কার্যকর করতে বাধ্য করতে পারেন। দেখুন command /c vercommand.com এবং টাইপ Ver শুরু বনাম।
phd443322

নামের বিষয়গুলি: ডি দেখেছি প্রচুর .বাট অতীত থেকে! .সিএমডি ব্যবহার করুন! এছাড়াও বিশ্বাস করতে পারি না যে এনটি আজও ব্যবহৃত হয় ...
hfrmobile

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

16

RE: দৃশ্যত যখন কমান্ড ডট কমকে ডেকে আনা হয় তখন কিছুটা জটিল রহস্য হয়;

বেশ কয়েক মাস আগে, একটি প্রকল্প চলাকালীন, আমাদের নির্ধারণ করতে হয়েছিল যে আমরা সিএমডি.এক্সইয়ের অধীনে যে প্রোগ্রামগুলি পরিচালনা করতে চেয়েছিলাম, কেন প্রকৃতপক্ষে COMMAND.COM এর অধীনে চলছে। প্রশ্নে থাকা "প্রোগ্রাম "টি একটি অতি পুরানো। BAT ফাইল, যা এখনও প্রতিদিন চালিত হয়।

আমরা আবিষ্কার করেছি যে ব্যাচ ফাইলটি COMMAND.COM এর অধীনে চলেছিল এটি হ'ল এটি একটি .PIF ফাইল (প্রাচীন) থেকেও শুরু হয়েছিল। যেহেতু কেবলমাত্র একটি পিআইএফ-র মাধ্যমে উপলব্ধ বিশেষ মেমরি কনফিগারেশন সেটিংস অপ্রাসঙ্গিক হয়ে গেছে, তাই আমরা এটিকে একটি প্রচলিত ডেস্কটপ শর্টকাট দিয়ে প্রতিস্থাপন করেছি।

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


1
এটি কি ওএস ছিল? এক্সপির আগে কিছু?
পিএইচকে

14

তবুও, উইন্ডোজ on-এ, বিএটি ফাইলগুলির মধ্যেও এই পার্থক্য রয়েছে: আপনি যদি কখনও একই ডিরেক্টরিতে TEST.BAT এবং TEST.CMD ফাইল তৈরি করেন এবং আপনি সেই ডিরেক্টরিতে টেস্ট চালান, এটি বিএটি ফাইলটি চালাবে।

C:\>echo %PATHEXT%
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC

C:\Temp>echo echo bat > test.bat

C:\Temp>echo echo cmd > test.cmd

C:\Temp>test

C:\Temp>echo bat
bat

C:\Temp>

এটি হ'ল কারণ test.bat টেস্ট.কমডের আগে বর্ণানুক্রমিক। উইন্ডোজ লোভী পূর্ণতা দেয়।
ডেভিড

26
@ ডেভিড: সত্য নয়। এটি ঘটে কারণ PATHEXTভেরিয়েবলের ক্ষেত্রে .BAT এক্সটেনশনটি .CMD এর আগে স্থাপন করা হয় (এই উত্তরটিতে প্রদর্শিত হিসাবে)। আপনি যদি এই পাঠ্যপুস্তকে এই আদেশটি পরিবর্তন করেন তবে পরিবর্তে test.cmd কার্যকর করা হবে would
আছিনী 24'15

হুম, আমি আশা করছিলাম তারা অন্য ক্রমে ছিল; আমার ধারণা এমএস অবশ্যই আবিষ্কার করেছে (বা ধরে নেওয়া) যে কিছু বিদ্যমান সফ্টওয়্যার শিপিয়েছে .CMD ফাইল এবং .BAT ফাইলগুলি একই বেসনামের সাথে, যেখানে .CMD ফাইলগুলি অবশ্যই (না-এখনও চালিত) সেমিডির ইনপুট হিসাবে নয়। উদাহরণস্বরূপ, তবে অন্য যে কোনও বিষয় হতে পারে: উদাহরণস্বরূপ, অন্য কয়েকটি শেল, অ্যাপ্লিকেশন দ্বারা পড়া একটি কনফিগারেশন স্ক্রিপ্ট, বা অ্যাপ্লিকেশন বাইনারি কোনও ধরণের জন্য কমান্ড । (কমপক্ষে, এমএস আপাতদৃষ্টিতে উপ-অনুকূল আচরণের সাথে শেষ হওয়ার সাধারণ
পদ্ধতিটিই

এটিও লক্ষণীয় যে বর্তমান ডিরেক্টরিটি PATHপরিবেশের পরিবর্তনশীল অন্যান্য ডিরেক্টরিগুলির আগে এক্সটেনশন নির্বিশেষে আসে ।
টার্কিফ্যান্ট

13

যেহেতু মূল পোস্টটি .bat বা .Cmd প্রত্যয় ব্যবহারের পরিণতি সম্পর্কিত ছিল , তাই অগত্যা ফাইলের অভ্যন্তরের আদেশগুলি ...

.Bat এবং .Cmd এর মধ্যে অন্য একটি পার্থক্য হ'ল যদি একই ফাইলের নাম এবং সেই দুটি এক্সটেনশান সহ দুটি ফাইল উপস্থিত থাকে তবে:

  • কমান্ড লাইনে ফাইলের নাম বা ফাইলের নাম .bat প্রবেশ করা হলে .bat ফাইলটি চলবে

  • .Cmd ফাইলটি চালাতে আপনাকে ফাইলের নাম .Cmd লিখতে হবে


2
অঁ্যা? আমি যদি আমার ডিয়ারে একটি সেমিডি ফাইল রাখি তবে আমাকে অনুরোধ করতে ফাইল এক্সটেনশন নির্দিষ্ট করতে হবে না। উদাহরণ: ইকো নোটপ্যাড.এক্সে% *> np.cmd তারপরে আমি যদি কেবল "এনপি mytextfilename.txt" টাইপ করি তবে এটি নোটপ্যাড নিয়ে আসবে। এটি শুরু করার জন্য আমাকে "np.cmd" টাইপ করতে হবে না।
জন ডেভিস

2
@ স্টেম্পাই 77 true: এনপি.এম.এমডি যদি সেই নামের সাথে একমাত্র ফাইল হয় তবে এটি সত্য, তবে "যদি একই ফাইলের নামের সাথে দুটি ফাইল উপস্থিত থাকে এবং উভয়ই এক্সটেনশান" থাকে , তবে। সেমিডিকে কার্যকর করার একমাত্র উপায় তার সম্প্রসারণকে অন্তর্ভুক্ত করে। ..
আছিনী

1
এটি কোনও শেলের জন্য অস্পষ্টতা সমাধানের প্রয়োজনীয়তা, .Cmd বনাম .bat এর মধ্যে প্রযুক্তিগত পার্থক্যের সাথে কিছুই করার নয়। এটি সম্ভবত ফাইলের নাম.বাট এর আগে ফাইলের নাম। সিএমডি বর্ণমালায় রয়েছে।
জন ডেভিস 21

6
এটি আসলে PATHEXTপরিবেশের পরিবর্তনশীল উপর নির্ভর করে । এক্সটেনশানগুলির ক্রমটিতে ক্রমটি প্রদর্শিত হয় যদি কোনও এক্সটেনশান নির্দিষ্ট না করা থাকে তবে সেখানে অগ্রাধিকারের ক্রম থাকে। এটি উল্লেখ করার মতো বিষয় যে এনভির ভেরিয়েবলের মধ্যে এর এক্সটেনশনটি প্রদর্শিত হয় তবে ফাইলগুলির জন্য কোনও এক্সটেনশন নির্দিষ্ট করা প্রয়োজন নয়।
রিকার্ডো জোরিও

8

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


গতিতে কোনও পার্থক্য করা উচিত নয়। .batএনটি তে ডসের অধীনে চলবে না। একটি ভিডিএম কেবল তখনই শুরু করা হয় যদি কোনও প্রোগ্রামের এটির প্রয়োজন হয়, এবং এমনকি 64 বিট উইন্ডোতে সমর্থিত হয় না, যদিও আমি বিশ্বাস করি .বাট হয় is
Gringo Suave

3

.Cmd এবং .bat ফাইল এক্সিকিউশনটি পৃথক কারণ একটি। সিএমডি ত্রুটিযুক্ত চলকটিতে এটি কমান্ড এক্সটেনশন দ্বারা প্রভাবিত কমান্ডের পরিবর্তিত হতে পারে। এটা সত্যিই এটি সম্পর্কে।


মোটামুটি ^। ^ প্রতিটি জন্য ব্যবহৃত কমান্ড ভাষার মধ্যে পার্থক্য রয়েছে (.bat ফাইলগুলি একটি সামঞ্জস্য সংস্করণ পায়)। এর মধ্যে কিছু এখানে থেকে এই স্ক্রিপ্ট দ্বারা চিত্রিত করা যেতে পারে: @echo off&setlocal ENABLEEXTENSIONS call :func&&echo/I'm a cmd||echo/I'm a bat goto :EOF :func md;2>nul set var=1
zask

4
.Cmd ফাইলগুলিতে প্রতিটি কমান্ড ত্রুটি-বিভক্ত সেট করে, .bb ফাইলগুলিতে কিছু কমান্ড ত্রুটি-বিচ্যুতি অপরিবর্তিত রেখে দেয়, গৃহীত উত্তরে বর্ণিত হয়েছে
jeb

1
ডটসের কমান্ড ইন্টারপ্রেটার COMMAND.COM এর সাথে ইন্টারঅ্যাক্ট করার জন্য বিএটি তৈরি করা হয়েছিল। মাইক্রোসফ্ট তাদের নতুন সিএমডি নামের নতুন দোভাষীকে ডস কমান্ডের বেশিরভাগ গ্রহণ করেছে। EXE এর। সিএমডি সিএমডি.এক্সই এর সাথে ইন্টারফেস করার জন্য তৈরি হয়েছিল এবং এটি COMMAND.COM এর সাথে সামঞ্জস্যতা ভঙ্গ করে। তারা কীভাবে ত্রুটিযুক্ত ভেরিয়েবলটি পরিচালনা করে তা প্রধানত পরিচিত। বিএটি ব্যবহার করার সময়, এই ভেরিয়েবলটি কেবলমাত্র একবার আসল ত্রুটি দেখা দিলে পরিবর্তিত হয় এবং যখন প্রতিটি কমান্ড সফলভাবে কার্যকর হয় তখন রাষ্ট্রের কোনও পরিবর্তন ঘটে না। এটি সিএমডির পক্ষে সত্য নয় কারণ ত্রুটি না ঘটলেও ত্রুটিযুক্ত ভেরিয়েবলটি এখনও রাষ্ট্র পরিবর্তন করবে।
zask

3

আমি বিশ্বাস করি যদি আপনি ComSpec পরিবেশ ভেরিয়েবলের মান পরিবর্তন %SystemRoot%system32\cmd.exe(সিএমডি) তাহলে এটা ব্যাপার ফাইলটি এক্সটেনশান না .BATবা .CMD। আমি নিশ্চিত নই, তবে এটি এমনকি উইনএক্সপি এবং তারপরের উপরও ডিফল্ট হতে পারে।


1

কিছুটা সামান্য বিষয়, তবে আপনি কি বিবেচনা করেছেন উইন্ডোজ স্ক্রিপ্টিং হোস্ট ? আপনি এটি সুন্দর দেখতে পাবেন।


13
এই বিষয়টির জন্য, পাওয়ারশেল, যা ডাব্লুএসএইচ / cscript.exe অবমূল্যায়ন করে।
জন ডেভিস

3
@ stimpy77 সত্য, যদিও পাওয়ারশেলটি আমার কাছে বেশ ভয়ঙ্কর বলে মনে হচ্ছে।
মার্সিন

2
আমি ডাব্লুএসএইচটিকে আরও খারাপ বলে মনে করি। আমি মনে করি এটি সমস্ত "ভয়ানক" এর জন্য আমরা কী পরিমাপ করছি তার উপর নির্ভর করে। পাওয়ারশেলের নৃশংস প্রারম্ভিক সময় রয়েছে। এটি সম্পর্কে সবকিছু একেবারে দুর্দান্ত আইএমও।
জন ডেভিস

বিন্যাসটি ক্ষমা করুন, তবে পিএসএইচ প্রারম্ভকালীন সময়ের গতি বাড়ানোর জন্য, চালনার চেষ্টা করুন: সেট-এলিয়াস এনগেন @ (দির (জয়েন-পাথ $ v এনভি: \ উইন্ডির} "মাইক্রোসফট.নেট \ ফ্রেমওয়ার্ক")) এনজেন.এক্সে-রিচার্স | সাজানো-নকশা লাস্ট রাইটটাইম) [0] .ফুলনাম [নতুন লাইন এখানে] [অ্যাপডোমেন] :: বর্তমানডোমেন.জেটসেম্বলিস () | % {ngen $ _। অবস্থান}
এমজেবিএনজি

1
পুরোপুরি অফ-টপিক।
হ্যাপিডগ

1

এক্সটেনশন কোনও পার্থক্য করে না।

সেখানে সামান্য পার্থক্য হয় COMMAND.COMফাইল বনাম হ্যান্ডলিং CMD.EXE


-10

একটি পার্থক্য:

। সিএমডি ফাইলগুলি কার্যকর হওয়ার আগে মেমরিতে লোড হয়। .bat ফাইলগুলি একটি লাইন চালায়, পরবর্তী লাইনটি পড়ুন, সেই লাইনটি কার্যকর করুন ...

আপনি যখন কোনও স্ক্রিপ্ট ফাইল সম্পাদন করেন এবং সম্পাদন শেষ হওয়ার আগে এটি সম্পাদনা করতে পারেন তখন আপনি এটি জুড়ে আসতে পারেন। ব্যাট ফাইলগুলি এতে গন্ডগোল করবে তবে সেমিডি ফাইলগুলি তা করবে না।


যেমনটি প্রতিষ্ঠিত হয়েছে, ComSpec env ভেরিয়েবলটি কোন প্রোগ্রামটি চালু হয় তা সংজ্ঞায়িত করে, আপনি কি মূলত বলছেন যে কমান্ড.কম ফাইলটি একটি সময়ে একটি লাইন পড়ে, যখন cmd.exe ফাইলটি মেমরিতে প্রি-লোড করে? আপনি কি এই বিষয়ে একটি উল্লেখ উল্লেখ করতে পারেন?
ক্রিস নো

24
এটি ভিস্তা এবং এক্সপি-র পক্ষে ভুল, উভয় ফাইলই এক-এক করে পাঠানো হয়। আপনি যদি .CMD বা .bat ফাইলটি বিরতি দিয়ে সম্পাদনা করেন তবে নতুন কোডটি কার্যকর করা হবে
jeb


1
এটি এক-এক করে লাইন কিনা তা নিয়ে বিতর্ক হতে পারে, কারণ আপনি যদি কমান্ড ফাইলের মাঝামাঝি ফাঁসি কার্যকর করেন এবং শুরুতে একটি অক্ষর যুক্ত করেন, পার্সারটি আবার শুরু করার পরে একটি অক্ষর দ্বারা বন্ধ হয়ে যায়, সম্ভবত আপনার বাকী স্ক্রিপ্টটি ফেলে দিতে পারে throw

2
আপনি .bat এবং .Cmd এর সাথে বিতর্ক করা উচিত নয়। উভয়ই সর্বদা লাইনে বাই পঠিত হয়। বিশ্বাস না হলে আপনি এটি পরীক্ষা করতে পারেন। একটি ব্যাচ ফাইল তৈরি করুন যা echo 1&pauseএরপরে এটি কার্যকর করে। আপনি দেখতে পাবেন 1এবং Press any key to continue...। বিরতি দেওয়া অবস্থায় echo 2&pauseবাহ্যিক সম্পাদকের সাথে একটি নতুন লাইন যুক্ত করুন । একটি চাপুন। আপনি দেখতে পাবেন 2এবং Press any key to continue...। এমনকি আপনি echo 3&pauseশুরুতে যোগ করার চেষ্টা করতে পারেন । এর পরে যখন আপনি একটি কী টিপবেন তখন আপনি দেখতে পাবেন 2
ভিনিমাস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.