← 笔记

.bat 文件里只写 ASCII

约 1 分钟#Windows#调试

往启动脚本里加了几行中文注释,双击就崩,报错是一串被切碎的命令名。

报错是 'p_code_sync' is not recognized 这种东西:命令名被从中间截断了。cmd 在 chcp 65001 之后按字节偏移解析批处理,UTF-8 中文是多字节,后面的命令就被切成碎片执行。

中途我一度以为是换行符的问题,因为导出来的文件是 CRLF。后来发现是 PowerShell 的 Out-File 把 LF 转成了 CRLF,仓库里的 .bat 一直是 LF。也就是说,我拿来检查文件的工具自己改了文件。

最后的改法是:批处理恢复成纯 ASCII,只留一行调用 Python,逻辑全部挪进 Python 脚本,文件顶部写一行注释说明这个文件只能是 ASCII。

作者Shihao Qi