不要执行用utf-8編碼,并且內容包含非拉丁字符的批处理脚本

今天写批处理脚本的时候,执行的时候提示乱码,并说不是内部或者外部命令,也不是可执行程序或者批处理。
我一看就认为是編碼问题,因为这个脚本确实是crlf换行,編碼是utf-8(without BOM)。不过我奇怪的是,那几行中文用rem命令注释了

比如这个test.bat脚本,windows换行,utf-8編碼

@echo off
rem FUNC_GET_KEY  [service_name] [ip_name]
rem     service_name 可选, ip_name 可选
rem     如果不指定service_name, 则默认获取当前操作所在实例的配置,
rem     如果实例的配置找不到,从服务获取,如果也没有则获取失败
rem     如果不指定ip_name, 则默认获取当前机器的配置
rem     从api获取对应服务名的keyvalue, 并设置环境变量 keyname=value,
rem     通过 %keyname% 获取值
D:\soft\>Script\test.bat
'鏋滃疄渚嬬殑閰嶇疆鎵句笉鍒帮紝浠庢湇鍔¤幏鍙栵紝濡傛灉涔熸病鏈夊垯鑾峰彇澶辫触' 不是内部或外部命令,也不是可运行的程序或批处理文件。

因为文件一定要utf-8編碼,
完全不知道哪里问题。后来把文件转成GBK就没问题了,那就应该是因为操作系统解释这个文件的时候,没有正确解码utf-8,导致几个中文字符的二进制里面刚好有换行吧。然后就无法执行。
发现用文件添加命令chcp 1252强制终端识别成latin-1也能解决注释问题。

你可能感兴趣的:(批处理,batch-file)