다음 환경 변수를 상상해 보세요.
체계경로 = C:\Windows
밥의 것사용자경로 =C:\Users\Bob
명령 프롬프트에서 PATH
명령은 다음을 반환합니다.C:\Windows;C:\Users\Bob
달리고 난 후setx /m PATH "C:\Node;%PATH%"
체계경로 =C:\Node;C:\Windows;C:\Users\Bob
새 명령 프롬프트에서 PATH
명령은 다음을 반환합니다.C:\Node;C:\Windows;C:\Users\Bob;C:\Users\Bob
다른 사용자인 Alice가 로그인합니다.
Alice의사용자경로 =C:\Users\Alice
명령 프롬프트에서 PATH
명령은 다음을 반환합니다.C:\Node;C:\Windows;C:\Users\Bob;C:\Users\Alice
Bob의 변수에는 중복된 경로가 있고 PATH
Alice의 변수에는 Bob의 경로가 있습니다 PATH
.
PATH
현재 사용자의 로 시스템을 오염시키지 않고 시스템에 추가할 수 있는 방법이 있습니까 PATH
?
답변1
Windows 7에서는 다음을 사용하여 시스템 경로를 조회할 수 있습니다.
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" /v path
그래도 Windows 8에서 작동한다면 이를 사용하여 새로운 가치를 구축하세요.
의 출력을 구문 분석하는 방법을 알아내야 합니다 reg query
. 다음은 작동할 수 있는 방법입니다.
for /f "tokens=1,2*" %a in (' reg query "HKLM\…\Environment" /v path ') do set currentValue=%c
어디
- 문자열 은 작은따옴표로 묶인 명령(위에서 제공) 입니다 .
'reg query "HKLM\…\Environment" /v path'
reg query
a
,currentValue
및c
는 변수 이름입니다. 원하는 변수 이름을 선택할 수 있습니다. 단, thea
및 는c
단일 문자, 두 문자 간격이어야 합니다(예:n
andp
, 또는x
및 을 사용할 수 있음z
).-
for /f "options" %variable in ('command1') do command2
실행하고 , 출력을 구문 분석하고, (들)에 값을 할당하고( 위, 아래도 참조) 실행합니다 .command1
%variable
%a
command2
tokens=1,2*
%a
이는 각 (나머지) 줄의 첫 번째 토큰(단어)을 가져오고,%b
두 번째 단어를 가져오고,%c
줄의 나머지 부분을 가져오는 것을 의미합니다 .- 첫 번째 단어는
path
(값 이름)입니다. - 두 번째 단어는
REG_EXPAND_SZ
(값 유형)입니다. - 줄의 나머지 부분이 값입니다.
(그냥
tokens=2*
and를 사용하면 됩니다currentValue=%b
.)- 첫 번째 단어는
따라서 위의 작업을 실행한 후 다음을 수행할 수 있어야 합니다.
setx PATH "C:\Node;%currentValue%" /m
- 스크립트(
.BAT
파일) 에서 이 작업을 수행하는 경우%%a
및 를 사용하세요%%c
. echo
를 사용하기 전에 명령을 사용하여 이를 테스트해야 합니다setx
.
답변2
모든 사람이 사용하는 시스템 경로 값에 Bob의 특정 경로를 입력하지 마세요.
시스템 경로의 이전 값을 읽고 수정한 후 새 값을 설정합니다. cmd.exe
(분명히 명령이 생성/수정/삭제할 수 있지만 읽을 수는 없음) 이러한 기능을 제공하지 않는 경우 set
배치 파일에서 호출하는 프로그램에 넣으십시오.
시스템 경로 값은 레지스트리를 통해 발견(및 변경)됩니다. 나는 내가 알고 있는 가치를 검색하여 정확히 어디에 있는지, Google에서 그에 대해 언급된 내용을 확인하는 핵심 경로를 검색합니다.
(나중: 그들은 HKLM\System\CurrentControlSet\Control\Session Manager\Environment
과 HKCU\Environment
)
Windows용 고급 스크립트 언어나 Windows API 지원을 사용하면 이를 처리할 수 있습니다. 또는 선택한 언어로 실행 가능한 컴파일된 프로그램입니다.
그는 CMD 교체 쉘명령을 받아@REGQUERY 함수가 있습니다:
echo %@REGQUERY["HKLM_64\System\CurrentControlSet\Control\Session Manager\Environment\Path"]
특정 시스템을 염두에 두고 있는 것 같으므로 다음과 같이 설치할 수 있습니다.TCC/LE(무료)이를 사용하여 배치 파일을 해석합니다.