bat批处理命令的特殊字符定义

今天在用node.js的时候,需要手动去写一个bat文件来配置环境变量。在设置环境变量中的某一个密码时,却发现base64之后的encode和正确的不一致。

先是试验了一下直接将密码在js登录文件中明文指定,发现可以登录。然后再去打日志,发现是从读取bat文件开始就出了问题。所以问题定位到bat文件上。

开始怀疑是字符编码的问题,于是就试图将bat文件编码从UTF8改为ANSI,但是即使如此仍然无效。

在即将准备放弃的时候,突然想起来去检查一下bat中特殊字符的问题。原来总是在中文字符和英文字符的转换里面绕,却忘记了特殊字符转义的可能性。

果然,发现了这么一段话:

^
\\取消转义字符,即将所有转义字符的转义作用关闭。比如要在屏幕显示一些特殊的字符,比如> >> | ^等时,就可以在其前面加一个^符号来显示这个^后面的字符了,^^就是显示一个^,^|就是显示一个|字符了;
在set/a中是按位异;
在findstr/r的[]中表示不匹配指定的字符集。

因为自己的密码中大量出现了“^”,因此将所有的“^”改为“^^”,结果成功。

其实这没有任何技术含量,完全是思维严密性的考虑。首先是不同语种的转换,其次是文件本身定义的特殊字符。其实最后还有不同命令下的特殊字符,比如正则等等。这才应该是最标准的解决思路。

posted @ 2017-06-05 18:43  garygeng  阅读(3881)  评论(0编辑  收藏  举报