उपयोगकर्ता पथ को संपादित करने के लिए बैच फ़ाइल


0

मेरे पास एक बैच फ़ाइल है जो मुझे इस मंच में एक अन्य पोस्ट से मिली है जो उपयोगकर्ता के पथ को संपादित करती है लेकिन यह बम है यदि पथ में कोई प्रोग्राम फ़ाइलें (x86) प्रविष्टियाँ हैं जो विंडोज़ 7 मशीनों पर आम हैं। किसी भी विचार की स्क्रिप्ट को कैसे ठीक किया जाए ताकि वह इन प्रविष्टियों के साथ काम करे?

@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.
)

जवाबों:


0

स्क्रिप्ट विफल हो जाती है क्योंकि )में Program Files (x86)मुख्य रूप से आप IF कोड में कोड ब्लॉक को बंद कर रहा है।

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

@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 not defined ValueName (
  @echo %KEY_NAME%\%VALUE_NAME% not found.
  exit /b
)
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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.