2011-08-17 3 views
6

몇개의 주소를 추가하여 PATH 변수를 수정하는 배치 파일이 있습니다. 사용자가 로그 오프하면 PATH이 원래 값으로 재설정됩니다 (배치 파일을 실행하기 전). 이 동작은 정상입니다.Windows CMD - 배치 파일에서 경로 변수 재설정?

그러나 배치 파일을 두 번 이상 실행하면 동일한 값이 다시 추가되고 각 배치가 실행 된 후에 길어지는 지나치게 긴 중복 PATH 변수로 끝납니다.

사용자가 로그온 할 때 변수 값을 미리 설정하기 전에 변수를 재설정하고 싶습니다. 나는이 솔루션이 임시 파일에 원래의 값을 쓰고 그것을 다시 읽는 것이지만, 더 좋은 방법은 그것을 할 것이라고 생각한다.

답변

6

오히려 임시 파일을 원래의 값을 작성하는 것보다, 다른 환경 변수에 쓸 수 , 이렇게 :

echo %PATH% | findstr /c:"c:\extra\stuff;" > nul || set PATH=c:\extra\stuff;%PATH% 
+0

이것은 실제로 제가 끝내었던 것입니다. 감사! – Ben

+0

"여분 물건"을 망쳐 놓으면 추가 혜택이 있습니다. 해결할 수 있습니다. 내가 처음했을 때 후행하는 "\"을 잊어 버렸습니다. 간단하지만 효과적인 팁 주셔서 감사합니다! – granadaCoder

6

@SETLOCAL을 배치 파일의 맨 위에 넣으십시오.

환경에 대한 변경 사항은 배치 파일이 종료 될 때 복원됩니다.

자세한 내용은 setlocal /?을 실행하십시오.

if not defined ORIGINAL-PATH set ORIGINAL-PATH=%PATH% 
set PATH=c:\extra\stuff;%ORIGINAL-PATH% 

하지만 명시 적으로 원하는 문자열이 이미 여부를 PATH에 있는지 여부를 확인하기 위해 더 나은 것 :

1

나는 비슷한 문제에 대해 오랫동안 해결책을 찾고있었습니다. 마지막으로 내가에서 다운로드 한 pathmgr.cmd 사용하여 종료 :

: 사용자 경로를 청소하는 데 사용

http://gallery.technet.microsoft.com/Batch-Script-To-Manage-7d0ef21e

를, 아래의 옵션은 명령 줄에서 사용할 수 있습니다 pathmgr.cmd/clean/user/p/y

다른 많은 유용한 옵션도 사용할 수 있습니다.

관련 문제