Cmd.exe में एक (सिस्टम वाइड) पर्यावरण चर को सेट या संशोधित करना


13

मैं कमांड लाइन से एक पर्यावरण चर जोड़ने और / या संशोधित करने और / या हटाने के लिए एक सुविधाजनक तरीका ढूंढ रहा हूं। विशेष रूप से, मैं खुद को कई बार स्थितियों में पाता हूं जब मुझे cmd.exe में कुछ चर जोड़ना पड़ता है।

यदि कोई व्यक्ति मुझे संशोधित करने के लिए एक नई निर्देशिका जोड़ने के लिए कोई गैर-जीयूआई रास्ता दिखाता है, तो मैं आभारी रहूंगा %PATH%

परिवर्तन स्थायी होना चाहिए, न कि केवल cmdसत्र की अवधि के लिए ।


1
मुझे लगता है कि आपको एक समस्या यह मिलेगी कि स्थायी , सिस्टम-वाइड वातावरण चर में अधिकांश परिवर्तनों को संशोधित मूल्यों का उपयोग करने के लिए उपयोगकर्ता के सत्र के लिए लॉगआउट / लॉगिन (या रिबूट) की आवश्यकता होती है।
क्विकोट

जवाबों:


8

रेग कमांड के साथ रजिस्ट्री वेरिएबल में हेरफेर करने का ओल्ड स्कूल तरीका पैसे पर था। यहाँ आप इसे कैसे करते हैं:

reg add HKCU\Environment /v PATH /d "%addonpath%;%path%" /f

इसे एक पंक्ति स्क्रिप्ट में फेंक दें जिसे apath.bat कहा जाता है जो इस तरह दिखता है:

@echo off
reg add HKCU\Environment /v PATH /d "%~dp0;%path%" /f

उसके बाद, आपको जो नई निर्देशिका प्रदान करनी होगी, वह स्क्रिप्ट को कॉल करते समय आपके द्वारा जोड़ी जा रही है और आपको इसमें डायल किया गया है:

उदाहरण के लिए: apath.bat% addonpath%

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


क्या इस आदेश को पुनः आरंभ करने की आवश्यकता है?
जुजेर अली

नहीं, लेकिन आपको एक नई (cmd) प्रक्रिया का उपयोग करना होगा।
माइक

1
मेरे लिए, इसे पुनः आरंभ करने की आवश्यकता है? क्यों? मैं विंडोज एक्सपी, एसपी 3 पर हूं।
चांगवांग जांग

15

आप setx का उपयोग कर सकते हैं।

उपयोगकर्ता चर:

SETX PATH "%PATH%;C:\MyDir"

सिस्टम चर:

SETX PATH "%PATH%;C:\MyDir" /M

मेरा मानना ​​है कि SETX विस्टा के बाद से उपलब्ध है, लेकिन मैं एक्सपी पर हूं।
रेने न्याफेनेगर

आप विस्टा मशीन से setx.exe को कॉपी करने में सक्षम हो सकते हैं। शायद काम नहीं करेगा, लेकिन यह हो सकता है।
क्वैक क्वोटोटे

2
SETX Windows Server 2003 के लिए संसाधन उपकरण का एक हिस्सा है। आप इसे अपने सिस्टम32 निर्देशिका में जोड़ सकते हैं, या आपके द्वारा जोड़ा गया कोई भी पथ (चिकन-अंडा!)।
14

मुझे / M भाग की आवश्यकता है इसलिए मैं सिस्टम चर को संशोधित कर सकता हूं, न कि उपयोगकर्ता को। धन्यवाद!
आंद्रेई Sfat

दोनों निर्दिष्ट आदेश गलत हैं। क्यों? विंडोज वास्तव में दो PATH मूल्यों को बनाए रखता है: सिस्टम-वाइड और प्रति-उपयोगकर्ता। जब आप टाइप करते हैं echo %PATH%, तो आप उन्हें एक साथ जोड़कर देखते हैं, जैसे <system path>;<user path>। इस प्रकार, पहला कमांड उपयोगकर्ता पथ में प्रकट होने वाले सिस्टम पथ की वर्तमान वस्तुओं को बाध्य करेगा (जो इतना बुरा नहीं है), जबकि दूसरी कमांड सिस्टम पथ में प्रकट होने के लिए उपयोगकर्ता पथ के वर्तमान आइटम का कारण होगा (जो अस्वीकार्य है)।
साशा

1

आप HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorunएक बैच फ़ाइल में इंगित करने के लिए रजिस्ट्री कुंजी का उपयोग कर सकते हैं , जिससे आप आर्कन सेटिंग संवादों में बिना कटौती के अर्ध-स्थायी परिवर्तन कर सकते हैं।


जहां तक ​​मुझे पता है कि cmd.exe के बाद के इनवॉइस (बिना / d फ्लैग के) को प्रभावित करेगा, लेकिन संपूर्ण सिस्टम या अन्य (बाद में इनवॉक्ड) प्रक्रियाओं को नहीं।
रेने न्यफेनेगर

वह सही है। मुझे पता है कि एक फायदा, इसका मतलब है कि आप इसे अलग-अलग प्रक्रियाओं के बारे में चिंता किए बिना कर सकते हैं कि न जाने क्या करना है। यह, हालांकि, किसी भी इंटरेक्टिव प्रॉम्प्ट में काम करेगा, जो हमेशा अच्छा होता है: P
Phoshi

1

यदि आप GUI (नियंत्रण कक्ष, सिस्टम, उन्नत, पर्यावरण चर, पथ) का उपयोग नहीं करना चाहते हैं, तो आप संभवतः REGसेट करने के लिए उपयोग कर सकते हैं HKCU\Environment\PATH

  • अपडेट करें %PATH%
  • REG ADD HKCU\Environment /v PATH /t REG\_EXPAND\_SZ /d "%PATH%" /f

/fमौजूदा मूल्य को अधिलेखित करने वाली ताकतों को इस सवाल का जवाब देने की आवश्यकता नहीं है।

संपादित करें: %PATH% उद्धृत करने की आवश्यकता है।

संपादित करें: यह भी ध्यान देने योग्य है कि इससे प्रभावी होने से पहले शायद रिबूट या री-लॉगिन की आवश्यकता होती है। GUI में इसे बदलते समय तुरंत (नए cmd.exeसत्र के लिए) प्रभावी हो जाता है ।

संदर्भ: http://support.microsoft.com/kb/104011

संदर्भ के अनुसार, यदि आप कुछ कोड लिखना चाहते हैं, तो आप WM_SETTINGCHANGE भेज सकते हैं और इसके लिए लॉगिन / लॉगआउट आवश्यकता से बचना चाहिए।


यह बहुत उपयोगी होगा। लेकिन, अगर मैं उस चर पर क्वेरी करता हूं, तो यह कुछ भी वापस नहीं करता है।
पीए

मानव संसाधन विकास मंत्री। XP पर प्रो SP3 अंग्रेजी मैं अपने पाथ के साथ मिलता है REG QUERY HKCU\Environment /v PATH:।
ओपेलो

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

ठीक है, यह एचकेसीयू में है। लिंक किए गए Microsoft KB आलेख में दोनों रजिस्ट्री स्थान हैं।
ओपेलो

1
यह लगभग वही है जो मैं ढूंढ रहा हूं ... अगर cmd.exe से WM_SETTINGCHANGE भेजने का एक तरीका भी था।
रेने न्यफेनेगर

0

वर्तमान cmd.exe प्रक्रिया में पथ बदलना आसान है:

PATH c:\MyNewDirectory;%PATH%

आप हमेशा PATH कमांड पर मदद के लिए PATH कर सकते हैं।


1
क्या यह केवल सत्र के लिए अच्छा नहीं है?
जेएल

हां, यह पूरे सत्र में जारी नहीं रहता है।
जॉन टी

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

0

वास्तव में स्थायी, सिस्टम-वाइड परिवर्तनों के लिए, आप वास्तव में सिस्टम कंट्रोल पैनल (उर्फ माय कंप्यूटर -> गुण -> उन्नत -> पर्यावरण चर, WinXP के लिए) का उपयोग करना चाहते हैं। एक्सप्लोरर शेल में GUI प्रोग्राम सहित, वहां की सेटिंग्स आपके पूरे सिस्टम को प्रभावित करती हैं।

यदि आपको केवल cmd.exeशेल में इन परिवर्तनों की आवश्यकता है , तो आप एक बैचफ़ाइल चला सकते हैं जो उन्हें सेट करता है जब भी आप cmd.exe विंडो शुरू करते हैं। Phoshi के जवाब में उल्लेख किया गया है HKEY_CURRENT_USER\Software\Microsoft\Command Processor\Autorun, जो एक उत्कृष्ट विकल्प की तरह लगता है - यदि आप की आवश्यकता है, तो कमांडलाइन से छोटे परिवर्तन करना आसान है, और फिर से चलाएँ। लेकिन यह GUI विंडो या एक्सप्लोरर शेल को प्रभावित नहीं करेगा।

मुझे वास्तव में आश्चर्य हुआ कि Sysinternals के पास ऐसा करने के लिए सक्षम उपयोगिता नहीं है। शायद PStools में से एक यह कर सकता है?


0

ऐसा करने के बहुत सारे तरीके। REG ADD एक है, या REG IMPORT (दूसरे कंप्यूटर से एक्सपोर्टेड .REG फाइल का उपयोग करके)। SETX / M एक और है। आप समूह नीति प्राथमिकताएं (बड़ी संख्या में कंप्यूटरों के लिए हाथ से नीचे का सबसे आसान तरीका) का उपयोग करके इसे बाहर निकाल सकते हैं


0

यहां एक और विचार का उल्लेख नहीं किया गया है, एक ऑटोहोटी स्क्रिप्ट बनाएं जो नियंत्रण कक्ष लॉन्च करेगा और आपके लिए इसे दर्ज करेगा। यदि आप पहले से ही AHK उपयोगकर्ता हैं तो यह अच्छी तरह से काम करता है :-)

https://autohotkey.com/board/topic/63210-modify-system-path-gui/

इसके अलावा क्या संपादन hklm / प्रणाली / currentcontrolset001 / नियंत्रण / सत्र प्रबंधक / पर्यावरण: पथ कुंजी के बारे में? लेकिन वही कुंजी hklm / system / currentcontrolset002 और hklm / system / currentcontrolset के अधीन है। ऐसा प्रतीत होता है कि यह सही हो सकता है, यहाँ प्रति: /programming/3304463/how-do-i-modify-the-path-environment-variable-when-running-an-inno-setup-install

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