找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 6896|回复: 12

[注册表类] [已解决]批处理,如何获取不确定路径下的注册表?

[复制链接]
发表于 2025-5-6 10:15:06 | 显示全部楼层 |阅读模式
本帖最后由 ygqiang 于 2025-5-6 21:39 编辑

[已解决]批处理,如何获取不确定路径下的注册表?

下面的????,不同的win系统,不确定具体是哪个值。可能是0000,也可能是0007....
1、判断是否存在这个路径
2、如果存在,就进行下面操作
  1. reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\????\Ndi\params\*SpeedDuplex\enum
  2. " /s >1.txt
复制代码
不同的win10或win11系统,注册表路径不同。比如:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0007\Ndi\params\*SpeedDuplex\enum

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0000\Ndi\params\*SpeedDuplex\enum

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001\Ndi\Params\*SpeedDuplex\enum


最终代码如下:
  1. @echo off & setlocal enabledelayedexpansion
  2. echo 代码开始

  3. echo 65001编码获取: > nul
  4. chcp 65001 >nul


  5. reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s >1.txt
  6. echo start "" 1.txt >nul

  7. chcp 936 > nul
  8. echo 936编码输出: > nul


  9. @echo off &for /f "delims=" %%v in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|find /i "\*speedduplex" ') do set "kv=%%v"
  10. echo,%kv% > nul
  11. reg query "%kv%" /s >1.txt
  12. start "" 1.txt >nul
  13. for /f "tokens=1-4 delims= " %%a in ('reg query "%kv%" ') do set "v=%%c %%d"
  14. echo,本机有线网卡支持的最高速度:%v%

  15. pause >nul
  16. exit
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2025-5-6 12:14:22 | 显示全部楼层
  1. wmic nic where "NetConnectionID='WLAN'" get DeviceID,Caption /value
复制代码
发表于 2025-5-6 12:16:25 | 显示全部楼层
全部获取后再筛选
发表于 2025-5-6 13:00:30 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-6 13:26 编辑

回复 1# ygqiang

一个比较简单的析取方法》转用 http://www.bathome.net/thread-70839-1-1.html 此帖3楼代码中的句式再作些微调整即可获取如下数据结果:

  1.     1    REG_SZ    10 Mbps 半双工
  2.     2    REG_SZ    10 Mbps 全双工
  3.     3    REG_SZ    100 Mbps 半双工
  4.     4    REG_SZ    100 Mbps 全双工
  5.     6    REG_SZ    1.0 Gbps 全双工
复制代码
代码如下,直接在命令行运行即可(须是windows 简中系统,且运行前确保是在 936 码页下)...

  1. reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s|findstr /i "双工$"
复制代码
 楼主| 发表于 2025-5-6 14:27:37 | 显示全部楼层
本帖最后由 ygqiang 于 2025-5-6 14:28 编辑

回复 4# aloha20200628

谢谢。

下面代码,有2个问题。
1、输出到1.txt的代码,txt内容内容太多。能否直接显示网卡支持哪些速率(也就是1楼需要解决的问题)
2、后面代码是否可以进一步精简
  1. @echo off & setlocal enabledelayedexpansion
  2. echo 代码开始

  3. reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s >1.txt


  4. start "" 1.txt

  5. for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|find /i " 10 Gbps " ') do (echo,发现10G万兆网卡...&pause&exit/b)

  6. @echo off &for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|find /i " 2.5 Gbps " ') do (echo,发现2.5G网卡...&pause&exit/b)

  7. @echo off &for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|find /i " 1.0 Gbps " ') do (echo,发现1G千兆网卡...&pause&exit/b)

  8. @echo off &for /f "delims=" %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|find /i " 100 Mbps " ') do (echo,发现百兆网卡...&pause&exit/b)

  9. pause&exit/b
复制代码
发表于 2025-5-6 15:08:42 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-6 15:23 编辑

回复 5# ygqiang

一个较为可靠的判断逻辑建议如下(假设只有一张有线网卡)》
在4楼代码析取的结果(即有线网卡可支持的全部速度选项)中拿到最后一行数据,即可判断本机有线网卡能够支持的最高速度,示例代码如下...

  1. @echo off &for /f "tokens=1-4 delims= " %%a in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|findstr /i "双工$" ') do set "v=%%c %%d"
  2. echo,本机有线网卡支持的最高速度:%v% &pause&exit/b
复制代码
 楼主| 发表于 2025-5-6 16:11:37 | 显示全部楼层
本帖最后由 ygqiang 于 2025-5-6 16:52 编辑

回复 6# aloha20200628


    你这代码通用性差。比如不同的win系统电脑,注册表如下:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0007\Ndi\params\*SpeedDuplex\enum
    0    REG_SZ    自动侦测
    1    REG_SZ    10 Mbps 半双工
    2    REG_SZ    10 Mbps 全双工
    3    REG_SZ    100 Mbps 半双工
    4    REG_SZ    100 Mbps 全双工
    6    REG_SZ    1.0 Gbps 全双工


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0000\Ndi\params\*SpeedDuplex\enum
    0    REG_SZ    Auto Negotiation
    1    REG_SZ    10 Mbps Half Duplex
    2    REG_SZ    10 Mbps Full Duplex
    3    REG_SZ    100 Mbps Half Duplex
    4    REG_SZ    100 Mbps Full Duplex
    6    REG_SZ    1.0 Gbps Full Duplex
发表于 2025-5-6 17:18:00 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-6 17:21 编辑

回复 7# ygqiang

4楼代码使用说明中已强调用于 windows 简中系统...
7楼所示第二段数据也是 windows 简中系统注册表抓取的结果吗?如果是来自英文系统,则可先检测系统类型再调整注册表匹配关键词(中英文版交换)即可...
 楼主| 发表于 2025-5-6 17:21:08 | 显示全部楼层
回复 8# aloha20200628


    都是中文版本。分别是win7和win11
发表于 2025-5-6 17:37:50 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-6 19:19 编辑

回复 9# ygqiang

试试以下这个版本(无须检测系统类型)看能否兼容 win7/win11 两种实况...
以下代码已在 win8.1-win10 简中系统测试通过...

  1. @echo off &for /f "delims=" %%v in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|find /i "\*SpeedDuplex\enum" ') do set "kv=%%v"
  2. for /f "tokens=1-4 delims= " %%a in ('reg query "%kv%" ') do set "v=%%c %%d"
  3. echo,本机有线网卡支持的最高速度:%v%&pause&exit/b
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2025-5-6 19:45:14 | 显示全部楼层
回复 10# aloha20200628

谢谢。win10和win11中文版,测试成功。


   
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0007\Ndi\params\*SpeedDuplex\enum
    0    REG_SZ    自动侦测
    1    REG_SZ    10 Mbps 半双工
    2    REG_SZ    10 Mbps 全双工
    3    REG_SZ    100 Mbps 半双工
    4    REG_SZ    100 Mbps 全双工
    6    REG_SZ    1.0 Gbps 全双工


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0000\Ndi\params\*SpeedDuplex\enum
    0    REG_SZ    Auto Negotiation
    1    REG_SZ    10 Mbps Half Duplex
    2    REG_SZ    10 Mbps Full Duplex
    3    REG_SZ    100 Mbps Half Duplex
    4    REG_SZ    100 Mbps Full Duplex
    6    REG_SZ    1.0 Gbps Full Duplex


HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001\Ndi\Params\*SpeedDuplex\enum
    0    REG_SZ    自动协商
    1    REG_SZ    10 Mbps 半双工
    2    REG_SZ    10 Mbps 全双工
    3    REG_SZ    100 Mbps 半双工
    4    REG_SZ    100 Mbps 全双工
    6    REG_SZ    1.0 Gbps 全双工




HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0001\Ndi\params\*SpeedDuplex\enum
    0    REG_SZ    Auto Negotiation
    1    REG_SZ    10 Mbps Half Duplex
    2    REG_SZ    10 Mbps Full Duplex
    3    REG_SZ    100 Mbps Half Duplex
    4    REG_SZ    100 Mbps Full Duplex
    6    REG_SZ    1.0 Gbps Full Duplex



HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}\0000\Ndi\params\*SpeedDuplex\enum
    0    REG_SZ    自动侦测
    1    REG_SZ    10 Mbps 半双工
    2    REG_SZ    10 Mbps 全双工
    3    REG_SZ    100 Mbps 半双工
    4    REG_SZ    100 Mbps 全双工
    6    REG_SZ    1.0 Gbps 全双工
    2500    REG_SZ    2.5 Gbps 全双工


还是1楼的问题,下面生成txt的代码,能否只输出特定路径的注册表信息?
  1. @echo off & setlocal enabledelayedexpansion
  2. echo 代码开始

  3. echo 65001编码获取: > nul
  4. chcp 65001 >nul


  5. reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s >1.txt


  6. start "" 1.txt >nul

  7. chcp 936 > nul
  8. echo 936编码输出: > nul


  9. @echo off &for /f "delims=" %%v in ('reg query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|find /i "\*speedduplex" ') do set "kv=%%v"
  10. for /f "tokens=1-4 delims= " %%a in ('reg query "%kv%" ') do set "v=%%c %%d"
  11. echo,本机有线网卡支持的最高速度:%v%

  12. pause >nul
  13. exit
复制代码
发表于 2025-5-6 20:15:55 | 显示全部楼层
本帖最后由 aloha20200628 于 2025-5-6 20:45 编辑

回复 11# ygqiang

在10楼代码第1-2行之间加一行 echo,"%kv%" &pause 即可见 %kv% 就是你要的注册表特定路径...
发表于 2025-5-7 21:37:12 | 显示全部楼层
本帖最后由 窄口牛 于 2025-5-7 21:38 编辑
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. net session >nul 2>&1 || (
  4.     echo 正在请求管理员权限...
  5.     echo CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs"
  6.     cscript //b "%temp%\getadmin.vbs"
  7.     del "%temp%\getadmin.vbs" >nul 2>&1
  8.     exit /b
  9. )
  10. echo 正在扫描有线网卡配置...
  11. echo ========================================
  12. for /f "delims=" %%v in ('
  13.     reg query "HKLM\SYSTEM\CurrentControlSet\Control\Class\{4d36e972-e325-11ce-bfc1-08002be10318}" /s ^|
  14.     findstr /i "\\\*SpeedDuplex\\enum" ^|
  15.     findstr /v "NdiExt"
  16. ') do (
  17.     set "enum_path=%%v"
  18.     set "adapter_path=!enum_path:\Ndi\Params\*SpeedDuplex\enum=!"
  19.     set "adapter_name="
  20.     for /f "tokens=2,*" %%A in ('
  21.         reg query "!adapter_path!" /v DriverDesc 2^>nul ^| find "REG_SZ"
  22.     ') do (
  23.         set "adapter_name=%%B"
  24.     )
  25.     echo [网卡实例] !adapter_path:~-4!
  26.     if defined adapter_name (
  27.         echo [完整名称] !adapter_name!
  28.     ) else (
  29.         echo [警告] 未找到网卡名称
  30.     )
  31.     echo [支持模式]:
  32.     for /f "tokens=2,*" %%a in ('
  33.         reg query "!enum_path!" ^| findstr /i "[0-9][0-9]* "
  34.     ') do (
  35.         echo   %%b
  36.     )
  37.     echo ========================================
  38. )
  39. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:09 , Processed in 0.023551 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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