您有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)
的第1個圓括號處結束。這可以通過轉義來解決:
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 - 好吧我添加了圓括號和引號。 :P – rojo