最近要给一个项目发布产品安装包,使用到BAT来自动配置一些环境变量。
由于之前很少用BAT,在编写过程中,还是遇到不少坑。
在这里,把这些坑给摆出来,以免有些小白掉进去
系统关键字(感叹号!)冲突
由于是自动化部署,因此需要使用到循环,这里就不可避免的用到了延迟变量(setlocal enabledelayedexpansion)
有关延迟变量的知识,大家可以通过这篇文章涨一涨
http://www.jb51.net/article/29323.htm
延迟变量带来的一个问题就是,文本中的感叹号(!,xml文件中的注释)被替换掉了。
解决办法就是,在给文件中字符串进行赋值前,使用endlocal禁用掉延迟变量。
bat读取文本时,空行的判断
空行有两种类型,一种是不包括空格的换行,一种是包括空格的换行。
如果不判断空行,在使用echo时,会输出 echo处于关闭状态。这时如果需要对读取到的字符串进行替换