क्या विंडोज कमांड प्रॉम्प्ट एप्लिकेशन प्रोग्राम लॉन्च करते समय पैट वेरिएबल द्वारा निर्दिष्ट उन स्थानों के अलावा कहीं और खोज करता है?


35

मैंने निम्नलिखित प्रयोग की कोशिश की।

शुरू करने से पहले, मैंने cmd से PATH चर की जाँच की, जिसका मूल्य निम्न है:

Path=C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\;C:\ProgramData\Lenovo\ReadyApps;C:\Program Files\Microsoft SQL Server\110\Tools\Binn\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;C:\Program Files (x86)\Windows Live\Shared;C:\Program Files (x86)\Skype\Phone\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files (x86)\Calibre2\;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;

सबसे पहले, मैंने सोचा कि cmd केवल PATH चर में निहित निर्देशिकाओं में निष्पादन योग्य के लिए देखता है, इसलिए मैंने यादृच्छिक रूप से एक आवेदन लिया - winword.exe (Microsoft Word), और इसे कमांड लाइन से लॉन्च करने का प्रयास किया:

start winword

लेकिन मेरे आश्चर्य के लिए, कार्यक्रम लॉन्च! मेरे आश्चर्य का कारण यह है कि मैंने 'winword' नामक exe फ़ाइल के लिए PATH चर में सभी निर्देशिकाओं के माध्यम से खोज की है, लेकिन मेरी सभी खोजें खाली आई हैं!

इसलिए मैंने निष्कर्ष निकाला है कि कमांड प्रॉम्प्ट को निष्पादन योग्यताओं को देखने के लिए PATH चर में निर्दिष्ट उन स्थानों के अलावा अन्य स्थानों पर खोजना होगा।

तो जाहिर है, अगली बात मैंने सटीक स्थान की तलाश के लिए की थी जहां 'विजेता' निष्पादन योग्य फ़ाइल स्थित है। यह पता चला है कि winword.exe यहाँ स्थित है:

C:\Program Files\Microsoft Office 15\root\office15

इसलिए मुझे यह विचार देते हुए कि शायद सीएमडी 'स्टार्ट' कमांड को निष्पादित करते समय प्रोग्रामफाइल्स और प्रोग्रामफाइल्स (x86) (और उनके सभी उपनिर्देशिका) के माध्यम से स्वचालित रूप से देखता है? जिसके कारण मुझे अपने कंप्यूटर, ऑडेसिटी में स्थापित एक अन्य एप्लिकेशन को एक्साई फाइल के साथ लॉन्च करने की कोशिश करनी पड़ी:

C:\Program Files (x86)\Audacity

फिर, मेरे आश्चर्य के लिए, जब मैंने टाइप किया तो ऑडेसिटी लॉन्च करने में विफल रही:

start audacity

कमांड लाइन पर।

यहाँ छवि विवरण दर्ज करें

फिर मैंने निर्देशिका निर्देशिका को PATH में जोड़ा है।

set path=%path%;C:\Program Files (x86)\Audacity

जिसके बाद मैंने फिर से दुस्साहस शुरू करने की कोशिश की:

start audacity

ठीक है, आश्चर्य की बात नहीं, दुस्साहस का शुभारंभ किया।

मैं यह जानना चाहता हूं कि वास्तव में कमांड प्रॉम्प्ट निष्पादन योग्य कहां दिखता है? ऐसा क्यों है कि winword.exe तब भी लॉन्च होता है जब निर्देशिका इसमें PATH का हिस्सा नहीं होती है, लेकिन ऑडेसिटी के लिए भी यही बात सच नहीं है?

मैंने अन्य अनुप्रयोगों की भी कोशिश की। जब मैं स्टार्ट कमांड का उपयोग करता हूं तो क्रोम और फ़ायरफ़ॉक्स काम करता है।

अद्यतन: मैं विंडोज संस्करण 6.3.9600 (विंडोज 8.1) चला रहा हूं


जवाबों:


44

सबसे पहले, मैंने सोचा था कि cmd केवल PATH चर में निहित निर्देशिकाओं में निष्पादन योग्य के लिए देखता है, इसलिए मैंने यादृच्छिक रूप से एक आवेदन लिया - winword.exe (Microsoft Word) और इसे कमांड लाइन से लॉन्च करने का प्रयास किया:

winword.exeकाम करने का कारण यह है कि एक रजिस्ट्री कुंजी मौजूद है जो Microsoft Word (Winword.exe) के लिए पथ को परिभाषित करती है। फ़ायरफ़ॉक्स। Exe और Chrome.exe के लिए एक समान कुंजी मौजूद है अगर उन अनुप्रयोगों को स्थापित किया गया है।

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

मैं यह जानना चाहता हूं कि वास्तव में कमांड प्रॉम्प्ट निष्पादन योग्य कहां दिखता है?

सिस्टम पथ परिवर्तनशील, उपयोगकर्ता पथ परिवर्तनशील, और भीतर विभिन्न कुंजी ..\App Paths। मैं यह पुष्टि करने में सक्षम था कि जब यह स्थापित किया जाता है तो ऑडेसिटी स्वयं के लिए एक कुंजी नहीं बनाता है।

जब ShellExecuteEx फ़ंक्शन को उसके lpFile पैरामीटर में एक निष्पादन योग्य फ़ाइल के नाम से बुलाया जाता है, तो कई जगह हैं जहां फ़ंक्शन फ़ाइल के लिए दिखता है। हम आपको एप्लिकेशन पथ रजिस्ट्री उपकुंजी में अपना आवेदन पंजीकृत करने की सलाह देते हैं। ऐसा करने से सिस्टम PATH पर्यावरण चर को संशोधित करने के लिए अनुप्रयोगों की आवश्यकता से बचा जाता है।

  • वर्तमान कार्य निर्देशिका।
  • केवल Windows निर्देशिका (कोई उपनिर्देशिकाएँ खोज की जाती हैं)।
  • Windows \ System32 निर्देशिका।
  • PATH पर्यावरण चर में सूचीबद्ध निर्देशिकाएँ।
  • अनुशंसित: HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ App पथ

स्रोत: आवेदन पंजीकरण


15

कमांड प्रॉम्प्ट से, यदि आप बस दर्ज करते हैं तो WinWordयह चलाने में विफल रहता है।

यदि आप START WinWordइसे दर्ज करते हैं तो यह चलता है।

यहां Startकमांड प्रमुख है।

जब आप प्रारंभ कमांड के माध्यम से किसी फ़ाइल को निष्पादित करने का प्रयास करते हैं, तो कमांड प्रॉम्प्ट कोई खोज नहीं करता है। इसके बजाय, यह फ़ाइल का नाम (और तर्कों) को Windows के ऊपर (ShellExecuteEx API कॉल के माध्यम से) पास करता है, जिसे तब फ़ाइल के स्थान की खोज करनी चाहिए। निम्नलिखित क्रम में इसे खोजने के लिए कई स्थान हैं:

  • वर्तमान कार्य निर्देशिका।

  • Windowsनिर्देशिका केवल (कोई उपनिर्देशिका की खोज कर रहे हैं)।

  • Windows\System32निर्देशिका।

  • PATHपर्यावरण चर में सूचीबद्ध निर्देशिकाएँ ।

  • सिफारिश की:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths

WinWordउस रजिस्ट्री कुंजी में है। वहाँ कुंजी PATHबहुत लंबे समय तक रखने से है।


7
कृपया सभी स्रोतों का हवाला दें और उद्धृत करें। जब तक आपने मेमोरी से खोज ऑर्डर नहीं लिखा था, आपको अपने स्रोत का हवाला देना चाहिए था, जिसने सूची और उस ऑर्डर को इंगित किया था जो इसे खोजा गया है।
रामहुंड

स्रोत कुछ साल पहले मेरे द्वारा किए गए काम से मेरे नोट्स होंगे। मुझे नहीं पता कि मैंने इसे वापस कहां से उठाया, वेब पेज आते हैं और जाते हैं।
लैरीक

5
आप उन्हें उसी प्रलेखन से प्राप्त करते हैं जो अन्य सभी ने उनसे प्राप्त किया है।
रामहुंड

7

Windows कमांड प्रोसेसर (CMD.EXE) में प्रोग्राम (जब आप ड्राइव मोड के बिना इसका मॉड्यूल नाम निर्दिष्ट करते हैं) (CMD.EXE) शुरू किया जा सकता है:

  • PATH पर्यावरण चर (दोनों निष्पादन योग्य और इसके हार्डलिंक / सॉफ्टलिंक / शॉर्टकट एक ही नाम से)

  • DOSKEY उर्फ ​​द्वारा

  • ( HKLM\Software\Microsoft\Windows\CurrentVersion\App Pathsया कमांड HKCU\Software\Microsoft\Windows\CurrentVersion\App Pathsका उपयोग करते समय start) से आवेदन पथ द्वारा

इस ज्ञान (विशेष रूप से अंतिम एक) का उपयोग करके आप अपने स्वयं के उपनामों को आपके लिए सुविधाजनक बना सकते हैं। उदाहरण के लिए, आप HKCU\Software\Microsoft\Windows\CurrentVersion\App Paths\au.exeडिफ़ॉल्ट रूप से बना सकते हैं C:\Program Files (x86)\Audacity\Audacity.exeऔर start auकमांड प्रॉम्प्ट में टाइप करके इस एप्लिकेशन को शुरू कर सकते हैं ।


0

जबकि अन्य उत्तर आपके मामले में विशिष्ट कारण होने की संभावना है, आपके प्रश्न का एक और उत्तर भी है जो कुछ अन्य अनुप्रयोगों के लिए हो सकता है: उसी स्थान पर जहां आप देख रहे थे, लेकिन विभिन्न फ़ाइल एक्सटेंशनों के साथ।

आपने विशेष रूप से कहा था कि आप एक्सटेंशन वाली फाइलों को खोज रहे थे exe। विंडोज अन्य एक्सटेंशन की फ़ाइलों को निष्पादित करने का भी प्रयास करेगा।

एक अन्य पर्यावरण चर जो कमांड को निष्पादित करते समय खेल में आता है वह चर है PATHEXT। यह ;निष्पादित करने का प्रयास करने के लिए फ़ाइल एक्सटेंशन की -delimited सूची है। यदि आप प्रतिध्वनित होते PATHEXTहैं तो आपको कुछ दिखाई दे सकता है जैसे .COM;.EXE;.BAT;.CMD;.VBS;... (आदि)। कुछ एप्लिकेशन इन अन्य फ़ाइल प्रकारों का उपयोग उनके अंतिम-उपयोगकर्ता प्रविष्टि बिंदु के रूप में करते हैं। यह बहुत कम आम है, लेकिन ऐसा होता है। मैंने कई प्रमुख वाणिज्यिक उत्पादों का उपयोग किया है जो .BATलिपियों से शुरू होते हैं। एक उदाहरण के रूप में उनमें से एक का उपयोग करने के लिए, मैं इसे कमांड के साथ शुरू कर सकता हूं, standaloneभले ही कोई भी हो standalone.exe... इसके बजाय, इसमें ए है standalone.bat

मेरे पास जो एक्सटेंशन हैं उनमें से कुछ PATHEXTमैं अभी देख रहा हूं , मेरा कभी कोई एप्लिकेशन उपयोग नहीं हुआ है। लोगों को लगता है कि मैं है में और अधिक सामान्यतः चलाने (लेकिन के रूप में ज्यादा नहीं स्पष्ट रूप से के रूप में exe) कर रहे हैं: .com, .bat, .vbs, .js, .jar। पहले दो विंडो बैच स्क्रिप्ट फाइलें हैं, और अन्य तीन विशिष्ट प्रोग्रामिंग भाषाओं के लिए फ़ाइल प्रकार हैं जो स्क्रिप्ट्स या वर्चुअल मशीनों से exes (क्रमशः: विजुअल बेसिक, जावास्क्रिप्ट और जावा) के बजाय चलाए जाते हैं ।


मतदाता देखभाल टिप्पणी करने के लिए (मुझे पता है कि यह आमतौर पर पूछने के लिए व्यर्थ है, लेकिन कभी-कभी मुझे प्रतिक्रिया मिलती है)? क्या मुझसे कहीं गलती हुई?
Loduwijk

मुझे नहीं, लेकिन एक जंगली अनुमान पर, क्योंकि यह है , जबकि PATHEXTऔर PATHदोनों चल रही चीजों से संबंधित हैं, वे अपने संबंधित कार्यों में कुछ हद तक रूढ़िवादी हैं। PATHनिर्दिष्ट करता है कि चलाने के लिए चीजों को कहां देखना है, और ओपी क्या पूछ रहा था, जबकि PATHEXTनिर्दिष्ट करता है कि क्या चलाया जा सकता है।
dgnuff

@dgnuff दिलचस्प, क्योंकि यह मेरी बात थी: ओपी ने विशेष रूप से एक फ्रेम चुनौती के लिए भीख माँगने वाले प्रश्न को देखा ... एसई शब्दों में, वे एक "XY प्रश्न" पूछ रहे थे जिससे यह अनुमान लगाया जा रहा था कि फ़ाइल नहीं चल रही थी उन स्थानों पर जो पहले से ही रास्ते में खोजे जा रहे थे। कोई बात नहीं धन्यवाद।
Loduwijk

0

start winwordलॉन्च करने के लिए कमांड प्रॉम्प्ट नहीं बताता है winword। यह startतर्क के साथ लॉन्च करने के लिए कमांड प्रॉम्प्ट बताता है winwordStartखोजने के लिए अपने स्वयं के तरीकों का उपयोग करता है winword

बस winwordलॉन्च करने के लिए कमांड प्रॉम्प्ट बताता है winword। और अगर आप कोशिश करते हैं, क्योंकि winwordयह नहीं है PATH, तो यह लॉन्च नहीं होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.