경로 변수에 폴더가 너무 많습니다


15

이상한 문제가 발생했습니다. Visual Studio를 시작하거나 명령 프롬프트에서 간단한 명령을 실행할 수 없습니다. PATH 변수가 너무 길어 보입니다. 이제 살펴 보았으므로 많은 회사에서 설치 디렉토리를 PATH 변수에 추가했음을 알 수 있습니다.

이 회사들이 폴더를 경로에 추가 했는지 (아마도 프로그램을 더 간단하게 실행하기 위해?) 궁금하고 어떤 것이 필요하고 삭제할 수 있는지 궁금 합니다. 일부를 삭제하면 프로그램을 시작할 수 없습니까? ( 현재 경로에 존재하는 내용은 다음과 같습니다 )


1
나는 그것이 특히 길다고 느끼지 않습니다 PATH... 너무 길다고 생각하게 만드는 이유는 무엇입니까? VS가 일종의 오류를 겪고 있습니까? 또한 어떤 버전의 Windows를 실행하고 있습니까?
bosco

@bosco 명령 프롬프트가와 같은 간단한 명령을 찾을 수 없기 때문에 너무 길다고 생각합니다 ping. 또한 Visual Studio에서는 드문 일이 아닙니다 . 또한 명령 행을 사용한 PATH의 한계는 약 2000이라고 언급되어 있습니다 .
CC Inc

Visual Studio 2012는 시작시 "호출 대상에서 예외가 발생했습니다"오류를 발생시킵니다. 나는 ActivityLog.xml에서 보았을 때, 그것은 나에게 말했다The type initializer for 'Microsoft.VisualStudio.Platform.WindowManagement.WindowManagerService' threw an exception.
CC Inc의를

2
Stack Overflow question # 4405091 :)의 답변에 온갖 종류의 해킹과 솔루션
bosco

답변:


13

환경 변수 PATH의 과도한 경로 수를 줄이고 백업으로 전체 줄을 메모장에 저장하고 일부를 제거하고 테스트 할 수 있습니다.

바로 가기에 "대상"에 대한 전체 경로가 설정되어 있지 않은 경우 바로 가기에 "시작"이 올바르게 설정되어 있지 않거나 시작이 이상하게 수행되고 프로그램과 그 부품 및 부품이 항상 이상한 경우 녹이다. 대부분의 상황에서 페일 세이프입니다. 여전히 경로를 제거한 프로그램의 사용을 완전히 테스트하려고합니다.
CD 없이도 CMD 프롬프트에 명령을 입력하는 사람들에게 매우 유용합니다. CD가 없어도 컴퓨터는 해당 이름의 프로그램을 찾아 실행할 때까지 각 위치를 스캔합니다. 또는 같은 이름의 다른 명령 :-)

WAS (anchient) 경로는 255 (or260) charachters 미만으로 제한되어 오래 전에 1024로 변경 된 다음 서버 03 시대에 2048을 처리하기 위해 다시 패치되었으며 일부 시스템에서는 8096을 처리 할 수있었습니다. 오래전.

사람들이 겪고있는 오늘날의 실제 한계는 변수 및 경로의 확장을 포함하여 명령 문자열의 길이에 제한이있는 CMD 프롬프트에 있습니다.

http://msdn.microsoft.com/en-us/library/windows/desktop/ms682653(v=vs.85).aspx 여기 Microsoft는 다음과 같이 말합니다.

"사용자 정의 환경 변수의 최대 크기는 32,767 자입니다. 환경 블록의 크기에는 기술적 제한이 없습니다. 그러나 블록에 액세스하는 데 사용되는 메커니즘에 따라 실제 제한이 있습니다. 예를 들어 배치 파일 최대 명령 줄 길이보다 긴 변수를 설정할 수 없습니다. "

해당 위치에서 ^ 시스템 경로가 포함 된 레지스트리 위치를 가리 킵니다 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment . 나머지 위치를 읽어야합니다.

CMD 프롬프트 및 배치 제한은 한 번 확장 된 2048 개의 문자로, 새로운 시스템의 경우 4 배라고합니다 (사람들이 보지 못했기 때문에 인용 필요).

http://support.microsoft.com/kb/830473 ( 이전 시스템의 명령 프롬프트 및 배치 길이에 대해 설명합니다) 도 참조 하십시오 .

입력 내용이 올바른지 확인하기 위해 Wiki는 다음과 같이 말합니다.
http://en.wikipedia.org/wiki/Environment_variable

% PATH %이 변수에는 명령 인터프리터가 주어진 명령과 일치하는 실행 파일을 검색 할 디렉토리 목록이 세미콜론으로 구분되어 있습니다 ( 사이에 공백을 넣지 마십시오 ). 경로를 나타내는 환경 변수는 PATH 변수 내에 중첩 될 수 있지만 한 수준의 간접적으로 만 가능합니다. 이 서브 패스 환경 변수 자체에 경로를 나타내는 환경 변수가 포함되어 있으면 변수 대체에서 PATH가 제대로 확장되지 않습니다.

거기에 모든 추가 경로가 있으면 특정 항목이 약간 느려집니다. 그러면 포기하기 전에 모든 장소를 찾아야하기 때문입니다. 배치 또는 CMD 프롬프트를 사용하는 경우에도 파일 항목을 호출 할 때마다 전체 경로를 사용하는 것이 항상 더 빠릅니다.

오래된 DOS와 같은 8.3 규칙을 사용하면 크기를 줄일 수 있습니다. 이 배치 https : //.com/a/20362922 원래 문자열을 백업해야합니다. 해당 질문에 가능한 다른 해결책도 참조하십시오.

여기 내 모습이 나빠졌습니다.
% SystemRoot % \ system32; % SystemRoot %; % SystemRoot % \ System32 \ Wbem; % SYSTEMROOT % \ System32 \ WindowsPowerShell \ v1.0 \; C : \ Program Files (x86) \ QuickTime \ QTSystem \

나는 심장 박동으로 퀵타임을 버리고 AMD 프로그램은 이전에 확장 된 경로를 설정했으며, 어도비에는 표준 GUI 단축키 / 아이콘 방법에 대해서는 아무런 문제가 없었습니다. 많은 것을 제거하고 모든 기능을 테스트 할 수 있습니다. CMD 프롬프트에 입력하여 내용을 불러 오면 해당 경로를 제거해도 작동하지 않습니다.


경로를 제거해도 응용 프로그램이 실패 하지 않는다고 말하는 것 입니까?
CC Inc

Windows 7 64 비트
CC Inc

이미 제거 된 것이 있습니까? Qt, AMd 및 Nividia를 꺼내고 (당신이 그것을 백업 한 후) mabey를 가져 와서 충분히 짧은 지 확인하십시오. 내 글을 올렸는데 약 140 자입니다.
Psycogeek

좋아, 내가 볼게 ..
CC Inc

3
제한은 2048 자로 나타납니다 . 그 후 환경 변수 GUI에 더 이상 문자를 입력 할 수 없습니다.
Mateen Ulhaq

9

내 경로에 여러 소프트웨어 개발 관련 환경 변수가 있으며 모두 중요합니다.

위의 솔루션은 저에게 효과적이지 않으므로 디렉토리 접합으로 갔습니다 .

  • 내 경로에서 가장 긴 경로를 선택하십시오 (좋아요 C:\Program Files (x86)\Microsoft SQL Server\100\Tools\Binn\VSShell\Common7\IDE\)
  • 접합을 저장할 작은 폴더를 만듭니다 : c : \ d \
  • 긴 경로에 대한 짧은 접점을 작성하십시오.

mklink / jc : \ d \ sql "C : \ Program Files (x86) \ Microsoft SQL Server \ 100 \ 도구 \ Binn \ VSShell \ Common7 \ IDE \"

15 개의 경로에서 그렇게하면 내 PATH가 2045에서 1285 자로 줄어 듭니다.

정션이 경로에 남아 있으므로 수동으로 정리해야하므로 머신에서 마지막으로 제품을 설치 제거 할 때 문제가 될 수 있습니다.


1
상당히 일반적인 개발 환경, 최신 VS + 여러 이전 버전 및 SQL Server가 설치되어 있습니다. 이것이 지금까지 가장 좋은 해결책이었습니다. 던지기 경로에 대한 대답은 어리 석습니다.
Mesh

C : \ Program Files (x86) \ Microsoft SQL Server \ 100 \ Tools \ Binn \ VSShell \ Common7 \ IDE \에 대한 레지스트리 경로 항목을 무엇으로 변경 했습니까? c : \ d \ sql?
OutOFTouch

PATH 환경 변수를 의미하면 예입니다. SQL Server의 디렉토리에 대한 다른 참조는 망설이지 않았습니다.
Juliano

다음은 하드 링크에 대한 유용한 자습서입니다. howtogeek.com/howto/16226/…
ofer.sheffer

1

경로에서 허용되는 최대 길이가 훨씬 길지만이 항목 (및 Microsoft 참조)에 대한 스택 오버플로 정식 답변에서 최대 확장 경로 값 2048 바이트가 작동하고 그 이상이면 문제가 발생할 수 있음을 알았습니다. "확장 됨"이란 % 구분 기호로 표시된 변수가 확장 된 값이되도록 값을 삽입하며 총 확장 길이는 2048 바이트를 초과해서는 안됨을 의미합니다. Windows 7에서 발생하는 문제 유형은 다음과 같습니다.

  • 값의 끝에서 경로를 인식하지 못합니다
  • PATH 값을 수정하는 소프트웨어 또는 패치를 설치하면 런타임 값이 NULL이되어 모든 시작 메뉴, 바탕 화면 및 작업 표시 줄 아이콘과 같이 Windows를 실행하는 모든 종류의 문제와 이미지와 같은 간단한 명령 프롬프트 명령이 발생합니다. ping "또는"ipconfig "show 명령이 인식되지 않는 오류
  • PATH 값에 의존하는 응용 프로그램이 실패 함

개인적으로, 나는 Windows 이외의 다른 운영 체제를 권장하지만, 당신이 그것에 붙어있는 경우 경로 항목을 제거하고 아무것도 깨지지 않는지 테스트하고 경로 값을 2048 바이트로 낮추는 데 시간을 소비해야합니다.


이것이 저자의 질문에 적어도 어떻게 대답하는지는 분명하지 않으며, 기존 답변이 그 진술을 뒷받침하는 실제 증거를 제공합니다.
Ramhound
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.