কমান্ড লাইনে কোনও এক্সটেনশন ছাড়াই কোনও ফাইল লিখলে কেন খোলা যায়?


41

উইন্ডোজ 10 এ, truffle.jsআমার বর্তমান ফোল্ডারে আমার কাছে একটি ফাইল কল রয়েছে । আমি truffleসিএমডি উইন্ডোতে লিখি , truffleআমার পথের অন্যত্র যে প্রোগ্রামটি প্রবর্তন করে তা প্রত্যাশা করে ।

পরিবর্তে, truffle.jsআমার প্রিয় আইডিইতে খোলা হয়েছে ( .jsফাইলগুলি সেই আইডিইয়ের সাথে সম্পর্কিত)। আমি ভেবেছিলাম এই আচরণটি কেবল এক্সিকিউটেবল ফাইল .bat, .comএবং এর জন্য এই জাতীয় .exe। কেন এটি একটি .jsফাইলের জন্য ঘটে ?

দ্রষ্টব্য: পরবর্তীকালে আমি আবিষ্কার করেছি যে truffleআমার পথে আমার কোনও ইনস্টল নেই , তবে আমার প্রশ্নটি রয়ে গেছে: উইন্ডোজ কেন এমন এক্সটেনশানটি সম্পূর্ণ করছে যা আমি কোনও এক্সিকিউটেবল ফাইলটিতে নির্দিষ্ট করেছিলাম না?

ট্রফল ইনস্টল করার পরে এবং সিএমডি পুনরায় চালু করার পরেও, আমি কোনও ফাইল থাকা ফোল্ডারে চালানোর জন্য আসল ট্রফলটি পেতে পারি না truffle.js




কারণ উইন্ডোজ এক্সটেনশনগুলির সাথে যে কোনও ফাইলের সাথে সম্পর্কিত অ্যাপ্লিকেশনটি খুলবে। এটি আপনাকে ন্যায়বিচারের c:\path\application.exe c:\path\filename.extচেয়ে টাইপ করা থেকে বাঁচায় filename
ashleedawg

উত্তর:


75

কারণ ডিফল্ট %PATHEXT%হিসাবে সেট করা .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSCহয়। এটি কীভাবে অন্তর্ভুক্ত রয়েছে তা নোট করুন .js

এর অর্থ আপনি যদি কোনও নাম টাইপ করেন তবে সিএমডি বর্তমান ফোল্ডারে সেই ক্রমযুক্ত এই এক্সটেনশনগুলির সাথে ফাইলগুলি সন্ধান করবে। এরপরেই এটি বিবেচনা করবে কী রয়েছে %PATH%। এই আচরণ পরিবর্তন করা যাবে না। %PATHEXT%অন্যান্য পরিবেশের পরিবর্তনশীলের মতো আপনি যদিও পরিবর্তন করতে পারেন ।

আপনি যে WHEREকমান্ডটি পাথটি খোলা হবে তা পরীক্ষা করতে ব্যবহার করতে পারেন (উদাঃ where truffle), যা স্বয়ংক্রিয়ভাবে% PATH% এবং% PATHEXT% উভয়ই সিএমডি-তে অনুসন্ধান করবে।


3
স্পষ্ট করার জন্য, আপনার অর্থ উইন্ডোজ একটি ইনপুট নেবে, PATH দেখার আগে ইনপুটটিতে এই ফাইল এক্সটেনশনগুলি যুক্ত করে কিনা তা দেখার জন্য।
ট্যানকোরস্যামশ

9
এছাড়াও লক্ষ করুন যে ওপির আসল যুক্তিটি ধারণ করে - এগুলি সমস্ত কার্যকর হয় (শব্দের কিছু অর্থে ...), তাদের মধ্যে কিছু কেবল মানব পাঠযোগ্যও হয়।
অ্যাডোনালসিয়াম

2
@ ট্যানকোরস্যামশ উইন্ডো যেমনটি CreateProcessএবং আমিও মনে করি ShellExecute(Ex)এপিআইগুলি, পাঠ্যপথের দিকে তাকায় না। এক্সটেনশন অনুসন্ধানটি কেবলমাত্র ডিফল্ট শেলগুলির মধ্যে প্রয়োগ করা হয় (সেমিডি.এক্সএইচ এবং পাওয়ারশেল.এক্সে)। এটি বলেছিল, CreateProcessএবং বিশেষভাবে সংযোজন করা ShellExecute(Ex) হবে.exe
বব

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

2
@ JustinC.B। আপেল এবং কমলা নোটপ্যাড ++ কোনও মাইক্রোসফ্ট পণ্য নয় (এবং উইন্ডোজ ইত্যাদি দ্বারা বান্ডিল হয় না)। একদিকে নামকরণ করা, এটি নোটপ্যাডের বদলীর পরিমাণ যতটা সাবলাইম পাঠ্য বা এমনকি ভিএসকোড হিসাবে রয়েছে as অন্যদিকে পাওয়ারশেলের প্রথম পক্ষের সমর্থন রয়েছে এবং ক্রমবর্ধমান লিগ্যাসি কমান্ড প্রম্পটের উপর দিয়ে (বান্ডেলড) ডিফল্ট হয়ে উঠছে এবং গত কয়েক বছরে প্রবর্তিত নতুন কমান্ডগুলির বেশিরভাগই কেবল পাওয়ারশেল-কেবল।
বব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.