Windows 11脚本中文注释异常的修复方法:一、Bat脚本中文注释末尾加半角空格并保存为ANSI或UTF-8无BOM;二、AutoIt脚本主注释用英文,中文说明放入;#comments-start/end块;三、C/C++禁用//中文注释,改用/.../块注释;四、PowerShell脚本保存为UTF-8 with BOM,注释用#开头;五、记事本Markdown中禁用竖线前导空格,改用##注释。

如果您在编写 Windows 11 相关脚本或程序时发现中文注释显示异常、被截断、引发语法错误或导致执行失败,则很可能是由于系统对注释字符的编码解析不一致或工具链对 Unicode 注释支持不足所致。以下是修复此类问题的具体方法:
一、Bat 脚本中中文注释末尾补空格
Windows 命令提示符(cmd.exe)在第一层解析 bat 文件时,对 UTF-8 或 GBK 编码的中文注释存在解析边界识别缺陷,常将注释末尾字符误判为控制符;在中文注释行末添加一个半角空格可强制 cmd 正确截断注释区段,避免后续命令被吞并或乱码干扰。
1、打开目标 .bat 文件,使用记事本或 VS Code 等支持编码识别的编辑器。
2、定位所有以 rem 或 :: 开头的中文注释行。
3、确保每行中文注释末尾(在换行符前)存在且仅存在一个半角空格。
4、保存文件时选择 ANSI(GBK)编码 或 UTF-8 无 BOM 编码,不可选 UTF-8 with BOM。
二、AutoIt 脚本中统一使用英文注释+中文说明字段
WhyNotWin11 等基于 AutoIt 的 Win11 检测工具采用 .au3 文件格式,其编译器对非 ASCII 字符注释兼容性不稳定;虽支持 Unicode,但函数文档块(如 Func/EndFunc 间)若混用中文注释易导致 IDE 解析失败或生成帮助文档错位。推荐将语义说明剥离至标准注释标签内,保持主注释行纯英文。
1、将原中文注释行 ; 检查 TPM 是否启用 改写为 ; Check if TPM is enabled。
2、在对应函数上方添加标准文档块,使用 ;#comments-start 和 ;#comments-end 包裹多行中文说明。
3、确保 ;#comments-start 所在行前后各有一空行,且块内不包含任何可执行语句。
4、保存后用 SciTE4AutoIt 重新加载脚本,验证函数提示是否正确显示中文说明。
三、C/C++ 源码中禁用行内中文注释,改用块注释包裹
C 语言标准规定注释不能嵌套,且部分旧版 Windows SDK 工具链(如早期 MSVC 版本)在处理含中文的单行注释(//)时,可能因宽字符边界计算错误导致后续代码被意外注释化;改用 /* ... */ 块注释并显式闭合,可规避该风险。
1、查找所有形如 // 初始化注册表键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot 的行。
2、将其替换为:/* 初始化注册表键:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecureBoot */。
3、确认每个 /* 后紧跟 */,中间不跨函数定义或预处理指令(如 #ifdef)。
4、在注释块前后各插入一个空行,确保编译器不会将注释与上一行宏定义或下一行变量声明粘连。
四、PowerShell 脚本中启用 UTF-8 BOM 并使用 # 单行注释
PowerShell 7+ 默认以 UTF-8 无 BOM 解析脚本,但 Windows 内置 PowerShell 5.1 在未声明编码时会回退至系统 ANSI(如 GBK),造成中文注释显示为乱码或报错“无法识别的字符”。添加 UTF-8 BOM 可强制解析器启用 Unicode 模式。
1、用 VS Code 打开 .ps1 文件,在右下角状态栏点击编码标识(如“UTF-8”或“GBK”)。
2、选择 Save with Encoding → UTF-8 with BOM。
3、检查所有中文注释均以单个 # 开头,且 # 后紧接一个空格,再写中文内容。
4、避免在注释中使用反引号(`)或美元符号($)等 PowerShell 特殊字符,防止被误解析为转义或变量插值。
五、记事本 Markdown 表格注释中禁用竖线前导空格
Windows 11 自带记事本新增的 Markdown 表格功能对注释行敏感:当用户在表格行上方添加含竖线(|)的中文注释(如 | 这是说明文字 |)时,记事本会误判为表格行并尝试渲染,导致注释失效或格式错乱。
1、定位所有以竖线开头、含中文且位于表格上方的注释行。
2、将该行开头的 | 替换为两个空格加一个 #,例如改为 ## 这是说明文字。
3、若需保留视觉分隔效果,可在注释行前后各插入一条由三个以上连字符组成的分隔线:---。
4、保存后重启记事本,确认注释文本正常显示且不参与表格渲染。










