中文路徑會出現亂碼無法使用,原因是windows的預設的中文編碼為Big5 (ANSI),而記事本儲存時編碼通常為UTF-8,改變編碼方式即可解決
宣告路徑字串變數有好幾種寫法,每一種在解析時效果都有些微不同,也很難找到到底有什麼差別,總之我測到以下的寫法最通用,也可解決路徑空格的問題
set "projectPath=D:\A18002\FW_ASIC\alpha_sCode_v0102"
用if 跟 exist 便可判斷路徑是否可用,細節是取用變數時要用%%夾起來,然後整個路徑也要再用""夾起來
set "projectPath=D:\A18002\FW_ASIC\alpha_sCode_v0102"
if NOT exist "%projectPath%\sCode.uvproj" (
echo "keil project路徑有誤"
echo "%projectPath%\sCode.uvproj"
pause
goto EXIT
)
可以配合 defined來判斷變數是否存在,讓程式更有彈性,例如下面路徑我可以選擇性註解掉,當註解掉時就不會因為檢查路徑的程式而卡住
@REM set "MPPath=D:\fail sample_EN\RAmos\!818release\IS818MPTool_EN_230905A_18"
if defined MPPath (
if NOT exist "%MPPath%" (
echo "MPTool 資料夾路徑有誤"
echo "%MPPath%"
pause
goto EXIT
)
)
@REM set "MPPath=D:\fail sample_EN\RAmos\!818release\IS818MPTool_EN_230905A_18"
上面的路徑其實是不合法的,因為有驚嘆號!,網路上查到bat處理特殊符號的方式是在前面加上 ^ 符號,但實際測試沒有效果,而且要手動加也不是好解法,待之後真的很需要這個功能再來研究怎麼處理吧。