虚拟机新装的 win11 发现不能运行原先的 bat 文件,网上的方法全部试了,都还是不行。 后来发现,这个 bat 文件是 utf-8 格式的,随另存为 ANSI ,再试还是不行。 然后再用记事本打开查看,发现编码依然是 utf-8 ,随再次另存 ANSI 一次,再打开看,居然还是 utf-8 。
不甘心,在 win10 下试了下,发现居然都是,也就是现在记事本无论存储的时候,是否选在 ANSI ,都不起作用,再打开看都是 utf-8 格式的。
不知道各位是否能够复现?
ps: 另外,win11 不能运行 bat 还是没有解决,无论是 bat 头部添加 chcp 来指定代码,还是修改注册表,还是设置环境变量,总之,都是不生效,无奈,只能一行行复制到 cmd 中去执行。
1
hxy100 2023-06-24 11:20:38 +08:00 1
|
2
YGHMXFAL 2023-06-24 11:27:07 +08:00
1 楼+1,NPP 好评
其实使用啥编码来存储好像无所谓吧?都能执行 BAT 啊?只要你 CHCP 和存储编码匹配就行了~ 前提是,无论你存储使用啥编码,必须是\r\n 结尾~ |
3
ryansvn OP |
5
ryansvn OP @YGHMXFAL 已经添加了,一样闪退,说明根本就没有运行到那个位置。奇怪的是,我把命令一行行复制到 cmd 中,顺利执行
|
6
roycestevie6761 2023-06-24 11:36:49 +08:00
把中文删了
|
7
roycestevie6761 2023-06-24 11:38:33 +08:00
把整个命令文件贴上来看看
|
9
documentzhangx66 2023-06-24 11:44:50 +08:00
1.使用 UTF-8 是一件好事,这个习惯你要坚持,能让你避免很多乱码问题。
从数据库、编程代码、HTML js css 、字符数据文本文件等等,建议都统一为 UTF-8 。 2.Windows 的 CMD 默认不是 UTF-8 编码,你需要在打开 CMD 后,先输入: chcp 65001 把编码改为 UTF-8 。 |
10
documentzhangx66 2023-06-24 11:47:54 +08:00
Note*pad++ 只能识别 UTF-8 ,但其实 UTF-8 又分为有没有 BOM 两种。你需要使用更高级的编辑器,推荐 UltraEdit ,它更强大,更专业 。
|
11
documentzhangx66 2023-06-24 11:48:15 +08:00
麻蛋什么时候 Note*pad 都能成为违禁词,这也太扯蛋。
|
12
hxy100 2023-06-24 11:51:18 +08:00
@documentzhangx66 你仔细看 1 楼的截图,Notepad++是可以区分有无 BOM 头的,并且可以一键转换
|
13
vituralfuture 2023-06-24 12:36:32 +08:00
用 python ,读取文件,解码然后重新编码
|
14
NoOneNoBody 2023-06-24 13:08:12 +08:00
你这个 bat 不能运行,应该跟 ansi/utf8 无关,找其他原因吧
|
15
loginv2 2023-06-24 13:22:15 +08:00 1
@NoOneNoBody 有关的,我也遇到过,所以每次都要很小心
|
16
geelaw 2023-06-24 13:29:11 +08:00 1
第一,检查你是否把本机的默认编码设置为 UTF-8 了,如果这样的话 ANSI (实际上记事本的 ANSI 是本机默认编码)等于 UTF-8 。
第二,如果你的文本文件在 UTF-8 和 ANSI 下编码一样,那么记事本可能会优先识别为其中一个编码。 第三,你可能应该考虑把 bat 保存为 Unicode (UTF-16 LE),这样 Windows NT 系列都可以运行。 第四,检查其他问题,比如 bat 必须用 \r\n 作为行结尾,以及插入 pause 调试之。 |
17
xuc 2023-06-24 13:30:40 +08:00
检查一下区域设置,如果“Beta 版:使用 Unicode UTF-8 提供全球语言支持”被选中,那么记事本中 ANSI 就是指 UTF-8
https://vip2.loli.io/2023/06/24/ympkow5JEuB1ZW9.png |
18
gyf304 2023-06-24 13:55:25 +08:00 via Android
如果只有 ASCII 字符 ANSI 和 UTF-8 是等价的。保存了以后是没有任何区别的。
|
19
Hellert 2023-06-24 14:15:42 +08:00 via Android
bat 不能运行,是因为换行符,必须是 crlf ,unix 换行符是不行的
|
20
ooppoo 2023-06-24 16:32:46 +08:00 via Android
为什么我可以运行
|
21
Stoney 2023-06-24 18:34:08 +08:00 via iPhone
@documentzhangx66 Notepad
|
22
mxT52CRuqR6o5 2023-06-24 18:38:44 +08:00 via Android
不是不能保存为 ansi ,是不能指定编码格式打开一个文件,打开时是通过某种算法去猜编码格式
|
23
mxT52CRuqR6o5 2023-06-24 18:40:14 +08:00 via Android
打不开 bat 是其他问题
|
25
ryansvn OP @documentzhangx66 我也是奇怪,编辑了回复回复不了,没想到居然是 N***++的问题,这个居然也是敏感词,很无语
|
28
Hellert 2023-06-26 20:19:25 +08:00
把 echo off 都删除,在 cmd 运行一下不就知道啥原因了。
|