setx를 사용하여 Windows PATH 변수에 어떻게 추가합니까? 이상한 문제가
.NET을 사용하여 Windows PATH 변수를 수정하고 싶습니다 setx
. 다음은 Windows 8에서 50 % 이상 작동합니다.
setx PATH %PATH%;C:\Python27\;C:\Python27\Scripts\
"기본 인수는 2 번만 사용할 수 있습니다."라는 오류가 발생하면 다음과 같은 경우가 있습니다.
setx PATH "%PATH%;C:\Python27\;C:\Python27\Scripts\"
차이점은 두 번째 인수를 따옴표로 묶었다는 것입니다. %PATH%
공백을 포함하도록 확장 할 때 따옴표가 필요하다고 생각합니다 .
그러나 Windows 7에서 이상한 문제가 발생했습니다. 특정 Windows 7 컴퓨터에서 다음과 같은 문제가 발생했습니다.
echo %PATH%
다음을 인쇄합니다.
C:\Foo\;C:\Bar\;[...lots of stuff...]C:\Baz\
그런 다음 이렇게합니다.
setx PATH "%PATH%;C:\Quux\"
그런 다음 "오류 : 1,024 자에서 잘림"이라고 표시됩니다. 이제 PATH에 포함 된 내용을 확인하겠습니다.
echo %PATH%
다음을 인쇄합니다.
C:\Foo\;C:\Foo\;C:\Bar\;C:\Bar\;[...lots of stuff, now duplicated...]C:\B
... 그리고 1,024 자로 잘립니다. 중복 때문에 달렸습니다. 또한 흥미 롭습니다. PATH의 값은 setx
오류가 발생하고 "성공"이라고 말하지 않았 음에도 불구하고 변경 됩니다.
이 이상한 동작을 여러 번 반복 할 수있었습니다 (다행히도 PATH의 원래 내용을 저장했습니다).
현재 내가 아는 유일한 확실한 방법은 PATH에 추가하는 것입니다.
echo
경로.PATH의 내용을 텍스트 파일에 복사하고 수동으로
;C:\Python27\;C:\Python27\Scripts\
PATH 끝에 추가 합니다.텍스트 파일에서 모든 것을 복사하십시오.
setx PATH "<paste the string here>"
이 프로세스는 Windows 7과 Windows 8 모두에서 매번 작동합니다.
나는 이것을 하나의 명령으로 정말로 할 수 있어야한다. 내가 도대체 뭘 잘못하고있는 겁니까?
감사합니다.
cmd
관리자 권한 으로 실행 한 다음 :
setx /M PATH "%PATH%;<your-new-path>"
/ M 옵션은 SYSTEM 범위에서 변수를 설정합니다. 기본 동작은 USER에 대해 설정하는 것입니다.
TL; DR
잘림 문제는 % PATH %를 에코 할 때 SYSTEM 및 USER 값의 연결을 표시하기 때문에 발생합니다. 따라서 setx에 대한 두 번째 인수에 추가하면 USER var 안에 SYSTEM 및 USER 값이 들어갑니다. 다시 울리면 일이 두 배가 될 것입니다.
또한 / M 옵션에는 관리자 권한이 필요하므로 "관리자 권한으로 실행"을 사용하여 터미널을 열어야합니다. 그렇지 않으면 setx가 "레지스트리 경로에 대한 액세스가 거부되었습니다"라는 메시지를 표시합니다.
마지막으로 유의할 사항 :이 방식으로 설정 한 직후 % PATH %를 에코 할 때 새 값이 표시되지 않으므로 닫고 cmd
다시 열어야합니다.
레지스트리에 저장된 실제 값을 확인하려면 이 질문을 확인 하십시오 .
이것은 완벽하게 작동합니다.
for /f "usebackq tokens=2,*" %A in (`reg query HKCU\Environment /v PATH`) do set my_user_path=%B
setx PATH "C:\Python27;C:\Python27\Scripts;%my_user_path%"
첫 번째 명령은 USER 환경 변수 'PATH'를 'my_user_path'변수로 가져옵니다. 두 번째 줄은 'C : \ Python27; C : \ Python27 \ Scripts;'앞에 추가합니다. USER 환경 변수 'PATH'에
에 속하지 않는 경우 pathedsetx
와 같은 대체 명령 줄 도구를 사용할 수 있습니다 . https://superuser.com/questions/297947/is-there-a-convenient-way-to-edit-path-in-windows-7/655712#655712에 더 포괄적 인 대체 PATH 편집기 목록이 있습니다.
레지스트리 값을 직접 편집 할 수도 있습니다 setx
. 이 답변 에서 더 .
%PATH%
1024 자에서 잘리는 것이 이상합니다 . 나는 setx
그 문제가 없다고 생각 했다. 유효하지 않은 경로 항목을 정리해야 할 수도 있습니다.
누군가 PowerShell에서 실행하려면 아래와 같이 작동합니다.
관리자 권한으로 Powershell 실행
그때
setx /M PATH "$Env:PATH;<path to add>"
확인하려면 다른 Powershell을 열고 아래와 같이 PATH를 확인하십시오.
$Env:PATH
관리자 권한이 없으면 다음 코드가 포함 된 bat 파일 만 저에게 효과적이었습니다.
for /F "tokens=2* delims= " %%f IN ('reg query HKCU\Environment /v PATH ^| findstr /i path') do set OLD_SYSTEM_PATH=%%g
setx PATH "%USERPROFILE%\wev-tools;%OLD_SYSTEM_PATH%"
코드는 https://stackoverflow.com/a/45566845/4717152 및 https://stackoverflow.com/a/10292113/4717152 답변의 조합입니다.
나는 같은 문제에 직면했고 이제 쉬운 해결책을 찾았습니다.
Pathman 사용.
pathman /as %M2%
Adds for example %M2% to the system path. Nothing more and nothing less. No more problems getting a mixture of user PATH and system PATH. No more hardly trying to get the correct values from registry...
Tried at Windows 10
Steps: 1. Open a command prompt with administrator's rights.
Steps: 2. Run the command: setx /M PATH "path\to;%PATH%"
[Note: Be sure to alter the command so that path\to reflects the folder path from your root.]
Example : setx /M PATH "C:\Program Files;%PATH%"
I was having such trouble managing my computer labs when the %PATH% environment variable approached 1024 characters that I wrote a Powershell script to fix it.
You can download the code here: https://gallery.technet.microsoft.com/scriptcenter/Edit-and-shorten-PATH-37ef3189
You can also use it as a simple way to safely add, remove and parse PATH entries. Enjoy.
'developer tip' 카테고리의 다른 글
신속한 배열의 고유 값 (0) | 2020.11.19 |
---|---|
핵심 데이터 및 iOS 7 : 영구 저장소의 다른 동작 (0) | 2020.11.18 |
Java 애플릿 매니페스트-모든 호출자 허용 코드베이스 허용 (0) | 2020.11.18 |
C 및 C ++에서 void 유형 반환 (0) | 2020.11.18 |
Linux 용 Xamarin으로 개발 (0) | 2020.11.18 |