bat批處理命令的特殊字符定義


今天在用node.js的時候,需要手動去寫一個bat文件來配置環境變量。在設置環境變量中的某一個密碼時,卻發現base64之后的encode和正確的不一致。

先是試驗了一下直接將密碼在js登錄文件中明文指定,發現可以登錄。然后再去打日志,發現是從讀取bat文件開始就出了問題。所以問題定位到bat文件上。

開始懷疑是字符編碼的問題,於是就試圖將bat文件編碼從UTF8改為ANSI,但是即使如此仍然無效。

在即將准備放棄的時候,突然想起來去檢查一下bat中特殊字符的問題。原來總是在中文字符和英文字符的轉換里面繞,卻忘記了特殊字符轉義的可能性。

果然,發現了這么一段話:

^
\\取消轉義字符,即將所有轉義字符的轉義作用關閉。比如要在屏幕顯示一些特殊的字符,比如> >> | ^等時,就可以在其前面加一個^符號來顯示這個^后面的字符了,^^就是顯示一個^,^|就是顯示一個|字符了;
在set/a中是按位異;
在findstr/r的[]中表示不匹配指定的字符集。

因為自己的密碼中大量出現了“^”,因此將所有的“^”改為“^^”,結果成功。

其實這沒有任何技術含量,完全是思維嚴密性的考慮。首先是不同語種的轉換,其次是文件本身定義的特殊字符。其實最后還有不同命令下的特殊字符,比如正則等等。這才應該是最標准的解決思路。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM