내가 해야하는 것:
%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