无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 2559|回复: 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
41#
发表于 2024-5-11 12:09:56 | 只看该作者
2010jorlaying 发表于 2024-5-11 11:26
只能是这样了。看看RTM后怎么样。

以乱治乱也是可以的,将netsh的结果粘贴上来。
回复

使用道具 举报

40#
 楼主| 发表于 2024-5-11 11:28:58 | 只看该作者
cyh92 发表于 2024-5-11 10:40
估计是编码问题吧

对,24H2打印中文变UTF-8了,其他命令无法识别。
回复

使用道具 举报

39#
 楼主| 发表于 2024-5-11 11:26:40 | 只看该作者
szwp 发表于 2024-5-11 10:46
先不用for等不乱后再用

只能是这样了。看看RTM后怎么样。

点评

以乱治乱也是可以的,将netsh的结果粘贴上来。  详情 回复 发表于 2024-5-11 12:09
回复

使用道具 举报

38#
发表于 2024-5-11 10:46:08 来自手机 | 只看该作者
先不用for等不乱后再用

点评

只能是这样了。看看RTM后怎么样。  详情 回复 发表于 2024-5-11 11:26
回复

使用道具 举报

37#
发表于 2024-5-11 10:40:09 | 只看该作者
估计是编码问题吧

点评

对,24H2打印中文变UTF-8了,其他命令无法识别。  详情 回复 发表于 2024-5-11 11:28
回复

使用道具 举报

36#
 楼主| 发表于 2024-5-11 10:23:54 | 只看该作者
ZYYDS-FT798 发表于 2024-5-10 22:17
我试过了这是个BUG  只有 h24 会这样,其他版本不会的

多谢,希望是BUG,如果真是改动那就太麻烦了。
回复

使用道具 举报

35#
发表于 2024-5-10 22:43:00 | 只看该作者

批处理开头,加上:

setlocal enabledelayedexpansion  
chcp 65001
CLS
回复

使用道具 举报

34#
发表于 2024-5-10 22:17:36 | 只看该作者
我试过了这是个BUG  只有 h24 会这样,其他版本不会的

点评

多谢,希望是BUG,如果真是改动那就太麻烦了。  详情 回复 发表于 2024-5-11 10:23
回复

使用道具 举报

33#
发表于 2024-5-10 16:22:53 | 只看该作者
WIN10常遇到的问题,另存为原文件名覆盖,编码选择ANSI就可以了
回复

使用道具 举报

32#
发表于 2024-5-10 15:50:41 | 只看该作者
应该是 netsh interface show interface 输出的字符编码为UTF8,而for命令并不支持UTF8 中文编码。
回复

使用道具 举报

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

这是个错误的决定,很多老BAT都会挂
回复

使用道具 举报

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

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

使用道具 举报

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

点评

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

使用道具 举报

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上又不能用。真是蛋疼
回复

使用道具 举报

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

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

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

还有没有其他大佬知道的

点评

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

使用道具 举报

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

你 ...

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

使用道具 举报

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
回复

使用道具 举报

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
回复

使用道具 举报

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
回复

使用道具 举报

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

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

使用道具 举报

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

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

使用道具 举报

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

使用道具 举报

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

点评

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

使用道具 举报

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

点评

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

使用道具 举报

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

没用 试过
回复

使用道具 举报

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

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

使用道具 举报

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

一样的 936
回复

使用道具 举报

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

点评

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

使用道具 举报

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
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-12-4 12:08

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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