당신은 2 가지 문제가 있습니다.
1) %ifpath%
은 공백을 포함해야하므로 인용해야합니다. 따옴표가 없으면 IF EXIST는 이름이 첫 번째 공백을 멈춘 것으로 간주합니다.
2) 일괄 처리 구문 분석기는 SET 명령의 값이 끝나는 시점을 알 수 없습니다. ELSE 절을 값의 일부로 취급합니다. 그것은 괄호로 쉽게 풀 수 있습니다.
set "ifpath=C:\Program Files\App"
if exist "%ifpath%" (SET ppath=C:\Program Files) ELSE SET ppath=C:\Program Files(x86)
echo "%ppath%\App"
우리가 당신이 테스트를 반전하고 (x86)
버전을 시작 가정하자. 파서가 (x86)
의 첫 번째 괄호에서 끝나는 값이라고 생각하기 때문에 괄호를 추가하는 것만으로는 문제를 해결할 수 없습니다. 즉,이 이스케이프으로 해결할 수 있습니다
set "ifpath=C:\Program Files(x86)\App"
if exist "%ifpath%" (SET ppath=C:\Program Files(x86^)) ELSE SET ppath=C:\Program Files
echo "%ppath%\App"
아니면 더 좋은 방법은 따옴표를 사용하는 것입니다
set "ifpath=C:\Program Files(x86)\App"
if exist "%ifpath%" (SET "ppath=C:\Program Files(x86)") ELSE SET "ppath=C:\Program Files"
echo "%ppath%\App"
감사합니다! 그게 효과가있어! 그것은 내가 필요한 전부이다! :) – netrox
@netrox - 그리 빠릅니다. 아직도 문제가 있습니다. IF 문은 항상 FALSE를 반환합니다. [내 대답] (http://stackoverflow.com/a/14511321/1012053)을 참조하십시오. – dbenham
@dbenham - OK 괄호와 따옴표를 추가했습니다. : P – rojo