한 CMD
세션 동안 새 경로를 쉽게 설정할 수 있습니다.SET PATH=%PATH%;"insert custom path here"
배치 파일에서 그렇게 하면 사용자 정의 경로가 이미 포함되어 있는지 여부는 고려되지 않습니다. 중복을 방지하려면 어떻게 해야 합니까(예: PATH "문자열"에 이미 포함되어 있는지 확인).
비고:
- 관련된:Windows 7에서 사용자 정의 환경 변수를 시스템 변수 PATH에 어떻게 추가합니까?
- 관련된:명령줄을 통해 시스템의 PATH 변수에 항목을 영구적으로 추가하려면 어떻게 해야 합니까?
- UNIX에 대한 동일한 질문:$PATH에 디렉터리가 아직 없으면 추가하세요.
- 일부 "CMD" 문자열 작업은 다음과 같이 설명되었습니다.http://ss64.com/nt/syntax-replace.html
답변1
MaddHackers 답변과 유사하며 더 컴팩트합니다.
echo %path%|find /i "%np%">nul || set path=%path%;%np%
%np%
새로운 경로입니다. 물론 리터럴을 대신 사용할 수도 있습니다. 기능: echo %path%|find /i "%np%">nul
기존 경로에서 문자열을 검색하고 출력을 삭제합니다. ||
실패 시 실행을 의미하므로 다음을 의미합니다.
추가할 문자열을 경로로 검색하고, 없으면 추가합니다.
편집: 일반적으로 공백이 포함된 경우에도 경로를 인용할 필요는 없지만당신이 그것을 인용하고 싶다면, 이 버전은 큰따옴표로 묶인 경로에서 작동합니다.
echo %path%|find /i "%np:"=%">nul || set path=%path%;%np%
편집: KubaOber가 댓글에서 언급한 대로 일부 시퀀스를 잘못 해석할 수 있도록 findstr /i /c:
변경 되었습니다.find /i
findstr
답변2
더럽다는 건 알지만 이렇게 하면 작동합니다.
SET PATH=$(echo $PATH | awk -F"%checkstr%" '{ print ($(NF-1) ~ 0) ? $PATH:%newpath% : $PATH; }')
%checkstr%
PATH에서 확인할 문자열은 어디에 있고 %newpath%
현재 PATH에 추가할 새 PATH는 무엇입니까?
도움이 되기를 바라며 더 쉬운 방법이 있을 것이라고 확신합니다. 하지만 지금은 그 방법으로 해결됩니다.
편집하다
따라서 Windows에 UNIX 도구를 추가하지 않으려면 다음 일괄 구문을 사용해 볼 수 있습니다.
echo %PATH% | find /C /I "<string to find>" > out.txt
set /p dne= < out.txt
if 0 EQU %dne% (set PATH=%PATH%;"<custom path>")
del out.txt
아, 그다지 좋지는 않습니다. 파이프로 연결된 find 명령이 if 문에서 하위 명령으로 작동하도록 할 수 있다면 한 줄로 수행할 수 있습니다...
답변3
"wmz"의 답변을 기반으로 한 스크립트:
@ECHO off
ECHO java_home=%JAVA_HOME%
SET javapath=%JAVA_HOME%\bin
ECHO %path%|findstr /i /c:"%javapath:"=%">nul || set path=%path%;%javapath%
ECHO Path=%path%
PAUSE
답변4
2021년에 업데이트된 답변:
set
더 이상 작동하지 않으므로 다음을 사용해야 합니다 setx
(약간 다른 구문).
SET mypath=C:\dev\vendor\sass\1.32.4
ECHO %Path%|findstr /i /c:"%mypath:"=%">nul || setx Path "%Path%";%mypath%