[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
  1. @echo off
  2. devcon.exe hwids PCI\CC_0200 >c:\网卡ID.txt
  3. set /p var=<c:\网卡ID.txt
  4. :: 搜索注册表
  5. set RegPath="HKLM\SYSTEM\ControlSet001\Enum\PCI\%var:*PCI\=%"
  6. for /f "skip=4 tokens=*" %%a in ('reg query %RegPath% /v Driver') do (
  7.     set Driver=%%~na
  8. )
  9. :: 修改 reg 文件
  10. for /f "tokens=2,3,5 delims=\&" %%a in ("%var%") do (
  11.     set RegFile="D:\网卡优化\%%a&%%b&%%c.reg"
  12. )
  13. set SearchStr=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class
  14. set SearchStr=%SearchStr%\{4D36E972-E325-11CE-BFC1-08002bE10318}\
  15. findstr /n .* %RegFile% >.tmp
  16. (
  17.     for /f "delims=" %%a in (.tmp) do (
  18.         set var=%%a
  19.         setlocal enabledelayedexpansion
  20.         if "!var:%SearchStr%=!" neq "!var!" (
  21.             set var=!var:\%%~na=\%Driver%!
  22.         )
  23.         echo,!var!
  24.         endlocal
  25.     )
  26. ) >%RegFile%
  27. del .tmp
  28. regedit /s %RegFile%
  29. pause
复制代码
1

评分人数

    • wrz99: 感谢版主,问题解决了!技术 + 1

TOP

本帖最后由 tmplinshi 于 2011-7-25 19:36 编辑

回复 4# wrz99

运行下面的代码,把结果贴上来。
  1. @echo off
  2. devcon.exe hwids PCI\CC_0200 >网卡ID.txt
  3. echo,
  4. echo ============
  5. type 网卡ID.txt
  6. echo ============
  7. echo,
  8. set /p var=<网卡ID.txt
  9. :: 搜索注册表
  10. set RegPath="HKLM\SYSTEM\ControlSet001\Enum\PCI\%var:*PCI\=%"
  11. for /f "skip=4 tokens=*" %%a in ('reg query %RegPath% /v Driver') do (
  12.     set Driver=%%~na
  13. )
  14. set Driver
  15. echo,
  16. echo ============
  17. reg query %RegPath% /v Driver
  18. echo ============
  19. echo,
  20. :: 修改 reg 文件
  21. for /f "tokens=2,3,5 delims=\&" %%a in ("%var%") do (
  22.     set RegFile="D:\网卡优化\%%a&%%b&%%c.reg"
  23. )
  24. set RegFile
  25. pause
  26. exit
复制代码

TOP

回复 6# wrz99


你运行 5 楼的批处理后,当前目录下的“网卡ID.txt”文件为空吗?如果为空的话,之后的代码必然是无法运行的。那句 devcon 的代码也是你提供的。

TOP

本帖最后由 tmplinshi 于 2011-7-26 18:06 编辑

回复 8# wrz99

请问你用的是什么系统?竟然 reg query 的输出与 XP SP2 的不同,XP SP2 下的输出是这样的:
  1. 空行
  2. ! REG.EXE VERSION 3.0
  3. 空行
  4. HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCI\VEN_10EC&DEV_8139&SUBSYS_813910EC&REV_10\4&29817089&0&08F0
  5.     Driver REG_SZ {4D36E972-E325-11CE-BFC1-08002BE10318}\0001
  6. 空行
复制代码
再试试:
  1. @echo off
  2. setlocal
  3. devcon.exe hwids PCI\CC_0200 >c:\网卡ID.txt
  4. set /p var=<c:\网卡ID.txt
  5. :: 搜索注册表
  6. set Driver=
  7. set RegPath="HKLM\SYSTEM\ControlSet001\Enum\PCI\%var:*PCI\=%"
  8. for /f "tokens=*" %%a in ('reg query %RegPath% /v Driver') do (
  9.     set Driver=%%~na
  10. )
  11. if not defined Driver (
  12.     echo 获取 Driver 失败。按任意键退出...
  13.     pause >nul
  14.     exit /b
  15. ) else (
  16.     set Driver
  17. )
  18. :: 修改 reg 文件
  19. for /f "tokens=2,3,5 delims=\&" %%a in ("%var%") do (
  20.     set RegFile="D:\网卡优化\%%a&%%b&%%c.reg"
  21. )
  22. set SearchStr=HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class
  23. set SearchStr=%SearchStr%\{4D36E972-E325-11CE-BFC1-08002bE10318}\
  24. type %RegFile% | findstr /n .* >.tmp
  25. (
  26.     for /f "delims=" %%a in (.tmp) do (
  27.         set var=%%a
  28.         setlocal enabledelayedexpansion
  29.         if "!var:%SearchStr%=!" neq "!var!" (
  30.             set var=!var:\%%~na=\%Driver%!
  31.         )
  32.         echo,!var:*:=!
  33.         endlocal
  34.     )
  35. ) >%RegFile%
  36. del .tmp
  37. regedit /s %RegFile%
  38. pause
复制代码
1

评分人数

TOP

本帖最后由 tmplinshi 于 2011-7-26 17:58 编辑

回复 12# wrz99


请重新复制一下 10 的代码。与 3 楼的代码相比,一共修改了两处错误:

1、
for /f "skip=4 tokens=*" %%a in ('reg query %RegPath% /v Driver') do (
    set Driver=%%~na
)

改成了 "tokens=*"

2、
findstr /n .* %RegFile% >.tmp

改成了
type %RegFile% | findstr /n .* >.tmp

TOP

回复 14# wrz99


太粗心了,忘记了去掉开头的行号。已修改 10 楼代码。

TOP

返回列表