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

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

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

@echo off
rem FUNC_GET_KEY <keyname> [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也能解决注释问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值