最近公司在做tfs迁移,后面要用新的ip地址去访问tfs 拉取代码 ,所以原来发布脚本中.bat类型的脚本中的的ip地址需要更换
简单说下我们发布脚本层级目录 :每个服务站点下都会有一个发布脚本 .bat文件或.sh文件
所有站点保存在本地某个文件夹下 目录结构如图:
先发代码 后面在详说下过程中遇到的坑:
运行后结果
踩坑回顾:
刚开始我都是以utf-8编码模式去读写,发现有的脚本会处理成功 然后就会报错 报错如下:
'utf8' codec can't decod
大概意思就是 utf-8编码无法解析读取的文件内容
查阅了下资料 说是windows编码方式是gbk ,ok 我把utf-8的编码方式改成了gbk 觉得这次应该差不多了 走起运行 果不其然 正常的处理了几个文件后 又报错了:
'gbk' codec can't decod
@#¥%@#%@#%#@%
还是编码方式的问题
好吧 我恶补了下文件的编码类型及编码类型的获取 知道了 chardet 模块 写了个方法识别文件的编码方式
def recognition(path):
file = open(path, "rb")
buf = file.read()
result = chardet.detect(buf)
return result['encoding']
随机找了几个脚本文件去跑 发现有的.bat文件的编码类型是utf-8 有的是GB2312 还有的是ISO-8859-9 也是够奇葩的
找到问题所在了 当时想了两个解决方案
1 统一文件编码方式 然后再去处理
2 判断文件的编码方式 什么编码方式 就用该编码方式去处理
当时觉得方案1 比较极端 所以采用了方案2
可以发现 方案2我对编码方式为ISO-8859-9 的 直接pass掉了 。虽然也是.bat的文件 但是这种编码方式的文件并不是我们的发布脚本
ok 没了