在這篇的最後有提到掛排程部署ASP.NET程式,當我在寫批次檔時,發現log中部分中文出現亂碼
批次檔程式碼:
set _date=%date:~0,4%%date:~5,2%%date:~8,2%
echo start at %date% %time% > deploy_log_%_date%.log
call .\myMVCLab.deploy.cmd /T >> deploy_log_%_date%.log
echo end at %date% %time% >> deploy_log_%_date%.log
log檔出現亂碼,但玄的是第一行的中文是正常的
把編碼切換成utf8試試,第一行中文變成亂碼,後面反而正常了
看來在執行Visual Studio產生的部署指令時,編碼會從big5改成UTF-8
造成log檔前面是big5編碼,後面是UTF-8編碼的神奇景象
去網路上爬文,找到切換編碼的指令:chcp
在一開始就把編碼切換成UTF-8試試
chcp 65001
set _date=%date:~0,4%%date:~5,2%%date:~8,2%
echo start at %date% %time% > deploy_log_%_date%.log
call .\myMVCLab.deploy.cmd /T >> deploy_log_%_date%.log
echo end at %date% %time% >> deploy_log_%_date%.log
出現錯誤啦!
原來在不同編碼下,date的日期格式不同
下面可以看到同樣指令在不同編碼下顯示的格式不同
所以在不同的編碼下切日期字串時要小心
修改後的的批次檔
chcp 65001
set _date=%date:~3,4%%date:~8,2%%date:~11,2%
echo start at %date% %time% > deploy_log_%_date%.log
call .\myMVCLab.deploy.cmd /T >> deploy_log_%_date%.log
echo end at %date% %time% >> deploy_log_%_date%.log
最後log檔總算正常了
參考文章: