पथ चर में बहुत सारे फ़ोल्डर


15

मुझे एक अजीब समस्या का सामना करना पड़ा है - मैं विज़ुअल स्टूडियो लॉन्च नहीं कर सकता, और न ही कमांड प्रॉम्प्ट से सरल कमांड चला सकता हूं, जो कि मेरे पैट वेरिएबल के बहुत लंबे होने के कारण प्रतीत होता है। अब जब मैं इसे देखता हूं, तो मैं देखता हूं कि कई कंपनियों ने अपने इंस्टॉल निर्देशिका को पैठ चर में जोड़ा है।

मैं सोच रहा था कि इन कंपनियों ने अपने फ़ोल्डर्स को रास्ते में क्यों जोड़ा (शायद अपने कार्यक्रमों को निष्पादित करने के लिए इसे सरल बनाने के लिए?), और जो आवश्यक हैं और जिन्हें मैं हटा सकता हूं। यदि मैं उनमें से कुछ को हटा देता हूं, तो क्या मैं प्रोग्राम लॉन्च नहीं कर पाऊंगा? ( यहां वर्तमान में पथ में क्या मौजूद है)


1
मैं वास्तव में ऐसा महसूस नहीं करता हूं कि यह विशेष रूप से लंबा है PATH... आपको क्या संदेह है कि यह बहुत लंबा है? क्या वीएस किसी प्रकार की त्रुटि को दूर कर रहा है? साथ ही, विंडोज का कौन सा संस्करण चल रहा है?
bosco

@bosco मुझे संदेह है कि यह बहुत लंबा है क्योंकि कमांड प्रॉम्प्ट जैसे साधारण कमांड नहीं मिल सकता है pingइसके अलावा, ऐसा लगता है कि यह दृश्य स्टूडियो के साथ असामान्य नहीं है । यहाँ यह भी बताया गया कि कमांड लाइन का उपयोग करने वाले PATH की सीमा 2000 के आसपास है।
CC Inc

विज़ुअल स्टूडियो 2012 ने स्टार्टअप पर "अपवाद को एक आह्वान के लक्ष्य द्वारा फेंका गया" त्रुटि को फेंका। और जब मैंने ActivLog.xml में देखा, तो इसने मुझसे कहाThe type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc

2
स्टैक ओवरफ्लो प्रश्न के स्वीकृत उत्तर में हैक और समाधान के सभी प्रकार # 4405091 :)
bosco

जवाबों:


13

पर्यावरण चर पथों की अत्यधिक मात्रा को कम करना संभव है, बस एक नोटपैड के रूप में पूरी लाइन को एक बैकअप के रूप में सहेजें और कुछ को हटा दें और परीक्षण करें।

उनमें से ज्यादातर ऐसे हैं यदि एक शॉर्टकट में "लक्ष्य" के लिए पूर्ण पथ सेट नहीं है, यदि शॉर्टकट में "स्टार्ट इन" सही तरीके से सेट नहीं है या एक लॉन्च उनके कार्यक्रम को अजीब तरीके से किया जाता है और उसके हिस्से और टुकड़े हमेशा होते हैं मिल गया। यह ज्यादातर स्थितियों में एक Failsafe है। आप अभी भी किसी भी प्रोग्राम के किसी भी उपयोग का पूरी तरह से परीक्षण करना चाहेंगे जो आपने उसके रास्ते हटा दिए।
यह उन लोगों के लिए भी बहुत उपयोगी है जो CMDprompt में कमांड टाइप करते हैं, यहां तक ​​कि बिना सीडी के भी कंप्यूटर प्रत्येक स्थान को स्कैन करेगा, जब तक कि उस नाम से कोई प्रोग्राम नहीं मिल जाता है और चलता है। या इसी नाम के किसी भी अन्य कमांड :-)

रास्तों का वह सेट WAS (एंकिएंट) 255 (या 260) चरचरों से कम तक सीमित था, जो कुछ समय पहले 1024 में बदल गया था, फिर 2048 को संभालने के लिए सर्वर'03 युग में वापस पैच किया गया था, और माना जाता है कि कुछ प्रणालियों पर $ 8096 भी हो सकता है बहुत पहले।

आज लोगों द्वारा चलाए जा रहे वास्तविक सीमाओं, सीएमडप्रॉप्ट में है जो कमांड स्ट्रिंग की लंबाई पर एक सीमा है, जिसमें चर और रास्तों का विस्तार शामिल है।

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx यहाँ Microsoft कहता है:

"उपयोगकर्ता-परिभाषित पर्यावरण चर का अधिकतम आकार 32,767 वर्ण है। पर्यावरण ब्लॉक के आकार पर कोई तकनीकी सीमा नहीं है। हालांकि, ब्लॉक तक पहुंचने के लिए उपयोग किए जाने वाले तंत्र के आधार पर व्यावहारिक सीमाएं हैं। उदाहरण के लिए, एक बैच। एक चर सेट नहीं किया जा सकता है जो अधिकतम कमांड लाइन की लंबाई से अधिक है। "

उस स्थान पर ^ वे उस रजिस्ट्री स्थान की ओर इशारा करते हैं जिसमें सिस्टम पथ मौजूद HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment हैं, बाकी इसे वहां जरूर पढ़ें।

CMDprompt और बैच सीमा 2048 चरचरों का एक बार विस्तार हो गया है, और 4x के लिए कहा जाता है कि नए सिस्टम के लिए (उद्धरण की आवश्यकता है क्योंकि लोग इसे नहीं देख रहे हैं)

Http://support.microsoft.com/kb/830473 भी देखें , जो पुराने सिस्टम के लिए कमांड प्रॉम्प्ट और बैच लंबाई पर चर्चा करता है।

यह सुनिश्चित करने के लिए कि प्रविष्टियाँ सही हैं, विकी के पास यह कहने के लिए है:
http://en.wikipedia.org/wiki/Environment_variable

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

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

पुराने DOSlike 8.3 सम्मेलनों का उपयोग आकार को सिकोड़ने का एक तरीका है, यह बैच /programming//a/20362922 अच्छी तरह से काम करता है। मूल स्ट्रिंग का बैकअप लेना सुनिश्चित करें (फिर से)। उस प्रश्न पर अन्य संभावित समाधान भी देखें।

यहाँ मेरा कैसा दिखता है, यह बदतर हो गया है।
% SystemRoot% \ system32?

मैं एक दिल की धड़कन में जल्दी से बाहर टॉस होगा, और AMDs कार्यक्रमों में पहले एक विस्तारित पथ डाल दिया है, इसे फेंक दिया, Adobee एक था, इनमें से कोई भी मानक GUI शॉर्टकट / आइकन विधियों के लिए मायने रखता है। कई चीजों को हटाया जा सकता है, फिर सभी कार्यों का परीक्षण करें। अगर आप सीएमडी प्रॉम्प्ट में टाइप करके चीजों को कॉल करते हैं, तो उन रास्तों को हटाने से काम नहीं चलेगा।


तो आप कह रहे हैं कि अगर मैं रास्ते निकाल दूं तो आवेदन विफल नहीं होंगे ?
CC Inc

विंडोज 7 64-बिट
CC इंक

क्या आपको पता है कि वहाँ पहले से ही अनइंस्टॉल है? Qt, AMd और Nividia को बाहर निकालें, (आप इसे वापस करने के बाद) mabey और देखें कि क्या यह काफी छोटा है? मैंने अपना पोस्ट किया है, यह लगभग 140 अक्षर है।
Psycogeek

ठीक है, मैं देखूंगा ..
CC Inc

3
सीमा 2048 वर्णों की प्रतीत होती है । उस बिंदु के बाद, मैं पर्यावरण चर GUI में किसी भी अधिक वर्ण इनपुट नहीं कर सकता।
मतीन उल्हाक

9

मेरे पास अपने रास्ते पर कई सॉफ्टवेयर विकास से संबंधित पर्यावरण चर हैं, जो सभी महत्वपूर्ण हैं।

उपरोक्त समाधान मेरे लिए काम नहीं करेगा, इसलिए मैं निर्देशिका जंक्शनों के लिए गया :

  • मेरे पथ में सबसे लंबे रास्तों में से कुछ का चयन करें (जैसे C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • मेरे जंक्शनों को संग्रहीत करने के लिए एक छोटा फ़ोल्डर बनाएँ: c: \ d \
  • लंबे रास्तों के लिए छोटे जंक्शन बनाएं:

mklink / jc: \ d \ sql "C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \"

ऐसा करते हुए कि 15 रास्तों पर मेरे PATH को 2045 से घटाकर 1285 अक्षर कर दिया गया।

यह एक समस्या हो सकती है जब आप अंततः अपनी मशीन से सामान की स्थापना रद्द करते हैं क्योंकि जंक्शन रास्ते में रहेंगे और आपको उन्हें मैन्युअल रूप से साफ करना होगा।


1
मेरे पास काफी विशिष्ट देव एनवायरमेंट, नवीनतम वीएस + कई पुराने संस्करण और एसक्यूएल सर्वर स्थापित हैं। यह, अब तक का सबसे अच्छा समाधान रहा है। बाहर टॉस के लिए स्वीकृत उत्तर हास्यास्पद है।
मेष

आपने C: \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \ के लिए रजिस्ट्री पथ प्रविष्टि क्या बदल दी? c: \ d \ sql?
आउटऑफचौच

अगर आपका मतलब PATH पर्यावरण चर है तो हाँ। मैं SQL सर्वर निर्देशिकाओं के लिए किसी भी अन्य संदर्भ के साथ गड़बड़ नहीं किया।
जुलियानो

यहाँ कड़ी पर एक अच्छा सा ट्यूटोरियल है: howtogeek.com/howto/16226/…
ofer.sheffer

1

जबकि पथ में अधिकतम स्वीकार्य अधिक लंबा है, मैंने इस विषय (और Microsoft संदर्भ) पर स्टैक ओवरफ्लो आधिकारिक जवाबों पर पाया है कि यह बताता है कि 2048 बाइट्स का अधिकतम विस्तारित पथ मान काम करेगा, और इससे अधिक कुछ भी समस्याओं का कारण होगा। "विस्तारित" से मेरा तात्पर्य यह है कि% परिसीमाओं के साथ निरूपित किसी भी चर का विस्तार मूल्य बनने के लिए डाला गया मान होगा, और कुल विस्तारित लंबाई 2048 बाइट्स से अधिक नहीं होनी चाहिए। मैंने देखा है कि इसके कारण होने वाली समस्याओं के प्रकार (विंडोज 7 के रूप में) हैं:

  • मूल्य के अंत में पथ को नहीं पहचानता है
  • सॉफ्टवेयर या पैच की स्थापना जो PATH मान को संशोधित करती है, रनटाइम मान NULL बनने का कारण बनती है, इस प्रकार विंडोज चलाने वाले सभी प्रकार के मुद्दे, जैसे आपके सभी प्रारंभ मेनू, डेस्कटॉप और टास्क बार आइकन अपनी छवियों को खो देते हैं, और सरल कमांड प्रॉम्प्ट जैसे " पिंग "या" ipconfig "शो कमांड मान्यता प्राप्त त्रुटियां नहीं हैं
  • PATH मानों पर निर्भर अनुप्रयोग प्रोग्राम विफल

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


यह स्पष्ट नहीं है कि यह लेखक के प्रश्न का उत्तर कैसे देता है, कम से कम अधिक है, तो मौजूदा उत्तर क्या करते हैं, जो उनके बयानों का बैकअप लेने के लिए वास्तविक प्रमाण प्रदान करते हैं।
रामहाउंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.