|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
|
2007-11-6 13:30 |
|
|
hello547rf44
初级用户
积分 172
发帖 63
注册 2007-11-3
状态 离线
|
『第
2 楼』:
COOL,刚刚从vkill师父那里知道有这个好东西,就马上用上了。测试结果如下:
正在备份驱动 ---> "Intel(R) 82845 Processor to I/O Controller - 1A30"
正在备份驱动 ---> "Intel(R) 82845 Processor to AGP Controller - 1A31"
正在备份驱动 ---> "Intel(R) 82801BA LPC Interface Controller - 2440"
正在备份驱动 ---> "Intel(R) 82801BA/BAM USB Universal Host Controller - 2442"
正在备份驱动 ---> "Intel(R) 82801BA/BAM SMBus Controller - 2443"
正在备份驱动 ---> "Intel(R) 82801BA/BAM USB Universal Host Controller - 2444"
正在备份驱动 ---> "Intel(r) 82801BA/BAM AC'97 Audio Controller"
正在备份驱动 ---> "Intel(R) 82801BA Ultra ATA Storage Controller - 244B"
正在备份驱动 ---> "Intel(R) 82801 PCI Bridge - 244E"
正在备份驱动 ---> "USB Root Hub"
正在备份驱动 ---> "USB Root Hub"
正在备份驱动 ---> "Unknown Device"
正在备份驱动 ---> "USB USB\VID_8086&PID_1122\5&16DC22A8&0&2
: Generic USB Hub"
正在备份驱动 ---> "WDC WD400BB-00JHC0"
已经备份了 17 个设备驱动
在复制过程中遇到错误
请检查日志文件 "Drivers\1.log"
请按任意键继续. . .
好像有一点重复备份了。
|
|
2007-11-6 20:24 |
|
|
hello547rf44
初级用户
积分 172
发帖 63
注册 2007-11-3
状态 离线
|
『第
3 楼』:
期待还原驱动的作品!
附件
1: 1.gif (2007-11-6 20:27, 5.23 K,下载次数: 1)
|
|
2007-11-6 20:27 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
4 楼』:
还原驱动不好搞定啊,想了几个方案,搞的现在满脑子符号,弄的完全没有头绪了。devcon install参数不适合已知硬件,devcon update必须要先获得硬件ID,硬件ID有一定规律但不好筛选,还要筛选些不必更新的。
|
第一高手 第二高手
我的小站
|
|
2007-11-7 13:26 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
5 楼』:
这楼我就贴点Devcon相关参数及其它应用
Quote: | 常用类型:PCI PCIIDE USB USBSTOR IDE PCIIDE DISPLAY
Devcon hwids * 获取全部的硬件ID
Devcon hwids 常用类型\* 获取常用类型硬件ID
Devcon find 常用类型\* 查找常用类型硬件信息
Devcon find gendisk 只查找硬盘包括移动硬盘信息
Devcon find gencdrom 只查找光驱信息
Devcon update xxx.inf 硬件ID 更新驱动 |
|
查询:全球所有 PCI,AGP,PCI-X,PCIe 硬件ID及名称该站不断更新信息(如果你是OEM设备那就查查吧)
@echo off
setlocal enabledelayedexpansion
echo 硬盘型号 接口类型 修订版本
echo ======== ======== ========
for /f "tokens=1,2* delims=\" %%a in ('devcon.exe find gendisk^|find /v /i "USBSTOR\"^|find ":"') do call :fastslz "%%a" "%%b" "%%c"
echo.&pause
:fastslz
set "填充空格= "
set 类型=%~1%填充空格%
set 修订=%~2
set 修订=%修订:_= %
for %%i in (%修订%) do set 修订=%%i
for /f "tokens=1* delims=:" %%a in ('echo %3') do set 型号="%%~b"
set 型号=%型号:~0,30%
set 型号=%型号:"=%%填充空格%
set 型号=%型号:~1,30%
echo %型号%%类型:~0,12%%修订%
goto:eof [ Last edited by fastslz on 2007-11-7 at 06:09 PM ]
|
第一高手 第二高手
我的小站
|
|
2007-11-7 13:52 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
6 楼』:
devcon hwids * 后察看就有下面这段
PCI\VEN_1002&DEV_4153&SUBSYS_41531FD3&REV_00\4&1AD7642&0&0058
Name: RADEON 9550
Hardware ID's:
PCI\VEN_1002&DEV_4153&SUBSYS_41531FD3&REV_00
PCI\VEN_1002&DEV_4153&SUBSYS_41531FD3
PCI\VEN_1002&DEV_4153&CC_030000
PCI\VEN_1002&DEV_4153&CC_0300
Compatible ID's:
PCI\VEN_1002&DEV_4153&REV_00
PCI\VEN_1002&DEV_4153
PCI\VEN_1002&CC_030000
PCI\VEN_1002&CC_0300
PCI\VEN_1002
PCI\CC_030000
PCI\CC_0300 正在备份驱动 ---> "RADEON 9550 "
请按任意键继续. . .
现在察看刚备份的文件夹下就有个inf文件
C:\>cd "C:\Downloads\Drivers\PCI\RADEON 9550\"
C:\Downloads\Drivers\PCI\RADEON 9550>devcon update oem4.inf "PCI\VEN_1002&DEV_41
53&SUBSYS_41531FD3&REV_00"
Updating drivers for PCI\VEN_1002&DEV_4153&SUBSYS_41531FD3&REV_00 from C:\Downlo
ads\Drivers\PCI\RADEON 9550\oem4.inf.
Drivers updated successfully. 我想依次
Hardware ID's:
PCI\VEN_1002&DEV_4153&SUBSYS_41531FD3&REV_00
PCI\VEN_1002&DEV_4153&SUBSYS_41531FD3
PCI\VEN_1002&DEV_4153&CC_030000
PCI\VEN_1002&DEV_4153&CC_0300
把这四个都更新应该没有什么问题
谁测试下好了
[ Last edited by vkill on 2007-11-7 at 09:58 PM ]
|
|
2007-11-7 21:49 |
|
|
vkill
金牌会员
积分 4103
发帖 1744
注册 2006-1-20 来自 甘肃.临泽
状态 离线
|
『第
7 楼』:
C:\>cd C:\Downloads\Drivers\USB\USB Root Hub
C:\Downloads\Drivers\USB\USB Root Hub>devcon update "C:\Downloads\Drivers\USB\US
B Root Hub\usbport.inf" "USB\ROOT_HUB&VID10DE&PID00E7&REV00A1"
Updating drivers for USB\ROOT_HUB&VID10DE&PID00E7&REV00A1 from C:\Downloads\Driv
ers\USB\USB Root Hub\usbport.inf.
Drivers updated successfully.
C:\Downloads\Drivers\USB\USB Root Hub>devcon update "C:\Downloads\Drivers\USB\US
B Root Hub\usbport.inf" "USB\ROOT_HUB&VID10DE&PID00E7"
Updating drivers for USB\ROOT_HUB&VID10DE&PID00E7 from C:\Downloads\Drivers\USB\
USB Root Hub\usbport.inf.
Drivers updated successfully.
C:\Downloads\Drivers\USB\USB Root Hub>devcon update "C:\Downloads\Drivers\USB\US
B Root Hub\usbport.inf" "USB\ROOT_HUB"
Updating drivers for USB\ROOT_HUB from C:\Downloads\Drivers\USB\USB Root Hub\usb
port.inf.
Drivers updated successfully.
像这个更新 USB Root Hub 的就没有问题,一切正常
|
|
2007-11-7 22:09 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
8 楼』:
PCI\VEN_1002&DEV_4153&SUBSYS_41531FD3&REV_00
PCI\VEN_1002&DEV_4153&SUBSYS_41531FD3
PCI\VEN_1002&DEV_4153&CC_030000
PCI\VEN_1002&DEV_4153&CC_0300
Compatible ID's:
PCI\VEN_1002&DEV_4153&REV_00
PCI\VEN_1002&DEV_4153
PCI\VEN_1002&CC_030000
PCI\VEN_1002&CC_0300
PCI\VEN_1002
PCI\CC_030000
PCI\CC_0300 恩上面的都是硬件ID,有的少有的多,devcon update oem4.inf 上面10个都能成功更新,最通用是PCI\VEN_1002,也就是筛选出符号&第1次出现的前几位就行了,这个筛选是最通用的。但是在USB设备上有时就不通用如
Quote: | "@USB\ROOT_HUB\4&1D255E7A&0"
"@USB\ROOT_HUB\4&84E02D0&0"
"@USB\ROOT_HUB\4&A6BADD5&0" |
|
备份的时候已经生成了硬件ID保存在HardwareID.log
|
第一高手 第二高手
我的小站
|
|
2007-11-7 23:00 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
9 楼』:
还原驱动已经写好了1楼打包下载,需要sed.exe,有问题跟贴
另外有SATA,SATAII,SCSI,IEEE1394设备的朋友麻烦告知下这些设备是否在常用类型里,谢谢
[code@echo off
title 更新还原驱动
for /f "delims=*" %%i in ('dir /a-d /s /b Drivers\*.log^|find /i /v "HardwareID.log"') do (
set "log=%%~nxi"
if %%~zi gtr 1024 mode con cols=70 lines=45
)
if not defined log color 0e&&echo 读取备份日志错误,请检查 . . .&&ping/n 5 127.1>nul&&exit/b
pause
:keyname
color 0b
cls
set keyname=
for /f "delims=*" %%i in ('type "Drivers\%log%"^|findstr /i /v "一共 无效 .inf & : Kernel Proxy"') do echo %%~i
echo.
set /p keyname= 请选择要更新的设备名,模糊输入连续5个以上字节↘
if not defined keyname call :keyname
dir /ad /s /b Drivers\*|find /i "%keyname%">nul
if %errorlevel%==1 color 0c&&echo 没有对应项,请重新选择 . . .&&ping/n 3 127.1>nul&&call :keyname
for /f "delims=([/\" %%i in ('type "Drivers\%log%"^|find /i "%keyname%"') do set keyname=%%~i
echo.
color 0e
set /p key= 确定还原 %keyname% 吗 Y/N ?
if /i "%key%"=="n" exit/b
if not defined key call :keyname
cls&&echo.
for /f "delims=*" %%a in ('dir /a-d /s /b Drivers\*.inf^|find /i "%keyname%"') do (
for /f "delims=&" %%i in ('devcon resources *^|sed -n "/%keyname%/{g;1!p;};h"') do devcon update "%%a" "%%i"
)
if %errorlevel%==0 cls&&echo.&&echo 设备驱动已成功更新。
if %errorlevel%==1 cls&&echo.&&echo 设备驱动已更新,但需要重新启动!
if %errorlevel%==2 cls&&echo.&&echo 更新失败!原因未正确判断出硬件ID,或驱动源不正确。
if %errorlevel%==3 cls&&echo.&&echo DevCon语法错误。
ping/n 10 127.1>nul&&exit/b[/code]
[ Last edited by fastslz on 2007-11-8 at 05:10 PM ]
|
第一高手 第二高手
我的小站
|
|
2007-11-8 13:04 |
|
|
hello547rf44
初级用户
积分 172
发帖 63
注册 2007-11-3
状态 离线
|
『第
10 楼』:
NVIDIA GeForce4 MX 440 (Microsoft Corporation)
D-Link DFE-530TX PCI Fast Ethernet Adapter (rev.C) #3
D-Link DFE-530TX PCI Fast Ethernet Adapter (rev.C) #2
Intel(R) 82845 Processor to I/O Controller - 1A30
Intel(R) 82845 Processor to AGP Controller - 1A31
Intel(R) 82801BA LPC Interface Controller - 2440
Intel(R) 82801BA/BAM USB Universal Host Controller - 2442
Intel(R) 82801BA/BAM SMBus Controller - 2443
Intel(R) 82801BA/BAM USB Universal Host Controller - 2444
Intel(r) 82801BA/BAM AC'97 Audio Controller
Intel(R) 82801BA Ultra ATA Storage Controller - 244B
Intel(R) 82801 PCI Bridge - 244E
USB Root Hub
USB Root Hub
Unknown Device
USB USB\VID_8086&PID_1122\5&16DC22A8&0&2 : Generi
SB Hub
找不到文件 - input.inf
WDC WD400BB-00JHC0
请选择要更新的设备名,模糊输入连续5个以上字节↘
不会用
|
|
2007-11-8 13:56 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
11 楼』:
我也刚发现,全部备份的就会出现这个情况,汗啊,待修正....
模糊输入即NVIDIA GeForce4 MX 440 (Microsoft Corporation)只要输入NVIDIA
[ Last edited by fastslz on 2007-11-8 at 02:04 PM ]
|
第一高手 第二高手
我的小站
|
|
2007-11-8 14:03 |
|
|
hello547rf44
初级用户
积分 172
发帖 63
注册 2007-11-3
状态 离线
|
『第
12 楼』:
不错,不错。建意另外加个auto参数。能以静默方式还原Drives目录下的所有驱动。(即使个别错误也不提示)如果这个也能实现的话,再建意“备份驱动.bat”和“还愿驱动”加上个压缩包功能。把所有的驱动打包为mydirves.zip类似的一个文件。还原的话就先将它解开。哇,这样的话,不用过多久,那此GHOST系统之类的装机光盘又有的更新了。哈哈。
这么好的贴子为什么不加精呢?
|
|
2007-11-8 14:25 |
|
|
sh2288
新手上路
积分 4
发帖 2
注册 2007-10-30
状态 离线
|
『第
13 楼』:
高手啊!!我只用这个工具切换网卡!!
一个网卡是boardcom,一个是8139的.因为一个是内部一个是外部所以手动麻烦啊!!
devcon disable *DEV_1677* >nul
devcon enable *DEV_8139* >nul
|
|
2007-11-8 15:39 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
14 楼』:
Quote: | Originally posted by hello547rf44 at 2007-11-8 14:25:
不错,不错。建意另外加个auto参数。能以静默方式还原Drives目录下的所有驱动。(即使个别错误也不提示)如果这个也能实现的话,再建意“备份驱动 ... |
|
还原还要驱动优化,这个就当是临时还原脚本吧。压缩是最简单的直接调用
start winrar.exe u -ep1 -m5 -r .\MyDrivers.rar .\*
至于ghost系统吧我是不感冒,但是驱动和硬件ID收集够多完全能做到,我倒喜欢系统安装时外挂脚本安装驱动
Quote: | Originally posted by sh2288 at 2007-11-8 15:39:
高手啊!!我只用这个工具切换网卡!!
一个网卡是boardcom,一个是8139的.因为一个是内部一个是外部所以手动麻烦啊!!
devcon disable *DEV_1677* >nul
devcon enable *DEV_8139* >nul |
|
确实是个好办法,象你这样的情况很普遍,呵呵现在有新招了。。。。
|
第一高手 第二高手
我的小站
|
|
2007-11-8 17:56 |
|
|
fastslz
铂金会员
DOS一根葱
积分 5493
发帖 2315
注册 2006-5-1 来自 上海
状态 离线
|
『第
15 楼』:
@echo OFF
title 还原更新(驱动精灵)备份项目
::::::相关讨论: http://www.cn-dos.net
::::::网上论坛: http://groups.google.com/group/fastslz
::::::个性空间: http://space.cech.com.cn/fastslz
if not %OS%==Windows_NT (cls&echo.&color 4E&echo 此程序必须在Windows NT或2000以上操作系统上运行&ping/n 5 127.1>nul&EXIT)
devcon.exe>nul 2>nul
if %errorlevel%==9009 (cls&echo.&color 0E&echo 本脚本需要微软 DevCon.exe 命令行实用工具支持&ping/n 5 127.1>nul&EXIT)
set log="Drivers\%~n0.log"
set Tempfile="%Temp:"=%.\fast.slz"
set count=0
del "Drivers\*.log" 2>nul
del %Tempfile% 2>nul
cls&color 0b
echo.
echo 正在全盘搜索(驱动精灵)备份项目信息,这个可能持续较长时间,请稍等...
setlocal enabledelayedexpansion
for /f "delims=\" %%i in ('fsutil fsinfo drives^|find /v "a"') do (
set var=%%i
set drive=!var:~-2!
fsutil fsinfo drivetype !drive!\|find /v "-ROM">nul &dir /s /b /a-d !drive!\Driver.nfo>>%Tempfile% 2>nul
)
for /f "delims=*" %%i in ('type %Tempfile%^|find /i /v "RECYCLE"') do type "%%i"|find /i "InfFile">nul 2>nul
if %errorlevel%==1 cls&echo.&color 0e&echo 在所有本地磁盘、及移动磁盘上未发现(驱动精灵)备份项目信息&echo 如果驱动文件已压缩请解压文件到任意位置,再运行本脚本&ping/n 10 127.1>nul&exit/b
:::::goto Driver_start
Wprompt "提示信息" "按下确定开始还原驱动精灵已备份的项目,需要单个恢复模式脚本请联系本人 " OkCancel 2 ?
if %errorlevel%==2 color 0e&echo 用户取消操作 . . .&ping/n 3 127.1>nul&exit/b
:Driver_start
cls
for /f "delims=*" %%i in ('type %Tempfile%^|find /i /v "RECYCLE"') do (
for /f "tokens=1* delims==" %%a in ('type "%%~i"^|find /i "DriverName"') do (
for /f "tokens=1* delims==" %%e in ('type "%%~i"^|find /i "InfFile"') do (
for /f "tokens=1* delims==&" %%k in ('type "%%~i"^|find /i "HardwareID"') do (call :startdriver "%%b" "%%~dpi%%f" "%%l")
)
)
)
del %Tempfile% 2>nul
echo.
echo 一共更新了 %count% 项设备驱动
echo.
echo 按任意键退出. . .&pause>nul
:startdriver
set "ID=%~3"
set "typename=%~1"
if not defined typename goto:eof
set/p=正在更新--^> "%typename:~0,47%"<nul
if not exist "%~2" echo 没有对应项,执行下一项目 . . .&ping/n 2 127.1>nul&goto:eof
rem 如果不能成功更新,尝试下一for语句delims=上加符号&
for /f "delims=" %%m in ('echo."%ID%"') do devcon updateNI "%~2" "%%~m">nul
if %errorlevel%==0 color 0e&echo ^<--设备驱动已更新&ping/n 1 127.1>nul&color 0b
if %errorlevel%==1 color 0e&echo ^<--已更新提示重启&ping/n 1 127.1>nul&color 0b
if %errorlevel%==2 color 0e&echo ^<--提示更新失败!&echo 原因未正确判断出硬件ID,或驱动源不正确。&ping/n 1 127.1>nul
if %errorlevel%==3 color 0e&echo DevCon语法错误。&ping/n 1 127.1>nul
set /a "count=%count%+1"
del %Tempfile% 2>nul
endlocal&(set count=%count%)
goto:eof [ Last edited by fastslz on 2008-1-17 at 10:26 PM ]
|
第一高手 第二高手
我的小站
|
|
2007-11-13 14:07 |
|