setx
다음과 같은 명령을 사용하여 환경 변수를 설정하려고 합니다.
setx 경로 “f : \ common tools \ git \ bin; f : \ common tools \ python \ app; f : \ common tools \ python \ app \ scripts; f : \ common tools \ ruby \ bin; f : \ masm32 \ 빈; F : \ Borland \ BCC55 \ Bin; % PATH % “
그러나 값이 1024자를 초과하면 다음 오류가 발생합니다.
경고 : 저장중인 데이터가 1024 자로 잘립니다.
성공 : 지정된 값이 저장되었습니다.
그러나 결국 일부 경로는 변수에 저장되지 않습니다. 오류가 제안하는대로 문자 제한으로 인해 추측됩니다.
답변
가장 좋은 방법은 레지스트리를 직접 편집하는 것입니다.
값으로 이동하여 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment
편집 한 Path
다음 재부팅하여 새 값을 활성화하십시오.
그러나 소스에 따라 최대 환경 변수 길이 (최대 2,048 또는 32,768 바이트) 까지 매우 긴 경로를 입력 할 수 있지만 너무 긴 경우 모든 소프트웨어가 올바르게 읽고 처리 할 수있는 것은 아닙니다.
답변
Windows Vista 이상을 사용 symbolic link
하는 경우 폴더를 만들 수 있습니다 . 예를 들면 다음과 같습니다.
mklink /d C:\pf "C:\Program Files"
mklink /d C:\pf86 "C:\Program Files (x86)"
c:\pf
프로그램 파일 폴더와 같이 링크를 만듭니다 . 이 트릭을 사용하여 내 경로에서 300자를 깎았습니다.
(setx와 관련이 없지만 1024 자 제한을 극복하는 사람들에게 유용합니다)
답변
다음과 유사한 PowerShell 스크립트를 사용할 수 있습니다.
$newPath = 'f:\common tools\git\bin;f:\common tools\python\app;f:\common tools\python\app\scripts;f:\common tools\ruby\bin;f:\masm32\bin;F:\Borland\BCC55\Bin'
$oldPath = [Environment]::GetEnvironmentVariable('path', 'machine');
[Environment]::SetEnvironmentVariable('path2', "$($newPath);$($oldPath)",'Machine');
Environment.SetEnvironmentVariable () API 호출이 방송됩니다 WM_SETTINGCHANGE
그래서 당신이 다시 부팅 할 필요가 없습니다.
답변
이 오픈 소스 SetEnv 명령 줄 도구는 PATH 및 기타 환경 변수를 제한없이 편집하는 데 좋습니다. 동적 버퍼를 사용하므로 1024와 같은 정적 제한이 없습니다.
http://www.codeproject.com/Articles/12153/SetEnv
변수에 추가 할 접두사로 %를 선택하는 것이 더 좋을 수 있습니다. 다른 배치 로컬 변수와 함께 사용하면 구문이 어려울 수 있습니다 …
답변
경로 조작을위한 setx보다 훨씬 뛰어난 도구는 pathed.exe 입니다. 불행히도 경로 편집에만 국한됩니다.
setx보다 우수한 사용자 경험 외에도 1024 자 제한이 없습니다. 직접 레지스트리 조작과 달리이 애플리케이션 은 브로드 캐스트 할 Environment.SetEnvironmentVariable () API 호출을 사용합니다 WM_SETTINGCHANGE
.
답변
내가 가장 좋아하는 방법은 8.3 이름을 사용하도록 PATH 변수의 폴더 이름을 변경하는 것입니다. 이 StackOverflow 답변 에는 전체 PATH 변수의 “최소화 된”버전을 생성하는 멋진 스크립트 (.bat 파일에서 실행)가 있으며, 변수 편집 대화 상자에 붙여 넣을 수 있습니다. 주의 사항은 SYSTEM 부분과 USER 부분을 분리해야한다는 것입니다. 스크립트가 진행되고 각 폴더의 축소 버전을 알아 내면 유효하지 않거나 존재하지 않는 경로를 삭제하고 경고합니다. 좋은 작은 정리 보너스.
답변
이 줄을 BAT에 넣을 수 있습니다.
setx path "%%path%%;c:\drive\fr;c:\drive\installs\7z"
더블을 참조하십시오 %%
.