2009-10-31 8 views
19

यदि मेरे पास a.com, a.cmd, a.bat, और a.exe फ़ाइलें% PATH% है, तो यदि मैं केवल "ए" कमांड का आह्वान करता हूं तो कौन सा विंडोज चुनता है? क्या यह आधिकारिक तौर पर एम $ द्वारा कहीं भी spec ed है?सापेक्ष आदेश क्या है जिसके साथ विंडोज़ पाथ में निष्पादन योग्य फ़ाइलों के लिए खोज करता है?

मैं बस अपने gvim.exe निष्पादन योग्य -n को लपेटना चाहता था, लेकिन मेरा gvim.bat कमांड लाइन से न चलाएं, न ही रन संवाद से।

उत्तर

11

में से प्रत्येक की कोशिश करता है पर्यावरण चर माइक्रोसॉफ्ट टेकनेट

पथ और PATHEXT पर command search sequence देखें प्रत्येक खोज अनुक्रम का एक तत्व प्रदान करते हैं: पथ का आदेश दिया है निर्देशिकाओं की सूची "जहां" देखने के लिए, और PATHEXT फ़ाइल एक्सटेंशन ("क्या") की ऑर्डर करने की सूची है (यदि विस्तार को कमांड लाइन पर स्पष्ट रूप से प्रदान नहीं किया गया है)। हालांकि पीएटीएच का उपयोग करने से पहले, वर्तमान निर्देशिका की खोज की जाती है।

PATHEXT चर करने के लिए डिफ़ॉल्ट ".com; .EXE; बल्ला, .cmd"

+0

मैं बस रन संवाद से gvim का आह्वान करें, और इससे कोई फर्क नहीं पड़ता कि PATHEXT क्या सेट है, यह केवल gvim.exe है जो चलता है; भले ही मैं रन संवाद पर gvim.bat कहूं। – Jeenu

+1

@ जिनू, यह बल्कि अजीब है। एक संभावित स्पष्टीकरण हालांकि यह है कि जीवीआईएम (या इसे संदर्भित एक बल्ले फ़ाइल) का एक और उदाहरण पाथ स्थान से पहले पाया जाता है जहां आप इसकी अपेक्षा करते हैं। कंसोल की तरह ही मैन्युअल रूप से पथ की समीक्षा करें। (या यह साबित करने का एक और तरीका अस्थायी रूप से निर्देशिका में exe का नाम बदलना है, जहां आपको लगता है कि यह देखने से आता है कि आदेश का आह्वान करना exe नहीं ढूंढने में विफल रहता है। – mjv

+0

* यदि विस्तार नहीं है स्पष्ट रूप से कमांड लाइन "* नोट पर प्रदान किया गया है, यही कारण है कि 'python3.5' कमांड विंडोज़ पर पाथ के साथ काम नहीं कर सकता ... – dedek

2

मेरा मानना ​​है कि यह% PATHEXT% के माध्यम से चलता है और उन

7

प्रदान की माइक्रोसॉफ्ट टेकनेट लिंक से संक्षिप्त mjv द्वारा:

विंडोज बाएं से पथ में निर्देशिका के माध्यम से कदम होगा सही (सामान्य सूची आदेश) के लिए। इनमें से प्रत्येक में, यह अगले PATH प्रविष्टि को जारी रखने से पहले, प्रत्येक PATHEXT के साथ फ़ाइल को भी बाएं से दाएं करने का प्रयास करता है। यह पहली फ़ाइल जीतता है।

तो, आपके मामले में, आपको PATHEXT को बदलने की आवश्यकता है ताकि बीएटी पहले से आए .EXE (या यह हमेशा पहले .exe को मिलेगा और नहीं .bat जिसे आप अधिकतर ओवरराइड करना चाहते हैं, अगर एक ही निर्देशिका में) और अपने 'ओवरराइड' gvim.bat के पथ को पहले भी (सबसे पुराना?) पथ में डाल दें, कहीं भी इसे पीवीएच लिस्टिंग में कहीं भी मिल सकता है। * (क्योंकि यह पीएटीएच पर जाने से पहले प्रत्येक में प्रत्येक पाथएक्सटी की कोशिश करता है)