返回列表 发帖

[系统相关] [已解决]批处理获取网卡名称win11专业版显示乱码。有没有通用的显示方式?

本帖最后由 ygqiang 于 2025-1-24 15:21 编辑

win7x64和win10、win11家庭版显示正常。win11专业版显示乱码。有没有通用的显示方式?
bat 代码,固定使用ansi格式保存到文件
  1. @echo off & setlocal enabledelayedexpansion
  2. echo 代码开始
  3. chcp 936 > nul
  4. REM 获取网卡名称
  5. for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
  6.     set "str=%%a"
  7.     for /f "tokens=*" %%b in ("!str:~46!") do set interfaceName=%%b
  8. )
  9. echo 网卡名称: "%interfaceName%"
  10. pause
复制代码
更新,经过测试如下:
  1. @echo off & setlocal enabledelayedexpansion
  2. echo 代码开始
  3. echo 65001编码获取: > nul
  4. chcp 65001 >nul
  5. for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
  6.     set "str=%%a"
  7.     for /f "tokens=*" %%b in ("!str:~46!") do set interfaceName=%%b
  8. )
  9. rem 代码保存为ansi编码的bat文件--显示乱码
  10. rem 代码保存为编码utf-8编码的bat文件--正常
  11. echo,网卡名称: "%interfaceName%"
  12. pause
  13. chcp 936 > nul
  14. echo 936编码输出: > nul
  15. rem 代码保存为ansi编码的bat文件---正常
  16. rem 代码保存为编码utf-8编码的bat文件--显示乱码
  17. echo,网卡名称: "%interfaceName%"
  18. pause
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

回复 5# czjt1234

win11 24h2
ver版本是:10.0.26100.2033

TOP

回复 7# czjt1234


  在  哪里设置呢?

TOP

回复 10# czjt1234


    看了下,这个所有的win中文系统,默认都是这个选项啊。不需要设置修改

TOP

回复 12# yakeyun


    不能智能判断文件的保持格式吗?
如果bat文件保存格式是ansi,代码就以936编码显示。
是utf-8格式,就以65001编码显示。

TOP

本帖最后由 ygqiang 于 2025-1-22 13:45 编辑




回复  ygqiang


24H2判断有问题,具体可以参考我前面发的贴子,ANSI文件被识别成了UTF-8导致出现乱码。 ...
yakeyun 发表于 2025-1-22 10:31



Windows 11 专业版24h2 26100.2033,这个版本。

下面代码保存为ansi编码的bat文件,运行后。
  1. @echo off & setlocal enabledelayedexpansion
  2. chcp 936 > nul
  3. echo 936编码获取:
  4. for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
  5.     set "str=%%a"
  6.     for /f "tokens=*" %%b in ("!str:~46!") do set interfaceName=%%b
  7. )
  8. echo 网卡名称: "%interfaceName%"
  9. pause
  10. chcp 65001 >nul
  11. echo 65001编码获取:
  12. for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
  13.     set "str=%%a"
  14.     for /f "tokens=*" %%b in ("!str:~46!") do set interfaceName=%%b
  15. )
  16. echo 网卡名称: "%interfaceName%"
  17. pause
复制代码

TOP

回复 17# Five66

谢谢。

TOP

回复 19# czjt1234


    1楼的代码基本可以满足要求。
手头的bat文件一般都是保存编码ansi格式。

TOP

返回列表