批处理文件常见问题
2024/4/8大约 1 分钟
批处理文件常见问题
编码问题
Windows的cmd.exe默认编码格式为ANSI,当bat文件编码与当前cmd环境不一致时,双击执行时就会乱码。简体中文版的Windows, 其ANSI对应微软Codepage为cp936,大致等同于GBK编码。
如果你的bat文件是UTF-8编码的, 或者是是其他Codepage下创建的, 比如:
- Windows日语版下创建的bat文件, 保存为ANSI编码时对应cp932, 即Shift-JIS编码。
- Windows繁体中文版下创建的bat文件, 保存为ANSI编码时对应cp950, 即Big5编码
解决方法
法一:将bat文件转换成当前操作系统的编码,比如将UTF-8格式bat文件, 右键编辑, 然后选文件另存, 指定为ANSI编码, 保存。然后再执行就正常了
法二:假如bat文件是日文格式的或其他格式, 首先需要将bat文件的编码转换到UTF-8格式。接下来需要将cmd也调整到utf-8
# 调整cmd编码格式为utf-8
# 将以下内容保存为cmd_UTF-8.reg然后运行
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=dword:0000fde9
# 将cmd编码格式恢复默认
# 将以下内容保存为cmd_ANSI.reg然后运行即可
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Console\%SystemRoot%_system32_cmd.exe]
"CodePage"=-