मैं कमांड लाइन के माध्यम से सिस्टम के पथ चर में स्थायी रूप से प्रवेश कैसे कर सकता हूं?


13

मुझे क्या करना है:

  • %PATH%सिस्टम स्तर पर पर्यावरण चर के लिए एक फ़ोल्डर में जोड़ें ।
  • परिवर्तन को स्थायी बनाएं।

मुझे यह करने की आवश्यकता है:

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

सिस्टम को स्क्रिप्ट पर काम करने की आवश्यकता है:

  • Windows XP SP3
  • विंडोज सर्वर 2003 SP2
  • विंडोज 7 SP1
  • विंडोज सर्वर 2008 R2 SP1

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

इसके अलावा, यह मेरी समझ है जो परिवर्तनशील रूप से परिवर्तनशील SETनहीं होगा । मैंने उल्लेख किया है , लेकिन यह प्रतीत नहीं होता है कि अंतर्निहित विंडोज एक्सपी एसपी 3 (या, कम से कम, यह उस सिस्टम पर उपलब्ध नहीं दिखता है जो मैं काम कर रहा हूं)। क्या रजिस्ट्री को संपादित या कुछ के माध्यम से परिवर्तन को स्थायी बनाने का एक और तरीका है?SETX

मैंने कुछ खोज की है और विंडोज में पर्यावरण चर स्थापित करने के बारे में यहाँ से एक अच्छा सा सीखा है। हालाँकि, मुझे अभी तक एक सटीक डुप्लिकेट प्रश्न नहीं मिला है जो मेरी आवश्यकताओं के अनुरूप होगा। यदि कोई है, तो कृपया मुझे बताएं।


Setx XP के साथ नहीं आता है। यह संसाधन किट में से एक या अधिक में है, लेकिन मैं भूल जाता हूं कि कौन सा अपराध है। कमांड लाइन पर स्थायी पर्यावरण चर परिवर्तन करने के लिए यह निश्चित रूप से सबसे आसान तरीका है। आप रजिस्ट्री (HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ Environment) में परिवर्तन कर सकते हैं, लेकिन कमांड लाइन से रजिस्ट्री परिवर्तन केक का कोई टुकड़ा भी नहीं हैं। अगर मैं तुम होते, तो मैं ऐसा करने के लिए एक VBScript लिखता।
ईबीग्रीन

@EBGreen मैं REGरजिस्ट्री परिवर्तन करने के लिए उपयोग करने से थोड़ा परिचित हूँ । यदि आप एक उत्तर के रूप में पोस्ट करना चाहते हैं, तो मौजूदा पथ को बनाए रखने के सुझावों के साथ, मैं कम से कम इसे एक अप-वोट दूंगा।
इसजी

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

1
@EBGreen हाँ, यह कैसा दिखता है। वैसे, अगर आपके पास सिंटैक्स का पता लगाने के लिए कुछ समय है, तो क्या आप कृपया एक वास्तविक उत्तर पोस्ट कर सकते हैं? बल्कि मैं इसे स्व-उत्तर वाले प्रश्न में नहीं बदलूंगा।
Iszi

1
@lszi, आपको अपने प्रश्न का उत्तर देना चाहिए। एक अच्छे प्रश्न का एक अच्छा उत्तर दोनों मूल्यवान हैं, जब आप स्वयं इसका उत्तर देते हैं।
Myrddin Emrys

जवाबों:


4

निम्नलिखित आपके पथ में 'C: \ bin' जोड़ता है और फिर रजिस्ट्री में नया पथ सहेजता है:

set path=%path%;C:\bin
reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %path% /f

मैंने केवल XP SP3 पर इसका परीक्षण किया, लेकिन इसे नए संस्करण पर भी काम करना चाहिए।

मुझे लगता है कि नए उपयोगकर्ता जो मशीन रिबूट से पहले लॉग ऑन करते हैं उन्हें नया रास्ता नहीं मिल सकता है।

हैरी% SystemRoot% के बारे में अपनी टिप्पणी के साथ सही है, यदि आप इन्हें रखना चाहते हैं, तो आपको पहले रजिस्ट्री से पथ के लिए पुराने मान को खींचने की आवश्यकता है:

@echo OFF

set KEY_NAME="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
set VALUE_NAME=Path

FOR /F "usebackq skip=4 tokens=1-3" %%A IN (`REG QUERY %KEY_NAME% /v %VALUE_NAME% 2^>nul`) DO (
  set ValueName=%%A
  set ValueValue=%%C
)

if defined ValueName (

  set newPath=%ValueValue%;C:\bin

  reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d %newPath% /f

  set path=%path%;C:\bin

) else (
    @echo %KEY_NAME%\%VALUE_NAME% not found.
)

2
ज्ञात हो कि यह पर्यावरण चर संदर्भों का विस्तार करके कुछ मौजूदा पैठ प्रविष्टियों को बदल देगा। उदाहरण के लिए, मानक प्रविष्टि% SystemRoot% \ system32 को c: \ windows \ system32 से बदल दिया जाएगा। यह विशेष उदाहरण कोई फर्क नहीं पड़ता क्योंकि SystemRoot एक स्थिर है, लेकिन अगर किसी ने एक PATH को एक पर्यावरण चर के संदर्भ के साथ स्थापित किया है जो कि परिवर्तन करता है तो आप इसे तोड़ देंगे। (मैं वर्तमान सन JDK में बिन निर्देशिका की ओर इशारा करने के लिए अपने कुछ कंप्यूटरों पर ऐसा करता हूं।)
हैरी जॉनसन

यदि पथ कोष्ठक, उदाहरण के लिए, प्रोग्राम फ़ाइल (x86) के किसी भी सन्दर्भ में लिखा हुआ है तो नई स्क्रिप्ट काम नहीं करती है।
हैरी जॉनसन

-1
set path=%path%;C:\bin
reg.exe ADD "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v Path /t REG_EXPAND_SZ /d ^%path^% /f

2
जबकि नंगे कमांड उपयोगी हो सकते हैं, हम अपने प्रश्नों / उत्तरों में थोड़ा और काम करने की उम्मीद करते हैं। कृपया बताएं कि यह ओपीएस प्रश्न का उत्तर कैसे देता है।
Ƭᴇc atιᴇ007
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.