无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2554|回复: 43
打印 上一主题 下一主题

[求助] 大佬们好,这个批处理为何显示乱码?

[复制链接]
跳转到指定楼层
1#
发表于 2024-5-10 10:04:49 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 2010jorlaying 于 2024-5-10 12:42 编辑

最近电脑换了Win11 26100的版本,之前有个批处理文件不能正常使用了。之前一直都可以。是哪里错了。

  1. @echo off
  2. ::网卡名称注意替换 示例: "Ethernet0"
  3. for /f "tokens=2 delims=: " %%b in ('netsh interface show interface "Ethernet0" ^| find /i "管理状态"') do set "net=%%b"
  4. echo %net%
  5. pause
复制代码

点评

重新保存微ansi格式  发表于 2024-5-10 10:27
2#
发表于 2024-5-10 10:25:37 | 只看该作者
是不是编码问题?
回复

使用道具 举报

3#
发表于 2024-5-10 10:27:08 | 只看该作者
乱成什么样?
回复

使用道具 举报

4#
发表于 2024-5-10 10:38:21 | 只看该作者
本帖最后由 yxldh 于 2024-5-10 10:46 编辑

首先看文件编码 ANSI和utf8之间更换一下,还要看Ethernet0有没有改变,系统netsh命令里面的“管理状态”有没有改变

点评

WIN7,WIN10,WIN11 22H2都是正常显示,24H2才这样。  详情 回复 发表于 2024-5-10 12:36
回复

使用道具 举报

5#
发表于 2024-5-10 10:38:26 | 只看该作者
本帖最后由 zlq_hysy 于 2024-5-10 10:41 编辑

用记事本打开,另存时,选ANSI模式。

2024-05-10_104009.jpg (69.65 KB, 下载次数: 44)

2024-05-10_104009.jpg

点评

确定是ANSI,在WIN7,WIN10,WIN11 22H2上都是正常显示的。升级24H2后就不行了  详情 回复 发表于 2024-5-10 12:29
感谢分享  详情 回复 发表于 2024-5-10 11:00
好人  发表于 2024-5-10 10:47

评分

参与人数 1无忧币 +2 收起 理由
yyz2191958 + 2 赞一个!

查看全部评分

回复

使用道具 举报

6#
发表于 2024-5-10 11:00:59 | 只看该作者
zlq_hysy 发表于 2024-5-10 10:38
用记事本打开,另存时,选ANSI模式。

感谢分享
回复

使用道具 举报

7#
发表于 2024-5-10 11:34:49 | 只看该作者
进来学习
回复

使用道具 举报

8#
 楼主| 发表于 2024-5-10 12:29:42 | 只看该作者
zlq_hysy 发表于 2024-5-10 10:38
用记事本打开,另存时,选ANSI模式。

确定是ANSI,在WIN7,WIN10,WIN11 22H2上都是正常显示的。升级24H2后就不行了

点评

在批处理的最前面加一句:chcp 65001 看看有没有改善?  详情 回复 发表于 2024-5-10 12:42
回复

使用道具 举报

9#
发表于 2024-5-10 12:30:03 | 只看该作者
编码格式问题哈
回复

使用道具 举报

10#
 楼主| 发表于 2024-5-10 12:36:38 | 只看该作者
yxldh 发表于 2024-5-10 10:38
首先看文件编码 ANSI和utf8之间更换一下,还要看Ethernet0有没有改变,系统netsh命令里面的“管理状态”有 ...

WIN7,WIN10,WIN11 22H2都是正常显示,24H2才这样。
回复

使用道具 举报

11#
发表于 2024-5-10 12:42:29 | 只看该作者
来学习下
回复

使用道具 举报

12#
发表于 2024-5-10 12:42:54 | 只看该作者
2010jorlaying 发表于 2024-5-10 12:29
确定是ANSI,在WIN7,WIN10,WIN11 22H2上都是正常显示的。升级24H2后就不行了

在批处理的最前面加一句:chcp 65001        看看有没有改善?

点评

没用 试过  详情 回复 发表于 2024-5-10 13:38
回复

使用道具 举报

13#
发表于 2024-5-10 12:53:20 | 只看该作者
本帖最后由 holley2008 于 2024-5-10 12:59 编辑

有点像win11 24H2输出内容跟之前不一致,你对比一下内容看看差别,看是不是要修正一下:“tokens=2 delims=: ”或者对去除一下结果前后的空格或其它异常字符
  1. for /f "tokens=*" %%c in ("%net%") do set "net=%%c"
  2. echo %net%
复制代码


点评

试了不截取,整行输出也是乱码。还发现不能用findstr,只能用find。感觉是bug  详情 回复 发表于 2024-5-10 13:38
回复

使用道具 举报

14#
发表于 2024-5-10 13:33:49 来自手机 | 只看该作者
WIN10,WIN11 22H2  命令行执行 chcp
24H2 命令行执行chcp
比较两类当前活动代码页是否一样

点评

一样的 936  详情 回复 发表于 2024-5-10 13:35
回复

使用道具 举报

15#
 楼主| 发表于 2024-5-10 13:35:10 | 只看该作者
linshi456 发表于 2024-5-10 13:33
WIN10,WIN11 22H2  命令行执行 chcp
24H2 命令行执行chcp
比较两类当前活动代码页是否一样

一样的 936
回复

使用道具 举报

16#
 楼主| 发表于 2024-5-10 13:38:16 | 只看该作者
holley2008 发表于 2024-5-10 12:53
有点像win11 24H2输出内容跟之前不一致,你对比一下内容看看差别,看是不是要修正一下:“tokens=2 delims= ...

试了不截取,整行输出也是乱码。还发现不能用findstr,只能用find。感觉是bug
回复

使用道具 举报

17#
 楼主| 发表于 2024-5-10 13:38:57 | 只看该作者
zlq_hysy 发表于 2024-5-10 12:42
在批处理的最前面加一句:chcp 65001        看看有没有改善?

没用 试过
回复

使用道具 举报

18#
发表于 2024-5-10 13:44:40 | 只看该作者
系统是不是加装了中文语言包的英文版24H2 LTSC?如果是的话传统控制面板(Control.exe)里这里有没有改对?

点评

不是LTSC+语言包,是专业版,我这里跟你的图片是一模一样的  详情 回复 发表于 2024-5-10 13:54
回复

使用道具 举报

19#
发表于 2024-5-10 13:52:01 来自手机 | 只看该作者
笨办法
1、  24H2 里新建txt,直接输出 echo 中文,运行行看看
2 、24H2 里新建txt,照着老代码,手打一遍,不要复制,运行看看

点评

试过直接ECHO中文正常的  详情 回复 发表于 2024-5-10 14:03
回复

使用道具 举报

20#
发表于 2024-5-10 13:52:59 | 只看该作者
辛苦了
回复

使用道具 举报

21#
 楼主| 发表于 2024-5-10 13:54:34 | 只看该作者
hua_wuxin 发表于 2024-5-10 13:44
系统是不是加装了中文语言包的英文版24H2 LTSC?如果是的话传统控制面板(Control.exe)里这里有没有改对? ...

不是LTSC+语言包,是专业版,我这里跟你的图片是一模一样的
回复

使用道具 举报

22#
 楼主| 发表于 2024-5-10 14:03:24 | 只看该作者
linshi456 发表于 2024-5-10 13:52
笨办法
1、  24H2 里新建txt,直接输出 echo 中文,运行行看看
2 、24H2 里新建txt,照着老代码,手打一 ...

试过直接ECHO中文正常的
回复

使用道具 举报

23#
发表于 2024-5-10 14:37:12 | 只看该作者
本帖最后由 hua_wuxin 于 2024-5-10 15:10 编辑

更正:dir 新建文本文档.txt >2.txt,得到的2.txt也是显示为UTF-8编码的。所以不能说netsh输出有问题。

----------------------------------
确实有问题。在24H2下执行
netsh interface show interface "Ethernet0" >1.txt
,得到的1.txt是UTF-8编码的,跟其他普通命令例如dir、以及在之前的系统下得到的不一样。

点评

看来是BUG,看看正式版会不会修复。  发表于 2024-5-10 17:19
是不是目前所有的24H2都是合成的?系统加语言包的缘故?  详情 回复 发表于 2024-5-10 14:43
回复

使用道具 举报

24#
 楼主| 发表于 2024-5-10 14:43:58 | 只看该作者
hua_wuxin 发表于 2024-5-10 14:37
确实有问题。在24H2下执行
netsh interface show interface "Ethernet0" >1.txt
,得到的1.txt是UTF-8编 ...


是不是目前所有的24H2都是合成的?英文系统加中文语言包的缘故?

点评

另一种可能,今后微软软件统一成uft8编码,再进一步统一成unicode。unicode比utf8编码占用空间大。 你把原来批处理文件另存为uft8。放在24h2上执行看看  详情 回复 发表于 2024-5-10 14:54
回复

使用道具 举报

25#
发表于 2024-5-10 14:54:00 来自手机 | 只看该作者
2010jorlaying 发表于 2024-5-10 14:43
是不是目前所有的24H2都是合成的?英文系统加中文语言包的缘故?

另一种可能,今后微软软件统一成uft8编码,再进一步统一成unicode。unicode比utf8编码占用空间大。

你把原来批处理文件另存为uft8。放在24h2上执行看看

点评

用UFT8只能英文,输出也是英文,中文直接就闪退了  详情 回复 发表于 2024-5-10 15:03
回复

使用道具 举报

26#
 楼主| 发表于 2024-5-10 15:03:44 | 只看该作者
linshi456 发表于 2024-5-10 14:54
另一种可能,今后微软软件统一成uft8编码,再进一步统一成unicode。unicode比utf8编码占用空间大。

你 ...

用UFT8只能英文,输出也是英文,中文直接就闪退了
回复

使用道具 举报

27#
发表于 2024-5-10 15:16:05 来自手机 | 只看该作者
中文闪退,想不通。uft8支持中文的。难道系统bug,或是微软修改了命令

也许原批命令文件有点问题。想不通。

只能笨办法,24H2 里新建txt, 照着老代码,手打一遍,不要复制。分别保存ansi和utf8,运行看看。

还有没有其他大佬知道的

点评

其实用UFT8算能解决需求,就是有点不方便而已 算是解决问题了,如果后期能修复这个问题更好。  详情 回复 发表于 2024-5-10 15:21
回复

使用道具 举报

28#
 楼主| 发表于 2024-5-10 15:21:14 | 只看该作者
本帖最后由 2010jorlaying 于 2024-5-10 15:26 编辑
linshi456 发表于 2024-5-10 15:16
中文闪退,想不通。uft8支持中文的。难道系统bug,或是微软修改了命令

也许原批命令文件有点问题。想不 ...


其实用UFT8算能解决需求,就是有点不方便而已 算是解决问题了,如果后期能修复这个问题更好。
不然得准备两份bat,因为UFT8反过来在WIN7 10上又不能用。真是蛋疼
回复

使用道具 举报

29#
发表于 2024-5-10 15:37:22 来自手机 | 只看该作者
24h2系统txt和命令行估计默认utf8,如需要改注册表改成936,和老系统一致,但别人用24h2就不方便。

点评

这是个错误的决定,很多老BAT都会挂  详情 回复 发表于 2024-5-10 15:45
回复

使用道具 举报

30#
发表于 2024-5-10 15:43:03 | 只看该作者
本帖最后由 szwp 于 2024-5-10 15:44 编辑

判断系统版本,考虑转码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-12-3 19:41

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表