명령 행을 통해 시스템의 PATH 변수에 항목을 영구적으로 추가하려면 어떻게해야합니까? 있다고 가정 할 수는 없습니다.

내가 해야하는 것:

  • %PATH%SYSTEM 레벨에서 환경 변수에 폴더를 추가하십시오 .
  • 영구적으로 변경하십시오.

어떻게해야합니까 :

  • 명령 프롬프트 또는 필요한 모든 명령.BAT파일에 쓸 수있는 다른 방법을 사용 합니다.
  • 인터넷에 연결하지 않고 Windows XP SP3을 설치할 때 사용할 수있는 도구 사용 합니다.
  • 스크립트를 로컬로 실행하고 싶지만 대상 시스템에 원격으로 액세스 할 수도 있습니다. 그러나 시스템에서 기본이 아닌 서비스 (예 : 원격 레지스트리)가 활성화되어 있다고 가정 할 수는 없습니다.

스크립트가 작동해야하는 시스템 :

  • Windows XP SP3
  • Windows Server 2003 SP2
  • Windows 7 SP1
  • Windows Server 2008 R2 SP1

나는 SET명령에 상당히 익숙 하지만 일반적으로 추가하는 대신 기존 변수를 덮어 쓸 것임을 알고 있습니다. 허용되지 않습니다. SET변수에 대신 추가 할 다른 도구 (또는 옵션 , 알지 못함)가 있습니까? 또는 기존 변수를 다른 변수 또는 텍스트 파일에 임시로 복사하는 것을 포함하여 해결 방법을 스크립트에 넣어야합니까?

또한 변수를 영구적으로 변경 SET하지 않는 것은 내 이해입니다 . 에 대한 언급을 보았지만 Windows XP SP3에 기본적으로 제공되지 않는 것 같습니다 (또는 적어도 작업중 인 시스템에서 사용할 수없는 것으로 보입니다). 레지스트리 편집 등을 통해 변경을 영구적으로 만드는 또 다른 방법이 있습니까?SETX

몇 가지 둘러보고 Windows에서 환경 변수 설정에 대해 여기에서 조금 배웠습니다. 그러나 아직 내 요구에 맞는 정확한 중복 질문을 찾지 못했습니다 . 하나 있으면 알려주십시오.



답변

다음은 경로에 ‘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에서만 테스트했지만 최신 버전에서도 작동합니다.

컴퓨터를 다시 부팅하기 전에 로그온 한 새 사용자가 새 경로를 얻지 못할 수 있습니다.

Harry는 % 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.
)

답변

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