批处理文件运行一闪而过且乱码,主因是cmd用gbk代码页(936)解析utf-8编码中文;需先确认脚本编码,utf-8时加chcp 65001(无注释),ansi(gbk)则不可加;推荐写法为@echo off后紧接chcp 65001 >nul 2>&1与echo.强制刷新缓冲区;验证须通过命令行而非双击运行。

电脑运行批处理文件时一闪而过还满屏乱码,根本来不及看清错误提示,更别说定位问题——这通常不是脚本逻辑出错,而是CMD窗口用GBK代码页(936)强行解读UTF-8编码的中文内容,导致字符解析崩溃、命令误判,最终直接闪退。
确认当前脚本编码格式
用记事本打开你的.bat文件 → 点击【文件】→【另存为】→ 观察右下角或弹窗中的“编码”选项。若显示“UTF-8”或“UTF-8 无BOM”,就必须加chcp 65001;若显示“ANSI”,则大概率是GBK,此时加chcp 65001反而可能引发新乱码,【切勿盲目添加】。
这一步不能跳过。很多用户直接加chcp却仍乱码,根源就在这里——文件编码和chcp设置不匹配,等于让翻译官用日语词典读法语原文。
正确插入chcp 65001到脚本开头
方法一:最简安全写法
在脚本第一行(@echo off上方或紧接其后)插入:
@echo off
chcp 65001 >nul 2>&1
注意:这一行【绝对不能有任何注释】,哪怕一个空格、一个%符号都会让CMD编码缓冲区失效,中文照旧乱码甚至报错“‘浣’不是内部或外部命令”。
方法二:兼容性更强的写法(推荐用于含多行中文输出的脚本)
@echo off
chcp 65001 >nul 2>&1
echo.
第三行echo.看似多余,实则关键:它强制CMD刷新输出缓冲区,避免连续中文行因编码未完全生效而错位叠加,大幅降低闪退概率。
验证是否生效
第一步:保存修改后的.bat文件,确保编码仍为UTF-8(记事本另存为时再次确认)。
第二步:不要双击运行——双击会启动即关闭,看不到任何输出。
第三步:按住Shift键右键当前文件夹空白处 → 选择“在此处打开Powershell窗口”或“在此处打开命令窗口” → 输入脚本名(如backup.bat)并回车。
第四步:观察窗口顶部标题栏是否显示“cmd - backup.bat”,且中文提示清晰可读。若仍乱码,立即检查前两步——90%的问题出在编码保存环节或chcp行带注释。











