आप विंडोज में पैठ पर्यावरण चर को अधिक आबादी से कैसे बचा सकते हैं?


115

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

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


आप इतने रास्तों का उपयोग क्यों करते हैं? रास्ता आम तौर पर आमिर के लिए उपयोग किया जाता है, जब आपके ऐप को दूसरों के साथ ऑब्जेक्ट / ऐप / लिबास को साझा करना होगा। ऐप बनाने की शुरुआत धीमी करें। क्या आप इसका उपयोग करने के बारे में अधिक विवरण दे सकते हैं, पथ पर्यावरण संस्करण बना सकते हैं?
pinichi

1
हाय pinichi, अच्छी तरह से अनुप्रयोगों का एक बहुत मानक "C: \ Program फ़ाइल \ AppNAme \ ..." का उपयोग करते हैं, और मेरे मामले में इस एप्लिकेशन का एक बहुत कुछ कमांड लाइन फैशन में चल सकता है या अन्य एप्लिकेशन तक पहुंचने की आवश्यकता है ( उदाहरण के लिए मिकटेक्स के निष्पादन योग्य जो किसी भी टेक्स संपादक की मौजूदगी की उम्मीद करते हैं), इसलिए उन्हें पीएटीएच में होना चाहिए। मैं एक बेहतर दृष्टिकोण जानना नहीं चाहता क्योंकि मेरा
अप्राप्य है

1
यह उपकरण पथों को संपीड़ित करेगा। परिणाम प्रभावशाली है: uweraabe.de/Blog/2014/09/09/the-garbled-path-variable/#more-337
InTheNameOfScience

जवाबों:


84

एक तरीका मैं सोच सकता हूं कि आंशिक रास्तों को संग्रहीत करने के लिए अन्य पर्यावरण चर का उपयोग करना है; उदाहरण के लिए, यदि आपके पास है

C:\this_is_a\long_path\that_appears\in_multiple_places\subdir1;
C:\this_is_a\long_path\that_appears\in_multiple_places\subdir2;

तो आप इस तरह के रूप में एक नया वातावरण चर बना सकते हैं

SET P1=C:\this_is_a\long_path\that_appears\in_multiple_places

जिसके बाद आपके मूल रास्ते बन जाते हैं

%P1%\subdir1;
%P1%\subdir2;

संपादित करें: एक अन्य विकल्प एक binनिर्देशिका बनाना .batहै जो उपयुक्त .exeफाइलों को इंगित करने वाली फ़ाइलों को रखती है ।

EDIT 2: एक अन्य उत्तर में बेन वोइगट की टिप्पणी का उल्लेख है कि सुझाव के अनुसार अन्य पर्यावरण चर का उपयोग करने से शायद उनकी लंबाई कम न हो %PATH%क्योंकि वे संग्रहीत होने से पहले विस्तारित हो जाएंगे। यह सच हो सकता है और मैंने इसके लिए परीक्षण नहीं किया है। एक अन्य विकल्प हालांकि लंबी निर्देशिका नामों के लिए 8dot3 रूपों का उपयोग करना है, उदाहरण के C:\Program Filesलिए आम तौर पर इसके बराबर है C:\PROGRA~1। आप dir /xछोटे नामों को देखने के लिए उपयोग कर सकते हैं ।

EDIT 3: यह सरल परीक्षण मुझे विश्वास दिलाता है कि बेन वोइग्ट सही है।

set test1=hello
set test2=%test1%hello
set test1=bye
echo %test2%

इसके अंत में, आप आउटपुट को hellohelloइसके बजाय देखते हैं byehello

EDIT 4: यदि आप कुछ निश्चित रास्तों को खत्म करने के लिए बैच फ़ाइलों का उपयोग करने का निर्णय लेते हैं %PATH%, तो आप इस बात से चिंतित हो सकते हैं कि आपके बैच फ़ाइल से तर्कों को पारित करने के लिए कैसे आपके निष्पादन योग्य हो जैसे कि प्रक्रिया पारदर्शी है (यानी, आपको कोई अंतर नहीं दिखाई देगा। बैच फ़ाइल को कॉल करने और निष्पादन योग्य को कॉल करने के बीच)। मुझे बैच फ़ाइलों को लिखने का पूरा अनुभव नहीं है, लेकिन यह ठीक काम करता है।

@echo off

rem This batch file points to an executable of the same name
rem that is located in another directory. Specify the directory
rem here:

set actualdir=c:\this_is\an_example_path

rem You do not need to change anything that follows.

set actualfile=%0
set args=%1
:beginloop
if "%1" == "" goto endloop
shift
set args=%args% %1
goto beginloop
:endloop
%actualdir%\%actualfile% %args%

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

%actualdir%\%actualfile% %args%

साथ में

echo %actualdir%\%actualfile% %args%

आदर्श रूप से आपको यह पता होना चाहिए कि इसे चलाने से पहले आपको हर पंक्ति क्या होती है।


1
8dot3 फॉर्म अच्छा काम करता है, लेकिन निर्देशिकाओं के लिए असली बड़ा बहुत बड़ा नहीं है, उदाहरण के लिए "C: \ Program Files (x86) \ Microsoft Visual Studio 2008 SDK \ VisualStudioIntegration \ Tools \ Sandcastle \ ProductionTools \"। एक और बात जो थोड़ी बचत करती है, वह यह थी कि एक उपयोगकर्ता के रूप में मैं सिस्टम पथ में स्थित एक पाथ चर बना सकता था, और किसी अन्य डीआर को जोड़ सकता था। यह सभी दृष्टिकोण "कॉम्पैक्ट दैट स्ट्रिंग" प्रकार के हैं, लेकिन क्या हमारे पास बायनेरिज़ की केंद्रीकृत निर्देशिका हो सकती है, जैसा कि यूनिक्स है?
mjsr

1
हम्म, बहुत लंबी निर्देशिकाओं के बारे में, मुझे लगता है कि विपरीत सच है: अब निर्देशिका, जितने अधिक वर्ण आप 8dot3 प्रारूप का उपयोग करके बचाते हैं। यदि इसमें नेविगेट करना कठिन है cmd, तो ध्यान दें कि आप *टाइपिंग को बचाने के लिए उपयोग कर सकते हैं । इसलिए उदाहरण के लिए, रूट से, टाइप करें dir /x pro*। आप अपने वांछित निर्देशिका को इसके 8dot3 नाम के साथ देखेंगे। फिर cdइसे नेविगेट करने और प्रक्रिया को दोहराने के लिए उपयोग करें।
मिच श्वार्ट्ज

1
UNIX के बारे में, आपके पास विंडोज में $PATHसमान रूप से काम करता है %PATH%, इसलिए मुझे यकीन नहीं है कि आपकी बात बिल्कुल सही है। अधिवेशन के द्वारा, UNIX निर्देशिका नाम विंडोज की तुलना में छोटे होते हैं, और परिणामस्वरूप $PATHयह भी छोटा हो जाता है।
मिच श्वार्ट्ज

2
धन्यवाद मिच, संपादन 4 जो आप प्रदान करते हैं जो मैं चाहता था!, अब मेरे पास सभी बायनेरिज़ के साथ केंद्रीकृत फ़ोल्डर हो सकते हैं जिनकी मुझे आवश्यकता है। मैं यह देखने के लिए और अधिक परीक्षण करने जा रहा हूं कि क्या किसी एप्लिकेशन के साथ कोई समस्या है
mjsr

2
निष्पादन योग्य तर्कों को पारित करने के लिए आपका 'संपादित 4' खंड अत्यधिक जटिल है। देखें माइकल बूर का जवाब।
डेव एंडरसन

83

यह आपके% PATH% पर्यावरण चर को पार्स कर देगा और प्रत्येक निर्देशिका को उसके शोर्टनाम के समतुल्य में बदल देगा और फिर सभी को एक साथ वापस कर देगा:

@echo off

SET MyPath=%PATH%
echo %MyPath%
echo --

setlocal EnableDelayedExpansion

SET TempPath="%MyPath:;=";"%"
SET var=
FOR %%a IN (%TempPath%) DO (
    IF exist %%~sa (
        SET "var=!var!;%%~sa"
    ) ELSE (
        echo %%a does not exist
    )
)

echo --
echo !var:~1!

आउटपुट लें और पर्यावरण चर में पथ परिवर्तन को अद्यतन करें।


धन्यवाद जो बहुत उपयोगी था !! इसने १ ९९ ० से १३३ from तक मेरा रास्ता छोटा कर दिया और सब कुछ अभी भी एक आकर्षण की तरह काम करता है! मैंने आपका दृष्टिकोण इसलिए चुना क्योंकि मैं सब कुछ अपने रास्ते में रखना चाहता था और बैच फ़ाइलों से लिंक करना बहुत अधिक समय लेने वाला होता। धन्यवाद!
ndrizza

2
यह उपयोगी भी था क्योंकि इसने मुझे अपने रास्ते में मौजूद सभी गैर-मौजूद निर्देशिकाओं के बारे में बताया था जो समय के साथ जमा हो गए थे।
नैट ग्लेन

27
रैपिड एनवायरनमेंट एडिटर ऐसा करने का एक और तरीका है। यह गैर-मौजूद निर्देशिकाओं पर प्रकाश डालता है और इसका एक विकल्प है "लंबे मार्ग को संक्षिप्त में बदलें"।
रसेल गैलोप

3
@RussellGallop: वह, सर, एक कमाल का उपकरण है।
elo80ka

1
नोट बंद होने के बाद गायब होने पर ध्यान दें %%~sa। मैंने उत्तर को अपडेट करने की कोशिश की लेकिन यह मुझे तब तक नहीं होने देगा जब तक मैं 6 अक्षर नहीं बदल देता
zr870

28

यदि आप विंडोज़ विस्टा या उच्चतर का उपयोग कर रहे हैं, तो आप फ़ोल्डर में एक प्रतीकात्मक लिंक बना सकते हैं। उदाहरण के लिए:

mklink /d C:\pf "C:\Program Files"

एक लिंक बनाना होगा ताकि c:\pfआपका program filesफ़ोल्डर बन जाए। मैंने इस ट्रिक का उपयोग करके अपने पथ से 300 वर्णों को काट दिया।


यह आंशिक पथ का प्रतिनिधित्व करने के लिए पर्यावरण चर का उपयोग करने का एक अच्छा विकल्प है।
पोर्कस

1
यह निश्चित रूप से और अधिक मदद मिलेगी, लेकिन अगर आप एक अधिक "सही" (समर्थित?) समाधान चाहते हैं, आप के उदाहरण की जगह ले सकता c:\Program Filesहै और c:\Program Files (x86)पूर्व निर्धारित चर के साथ %ProgramFiles%और %ProgramFiles(x86)% tenforums.com/tutorials/... ये केवल कुछ पात्रों को बचाने प्रत्येक , लेकिन अगर आप वास्तव में पाथ को अधिकतम करने के कगार पर हैं, तो यह अंतर हो सकता है। उस बात के लिए, मैं% pf% और% pfx% बनाने जा रहा हूँ जो सही रास्तों पर चलते हैं। विचार के लिए धन्यवाद! :)
रेनबा

% Pf% और% pfx% जैसे चर का उपयोग करने के साथ समस्या यह है कि आपको प्रतीकात्मक लिंक बनाने जैसी ही समस्याएं मिलती हैं - सॉफ़्टवेयर अद्यतन पथ चर में फिर से चीज़ें जोड़ सकते हैं। इस तरह चर का उपयोग करने के साथ अन्य समस्या यह है कि यह त्वरित और आसान नहीं है इसके चारों ओर चीजों को स्क्रिप्ट करना या एक्सप्लोरर से उन्हें ब्राउज़ करना है। मेरे द्वारा बताई गई विधि का उपयोग करके, आप सचमुच c: \ PF खोल सकते हैं। विंडोज इसे सिर्फ एक फोल्डर की तरह देखता है ताकि आप बैट या पॉवरशेल को बहुत आसानी से इसके खिलाफ लिख सकें।
bmg002

10

मामले में किसी की दिलचस्पी ...

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

उदाहरण के लिए, यदि मैं ग्रहण में कुछ C ++ विकास करना चाहता था, तो मैं करूंगा:

> initmingw
> initeclipse
> eclipse

यह एक ही नाम (जैसे C ++ और D कंपाइलर, जिसमें दोनों में एक मेक। Exe है) के साथ निष्पादनयोग्य के बीच टकराव से बचने के लिए भी आसान है।

मेरी बैच फाइलें आमतौर पर इस तरह दिखती हैं:

@echo off
set PATH=C:\Path\To\My\Stuff1;%PATH%
set PATH=C:\Path\To\My\Stuff2;%PATH%

मुझे यह दृष्टिकोण अपेक्षाकृत साफ लगता है और अभी तक इसके साथ किसी भी समस्या में नहीं चलना है।


7

मुझे आम तौर पर इस बारे में चिंता करने की ज़रूरत नहीं है (मैं एक पथ आकार सीमा में नहीं चला हूं - मुझे यह भी नहीं पता कि आधुनिक विंडोज सिस्टम पर क्या है), लेकिन यहां मैं एक कार्यक्रम की निर्देशिका को डालने से बचने के लिए क्या कर सकता हूं राह:

  • अधिकांश कमांड लाइन उपयोगिताओं को एक c:\utilनिर्देशिका में फेंक दिया जाता है जो पथ पर है
  • अन्यथा, मैं उस c:\utilनिर्देशिका में एक साधारण cmd / बैच फ़ाइल जोड़ूंगा जो कुछ इस तरह दिखती है:

    @"c:\program files\whereever\foo.exe" %*
    

जो अनिवार्य रूप से कमांड के लिए एक उपनाम बनाता है। यह बिल्कुल सही नहीं है। कुछ कार्यक्रम वास्तव में मार्ग में होने पर जोर देते हैं (जो आजकल बहुत दुर्लभ है), और अन्य कार्यक्रम जो इसे लागू करने की कोशिश करते हैं, वे इसे ठीक से नहीं पा सकते हैं। लेकिन अधिकांश उपयोगों के लिए यह अच्छी तरह से काम करता है।

लेकिन आम तौर पर, मुझे निर्देशिका को पथ से जोड़ने से बचने के बारे में चिंता करने की ज़रूरत नहीं है।


जब आप इस "पथ" का अनुसरण करना शुरू करते हैं, तो सावधान रहें कि बैच स्क्रिप्ट "CALL [बैट]] सिंटैक्स के बिना किसी अन्य बैच स्क्रिप्ट को कॉल नहीं कर सकती है। इसलिए, यदि आप यह सुनिश्चित करना चाहते हैं कि आपके अग्रेषित-या-एक्सई को बल्ले से नहीं बुलाया गया है, तो "php script.php" के बजाय "कॉल php script.php" का उपयोग करें (जो दोनों तरीकों से काम करता है) उपयोग करने का एक उत्कृष्ट कारण। बैट डिस्पैचर को PATH के नाम के टकराव (उसी एक्स के गुणक संस्करण) को रोकने के लिए है
131

@ १३१: क्या आप इस "पथ" से मतलब समझाना चाहेंगे? क्या आप उदाहरण से विशेष फ़ाइल पथ का मतलब है? या इस उत्तर द्वारा सुझाई गई सामान्य विधि?
या मैपर

@ORMapper: जब 131 कहते हैं, 'जब आप इस "पथ" का अनुसरण करना शुरू करते हैं, तो उसका अर्थ है,' जब आप इस तकनीक का उपयोग करते हैं '।
माइकल बूर

1
जैसा कि आपने लिखा है, "अन्य प्रोग्राम जो इसे लागू करने की कोशिश करते हैं, वे इसे ठीक से नहीं ढूंढ सकते हैं" - बिंदु में मामला: दुर्भाग्य से, यह कमांड लाइन अनुप्रयोगों के लिए स्वचालित कॉल फेंक सकता है, उदाहरण के लिए NAnt जैसे उपकरण का निर्माण, ऑफ कोर्स। एक उपाय पूर्व निर्धारित के साथ कमांड को लागू कर रहा है cmd /c, लेकिन इसका मतलब है कि बिल्ड स्क्रिप्ट विंडोज-विशिष्ट हो जाती है: / मैंने एक अलग प्रश्न में उसके बारे में पूछा है ।
या मैपर

5

एक अन्य विचार: गैर-8dot3 फ़ाइल नामों के लिए उत्पन्न छोटे नामों को निर्धारित करने के लिए DIR / X का उपयोग करें। फिर अपने% PATH% में इनका उपयोग करें।

उदाहरण के लिए, 'C: \ Program Files' 'C: \ PROGRA ~ 1' बन जाता है।


1
ओह, मुझे अभी पता चला है कि यह पहले ही @ मिच द्वारा सुझाया गया था। मैं उसके लिए एक +1 देने जा रहा हूं। :)
एंड्रॉयड ईव


2

मैंने हर बार एक मानक स्ट्रीम (stdin / stderr / stdout) और निकास कोड PROXY प्रोग्राम (जिसे डिस्पैचर https://github.com/131/dispatcher कहा जाता है ) पर लिखा और उपयोग किया है

सभी सीएलआई प्रोग्राम मैं उपयोग करते हैं (नोड, पीएचपी, अजगर, git, svn, rsync, plink ...) मैं वास्तव में एक ही exe फ़ाइल का उपयोग कर रहा हूँ (लगभग 10kb, कि मैं बस अलग नाम), उसी में डाल दिया निर्देशिका। एक डमी स्टैटिक क्लियर टेक्स्ट फाइल "प्रॉक्सी फाइल नेम टू रियल एक्स मैपिंग" करती है।

डिस्पैचर पूरी तरह से पारदर्शी होने के लिए निम्न स्तर की प्रक्रिया प्रबंधन win32 API का उपयोग करता है।

इस सॉफ्टवेयर का उपयोग करते हुए, मेरे पास केवल उन सभी कार्यक्रमों के लिए एक अतिरिक्त निर्देशिका है जो मेरे पैट में सेट है जो मैं उपयोग कर सकता हूं।


1

एक फ़ोल्डर c: \ bin को अपने पथ में जोड़ना और आपके द्वारा हार्डलिंक करना जैसे कि स्ट्रिंग को छोटा कर सकता है। हो सकता है कि वैल्यू c: \ Program Files के साथ सिस्टम वेरिएबल में वेरिएबल pf जोड़ें, फिर c: \ Program फाइल्स को% pf% पथ में बदलें।

संपादित करें:

एक वर्चुअल ड्राइव बनाएँ। विकल्प p: "c: \ program files"


1
मुझे लगता है कि इस पथ में विस्तारित चर शामिल होंगे, जिस स्थिति में यह छोटा नहीं होगा।
बेन Voigt

0

मैं प्रविष्टियों को प्रबंधनीय बनाने के लिए इन चरणों का पालन करता हूं:

  1. सॉफ्टवेयर संकुल के उपयोग के विभिन्न संयोजन के लिए विभिन्न उपयोगकर्ताओं को बनाया गया। उदाहरण: (ए) सभी वेब विकास सॉफ्टवेयर उपलब्ध कराने के लिए एक उपयोगकर्ता वेब बनाया; (b) सभी डेटाबेस और डेटा वेयरहाउसिंग सॉफ़्टवेयर पैकेज उपलब्ध कराने के लिए एक उपयोगकर्ता डेटाबेस बनाया गया। याद रखें कुछ सॉफ़्टवेयर एक से अधिक प्रविष्टि बना सकते हैं। या कभी-कभी मैं इसे oracle specific और MSSQL के विशिष्ट और oracle विशिष्ट उपयोगकर्ताओं में तोड़ता हूँ। मैंने MySQL / PostgreSQL, tomcat, wamp, xamp सभी को यूजर अकाउंट webr में डाल दिया।

  2. यदि संभव हो तो आम संकुल जैसे कार्यालय, फोटोशॉप, .. सभी उपयोगकर्ताओं के लिए उपलब्ध सिस्टम विशिष्ट और उपयोगकर्ता विशिष्ट के रूप में विशेष पैकेज उपलब्ध कराएं। बेशक मुझे विभिन्न उपयोगकर्ताओं में लॉग इन करना था और उन्हें स्थापित करना था। सभी सॉफ्टवेयर इस विकल्प को प्रदान नहीं कर सकते हैं। यदि "केवल इस उपयोगकर्ता के लिए इंस्टॉल करें" विकल्प उपलब्ध नहीं है, तो इसे पूरे सिस्टम के लिए इंस्टॉल करें।

  3. मैं प्रोग्राम फ़ाइल फ़ोल्डर (x86) या प्रोग्राम फ़ाइल में प्रोग्राम इंस्टॉल करने से बचता हूं। मैं हमेशा आधार निर्देशिका में स्थापित करता हूं। उदाहरण के लिए MySQL 64 बिट "C: \ mysql64" में जाता है और MySQL 32 बिट "C: \ mysql" फ़ोल्डर में जाता है। मैं हमेशा केवल 64 बिट सॉफ्टवेयर के लिए एक प्रत्यय 64 जोड़ने को मान लेता हूं। यदि कोई प्रत्यय नहीं है, तो यह 32 बिट है। मैं जावा और अन्य के लिए एक ही बात का पालन करता हूं। इस तरह मेरा रास्ता छोटा होगा, जिसमें "C: \ Program File (x86)" शामिल नहीं होगा। कुछ सॉफ़्टवेयर के लिए कॉन्फ़िगरेशन फ़ाइल को यह दिखाने के लिए संपादित करने की आवश्यकता हो सकती है कि वास्तव में .exe फ़ाइल कहां है। केवल उस प्रोग्राम को "C: \ Program File (x86)" में स्थापित करने की मांग उस फ़ोल्डर में स्थापित की जाएगी। हमेशा मुझे नाम छोटा करना याद है। मैं इस तरह के विवरणों की तरह टॉमक्रैट / रिलीज़ / संस्करण -२.५.०.३ से बचता हूं। अगर मुझे पता है कि संस्करण की आवश्यकता है, मैं नाम संस्करण द्वारा एक फ़ाइल बनाता हूं और इसे टॉमकैट फ़ोल्डर में डाल देता हूं। सामान्य रूप से जितना संभव हो उतना लिंक को छोटा करें।

  4. पथ के संक्षिप्त लिंक को बदलने के लिए किसी भी बैच को शामिल करें, यदि उपरोक्त सभी चरणों ने विंडोज सीमा पार कर ली है।

फिर उपयोग विशिष्ट (मोबाइल एप्लिकेशन, या डेटाबेस / डेटा वेयरहाउसिंग या वेब-विकास ..) उपयोगकर्ता में लॉग इन करें और संबंधित कार्यों को करें।

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


0

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

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

@echo off

:: Modify these to the actual paths of these two files
set dontSetupFile=C:\Users\Yams\Dontsetup.txt
set pathFile=C:\Users\Yams\Path.txt

:: Retrieve the current path (for determining whether or not we should append to our path)
set curDir=%cd%

:: Be done if the current path is listed in the dontSetupFile
SetLocal EnableDelayedExpansion
for /F "delims=" %%i in (%dontSetupFile%) do (
    if "%%i"=="%curDir%" GOTO AllDone
)



:: Append the pathFile to our current PATH
set pathAppend=
for /F "delims=" %%i in (%pathFile%) do (set pathAppend=!pathAppend!%%i)

set PATH=%PATH%;%pathAppend%


:: The only way to actually modify a command prompt's path via a batch file is by starting
::   up another command prompt window. So we will do this, however, if this script is
::   automatically called on startup of any command prompt window, it will infinately 
::   recurse and bad things will happen.

:: If we already ran, we are done
if "%yams%"=="onion" GOTO AllDone

:: Otherwise, flag that we just ran, and then start up a new command prompt window
::   with this flag set
set yams=onion

cmd \K set PATH=%PATH%;

:: When that command prompt exits, it will load back up this command prompt window, and
::   then the user will need to exit out of this as well. This causes this window to
::   automatically exit once the cmd it just spawned is closed.
exit()

:: Path is set up, we are done!
:AllDone
@echo on

और Path.txt कुछ ऐसा दिखेगा

C:\Program Files (x86)\Google\google_appengine;
C:\Program Files (x86)\ATI Technologies\ATI.ACE\Core-Static;
C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;
C:\Program Files\Microsoft SQL Server\110\Tools\Binn;
C:\Program Files\Microsoft DNX\Dnvm;
C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit;

जबकि Dontsetup.txt कुछ ऐसा दिखेगा

C:\Program Files (x86)\Windows Kits\8.0\Windows Performance Toolkit
C:\Program Files (x86)\Git\cmd
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin

स्टार्टअप पर स्वचालित रूप से इस रन को बनाने के लिए, regedit खोलें, HKEY_LOCAL_MACHINE / SOFTWARE / Microsoft / Command Processor पर जाएं, फिर दाईं ओर दाईं ओर क्लिक करें और नए -> मल्टी-स्ट्रिंग मूल्य को दबाएं। इसे AutoRun नाम दें। इसके लिए मूल्य निर्धारित करें

C:\Users\Yams\setUpPath.bat

या जहाँ भी आपने ऊपर बैच फ़ाइल संग्रहीत की है।


0

यह कोशिश नहीं की, लेकिन भागों में पाथ को विभाजित करने और उन्हें अंतिम चर काम में शामिल करना होगा?

उदाहरण शुरू में मान लें कि आपके पास कुछ ऐसा है

PATH={LONGPATH1};{LONGPATH2};....{2048th char}....{LONGPATH_N-1};{LONGPATH_N}

इसके बजाय आप बनाएँ:

_PATH1 = {LONGPATH1};{LONGPATH2};....{2048 char}
_PATH2 = {2049th char}...{LONGPATH_N-1};{LONGPATH_N}
rem // may be more parts
PATH = %_PATH1%;%_PATH2%
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.