[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

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

本帖最后由 ygqiang 于 2025-1-17 15:33 编辑

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
复制代码

代码文件的编码保存为ansi或gbk或gb2312
区域设置那里取消勾选 "UTF-8提供全球语言支持"

TOP

回复 1# ygqiang
win11专业版 没装,也没虚拟机!
但查错思路,一般都有这几种,
1,在出错的地方暂停PAUSE,
2,查看当前变量(SET)
3,涉及到乱码则查看当前脚本的编码(CHCP)
4,查看当前脚本的的编码,,,
5,千万不要觉得电脑是不讲理的,如果你有这样的概念,先怀疑自己的认知是不是不足以匹配当前的难度!
6,BUG是永远领先于补丁存在的,只区分是否被发现或则版本是否决定更新而已!
7,人的寿命是有限的,而宇宙的问题是永恒存在的。别在一个万分之的问题上耗费超过十分之的精力(说白了,就是:别钻牛角尖!),除非那问题能给你带来30%以上的收益,30%以上收益,杀人的买卖都有人做,例如:缅北!

,,授人与渔的思路,比赠与与鱼更可贵,希望你能成长!

TOP

回复 1# ygqiang


    忘记给你个解决思路了!
思路可以有几种,,,
1,先是在脚本里VER判断当前脚本运行的版本!针对不同系统和不同“可能”存在的已知问题下,区别对待运行命令。GOTO 执行
2,是借助通用写法,把复杂的问题简单化。脚本写得再复杂,首先先要达到目的,才考虑优化和简化问题,这是个主次问题!
3,额,暂时没想到怎么表达!,,核心概念是,换一下思路和方式,或许会发现新大陆!到时候你就是,哥伦布了,可以写进历史题材了!,,哈哈,幽默学说,年轻人放松点,开朗点!,,

TOP

不是24h2吧

QQ 20147578

TOP

回复 5# czjt1234

win11 24h2
ver版本是:10.0.26100.2033

TOP

本帖最后由 czjt1234 于 2025-1-18 10:40 编辑

24h2 的 ansi 是美国英语,而不是简体中文
要进行设置的

QQ 20147578

TOP

回复 7# czjt1234


  在  哪里设置呢?

TOP

回复 1# ygqiang
发现你最近很喜欢编写收集系统硬件信息的批处理嘛!
给你几个命令思路和例子,启发启发一下你的创意编写,,
slmgr.Vbs -dlv
slmgr.Vbs -dli
slmgr.Vbs -xpr
  1. For /f "skip=1 tokens=1,* delims= " %%i in ('Cscript.exe //e:Vbscript //nologo %windir%\System32\slmgr.Vbs -xpr') do (Set "激活信息=%%j")
  2. For /f "tokens=1,2* delims=:" %%i in ('Cscript.exe //e:Vbscript //nologo %windir%\System32\slmgr.Vbs -dlv') do (Call,SET 名称=%%%%i&Call,SET 变量=%%%%j&Call,Set 名称=%%名称: =%%&Call,Set 变量=%%变量: =%%&Call,Set "%%名称%%=%%变量%%")
  3. SET
  4. PAUSE>NUL
复制代码
以上是注册信息,,大部分WIN系统支持,,
以下是 PC 硬件支持部分和系统一些个杂七杂八乱七八糟的信息,,
Systeminfo >Systeminfo.TXT
DxDiag /t >DxDiag.TXT
调用例子,,,,
  1. DxDiag /t >%Temp%\DxDiag.TXT
  2. For /f "tokens=1,* delims= " %%i in ('Findstr /IC:"Description: " %Temp%\DxDiag.TXT') do (Set/a 声+=1&CALL,Set 声卡%%声%%=%%j&CALL,Set "输出声卡=%%声卡1%%")
  3. SET
  4. PAUSE>NUL
复制代码
这些都是我多年前一直编写系统硬件和系统信息相关脚本的野路子,
有些系统支持有些系统不支持,无非都是系统版本不同读取出错而已!
可以根据不同的系统版本前缀 IF 系统分类GOTO 到不同的命令调用,
早些时候我也喜欢写很多这类脚本。不过现在戒了,,,

TOP

回复 8# ygqiang


设置 - 时间和语言 - 管理语言设置 - 非 Unicode 程序的语言 - 更改系统区域设置
当前系统区域设置 - 简体中文(中国大陆) - 确定
然后会提示你重启

重启后,记事本中输入中文,另存为 ANSI 后再打开,显示正常就 ok 了

QQ 20147578

TOP

回复 10# czjt1234


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

TOP

回复 1# ygqiang
  1. @echo off & setlocal enabledelayedexpansion
  2. chcp 936 > nul
  3. echo 936编码获取:
  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. chcp 65001 >nul
  11. echo 65001编码获取:
  12. REM 获取网卡名称
  13. for /f "delims=" %%a in ('netsh interface show interface^|more +3') do (
  14.     set "str=%%a"
  15.     for /f "tokens=*" %%b in ("!str:~46!") do set interfaceName=%%b
  16. )
  17. echo 网卡名称: "%interfaceName%"
  18. pause
复制代码
哪个编码可以正常显示就用哪个,24H2就这样。

TOP

我用iconv 转换
例如
wmic csproduct get uuid | iconv -f UTF-8 >> 本机信息.txt
echo ----------------------
echo ---------------------- >> 本机信息.txt
echo 获取当前电脑硬盘序列号
echo ----------------------
echo 当前电脑硬盘序列号: >> 本机信息.txt
wmic diskdrive get serialnumber  | iconv -f UTF-8 >> 本机信息.txt

TOP

返回列表