[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程批处理在线视频分享
返回列表 发帖

[系统增强] 纯批处理脚本备份、还原驱动增强版(2014-01-18最新版本已发布)

本帖最后由 fastslz 于 2014-1-18 10:40 编辑

2014年新版本已修复所有可能出现的BUG
1:解决重复备份
2:增加Windows 6.*系列完美支持
3:完善x64 x86兼容性
4:恢复驱动时同时恢复相匹配的父系设备ID
5:Devcon.exe更新版本6.2.9200.16384


已知情况
Windows 6.*系列原生系统备份完整率99%,精简或深度优化版85%+
USB设备如打印机、键盘、鼠标等因为规范很多所以未做特别优化,所以备份恢复成功率85%+


说明:
  不能说此脚本比驱动精灵更完美,但它确实弥补了驱动精灵的不足!
  支持Windows XP、Windows 2003、,Windows Vista x86&x64 Windows 7 x86&x64 Windows 2008 x86&x64
  已经是完美版本了,备份速度优于其它程序。

1、支持备份完整的WHQL数字签名(我手头的驱动精灵 2005专业版就不支持)。
2、智能判断系统中已安装的驱动程序,且只备份用户自行安装的驱动,若该设备包含WHQL数字签名则打印信息。
3、支持驱动文件打包存放,双击单个以设备名命名的.EXE自解压方式还原驱动,还原驱动就如此轻松。
4、支持宁静默方式外挂安装更新驱动,方便系统集成、Ghost用户调用。
5、兼容驱动精灵已备份的项目,也就是说运行一下脚本就还原驱动精灵曾经备份的项目。
  还原方法将DevUpdate.Cmd Tools 放在精灵已备份驱动文件目录里,运行DevUpdate.Cmd
6、源代码公开化没作任何加密,只要你也略懂脚本完全自行修改达到自己的所需!不要改头换面就好;-)
7、优化NVIDIA显卡驱动,NVIDIA GeForce 6800以上最新驱动备份成功率90%以上,就怕是精简的驱动

子程序说明
x86\Devcon.exe-----------最新版6.2.9200.16384 微软代替设备管理器命令行实用工具Devcon
x64\Devcon.exe-----------最新版6.2.9200.16384 微软代替设备管理器命令行实用工具Devcon x64
Sleep.exe-------------------用于批处理暂停或等待用户按一个键
echoX.exe------------------用于批处理显示彩色字符
Update.cmd----------------更新设备驱动代码
Dev.sfx---------------------用于制作集成驱动的自解压模块
7z.exe----------------------7-zip命令行独立版压缩工具
7z.dll-----------------------7-zip命令行独立版DLL库文件
DevUpdate.cmd-----------用未打包文件批量自动更新驱动
DevUpdate-Sfx.cmd------用打包的exe文件批量自动更新驱动

任何建议和意见及BUG递交欢迎访问以下地址
http://bbs.bathome.net/
http://www.cn-dos.net/forum
[原创]借助DevCon纯脚本备份驱动
http://www.cn-dos.net/forum/viewthread.php?tid=35139

任何建议和意见及BUG递交欢迎访问以下地址
http://bbs.bathome.net/
http://www.cn-dos.net/forum
[原创]借助DevCon纯脚本备份驱动
http://www.cn-dos.net/forum/viewthread.php?tid=35139




新BUG反馈
http://www.bathome.net/redirect. ... 430&fromuid=277

Dev2014-01-18.rar 最新版本!
http://pan.baidu.com/share/link? ... 1&uk=2315442412
附件: 您需要登录才可以下载或查看附件。没有帐号?注册
11

评分人数

相关BUG汇总及处理方法!!!!!

本帖最后由 fastslz 于 2014-1-2 15:24 编辑

目前未发现严重BUG,如有BUG欢迎跟贴,代码的稳定性离不开各位的发现和支持
新BUG反馈
http://www.bathome.net/redirect. ... 430&fromuid=277

TOP

期待已久,下载中...

TOP

初测:备份已完成!一共备份了 0 项设备驱动

备份已完成!一共备份了 0 项设备驱动
查错中...

发现 Cscript //Nologo Dev.Vbs /y 没有返回任何信息:
echo 正在收集设备信息,请稍等...
for /f "tokens=1,2,3,4 delims=," %%a In ('Cscript //Nologo Dev.Vbs /y') do call :DevStart "%%~a" "%%~b" "%%~c" "%%~d"
修改为以下内容后,没有任何显示的。
for /f "tokens=1,2,3,4 delims=," %%a In ('Cscript //Nologo Dev.Vbs /y') do echo "%%~a" "%%~b" "%%~c" "%%~d"
pause
1

评分人数

TOP

希望大家广为参与测试
以便程序的完善

拟程序完善之后,将之加为精华

TOP

vbs部分权限不够或无wmi库

  1. On Error Resume Next
  2. Set WMI = GetObject("winmgmts:")
  3. Set aItems = WMI.ExecQuery("Select * from Win32_PnPSignedDriver")
  4. For Each aItem in aItems
  5.     If Instr(aItem.InfName,Chr(111)&Chr(101)&Chr(109)) > 0 Then
  6.         Wscript.Echo aItem.DeviceName & "," & aItem.HardWareID & "," _
  7.                     & BakPath&DevName & "," & aItem.InfName
  8.     End If
  9. Next
复制代码

试试这段代码提示什么?

[ 本帖最后由 fastslz 于 2008-3-19 16:56 编辑 ]

TOP

使用精简系统的朋友请注意了!

我的系统是精简过的,不成功的用完整的系统试试吧!

[ 本帖最后由 chishingchan 于 2008-3-19 17:35 编辑 ]

TOP

虽然我不懂,但还是要赞一个
楼主知识全面啊!
佩服中。。。
作最实用的网站,就要靠这样的人。
期待更多的作品。
技术问题请到论坛发帖求助!

TOP

超赞!
向楼主学习.

TOP

大葱,我来顶你来了。。。这东西不适合VISTA有点遗憾

TOP

封印 你的VISTA有希望的,找出这个问题根源了,namejm 也不死心想用纯批处理,这次在稳定的基础上尽量满足你们俩吧

TOP

大难题啊!捣不定!

重新安装WMI组件 已经做了;
修复WMI组件时 (我的系统装在 D 盘的,将 cd c: 改为 %SystemDrive%或者不需要吧?!)
在 Windows Management Instrumentation 服务已成功停止。下
有一行:无效全局开关。
结果跟未修复时是一个样的。

系统使用这个方案精简的:http://bbs.deepin.org/read.php?tid=443890
懂精简的不妨提个意见:还要保留什么组件或服务?
下面是被精简掉的服务列表:
√ Application Layer Gateway
√ DNS 客户端
√ IMAPI 光盘刻录服务
√ IPSEC 服务
√ Messenger
√ Qos 数据包计划程序
√ RPC 定位器
√ TCP/IP NetBIOS 助手
√ Telnet
√ Windows 时间
√ 不间断电源供应 (UPS)
√ 错误报告服务
√ 二次登陆
√ 分布式链接跟踪客户端
√ 服务公告协议 (SAP)
√ 简单 TCP/IP 服务
√ 警报器
√ 卷影复制
√ 路由监听服务
√ 索引服务
√ 通用即插即用设备
√ 网络动态数据交换 (DDE)
√ 网络客户端
√ 系统还原服务
√ 远程注册表
√ 质量服务资源预订协议
√ 自动更新

[ 本帖最后由 chishingchan 于 2008-3-20 13:22 编辑 ]

TOP

纯批的请测试...
  1. @echo off
  2. Title 欢迎使用批处理之家(备份驱动脚本) BY: fastslz
  3. :::网上论坛: http://bbs.bathome.net/
  4. :::个性空间: http://groups.google.com/group/fastslz
  5. Set Tools=%~dps0Tools
  6. if not %OS%==Windows_NT (color 0c&%Tools%\sleep.exe -k -p "此程序必须在Windows NT或XP以上操作系统上运行" 10&exit)
  7. %Tools%\devcon.exe>nul 2>nul
  8. if %errorlevel%==9009 (color 0c&%Tools%\sleep.exe -k -p "本脚本需要微软 %Tools%\devcon.exe 命令行实用工具支持" 10&exit)
  9. set Tempfile="%Temp:"=%.\fast.slz"
  10. set "BakPath=%~dp0Drivers"
  11. del %Tempfile% 2>nul
  12. cls&color 0b&set count=0
  13. echo 正在收集设备信息,请稍等...
  14. for /f "skip=1 tokens=2,3,4 delims=," %%a in ('Wmic Path Win32_PnPSignedDriver where "infname like 'oem%%'" get infname^,DeviceName^,HardWareID /format:csv') do >>%Tempfile% echo."%%a","%%b","%%c"|more>nul
  15. dir /ad "%BakPath%" >nul 2>nul||MD "%BakPath%"
  16. for /f "tokens=1,2,3 delims=," %%i in ('type %Tempfile%^|find /i "oem"') do call :DevStart %%i %%j %%k
  17. del %Tempfile% 2>nul
  18. echo.
  19. %Tools%\sleep.exe -p "备份已完成!一共备份了 %count% 项设备驱动" 3
  20. echo.&color 0a
  21. %Tools%\sleep.exe -k -p "按下任意键开始打包集成驱动,15秒内未做选择默认自动退出" 15
  22. if %errorlevel%==0 exit/b0
  23. for /f "delims=*" %%a in ('dir /s/a-d/b Driver.nfo 2^>nul') do call :Pack "%%a"
  24. cls&echo.&color 0b
  25. %Tools%\sleep.exe -k -p "打包已完成!10 秒后自动退出" 10
  26. exit
  27. :DevStart
  28. if "%~1"=="" goto:eof
  29. color 0e
  30. if %count% equ 0 cls
  31. setlocal enabledelayedexpansion
  32. Set "DeviceName=%~1"
  33. Set "DevName=!DeviceName:/= !"
  34. Set "DevName=!DevName:\= !"
  35. Set "DevName=!DevName:?= !"
  36. Set "DevName=!DevName:|= !"
  37. Set "DevName=!DevName:>= !"
  38. Set "DevName=!DevName:<= !"
  39. Set "DevName=!DevName:^*= !"
  40. set "HardWareID=%~2"
  41. set "HardWareID=!HardWareID:&amp;=&!"
  42. dir /ad "%BakPath%\%DevName%" >nul 2>nul||MD "%BakPath%\%DevName%"
  43. >"%BakPath%\%DevName%\Driver.nfo" set /p=DeviceName=%DeviceName%<nul
  44. >>"%BakPath%\%DevName%\Driver.nfo" echo.
  45. >>"%BakPath%\%DevName%\Driver.nfo" set /p="HardWareID=%HardWareID%"<nul
  46. >>"%BakPath%\%DevName%\Driver.nfo" echo.
  47. >>"%BakPath%\%DevName%\Driver.nfo" set /p="InfName=%~3"<nul
  48. set/p=正在备份--^> "%~1"<nul
  49. For /F "skip=1 tokens=*" %%i in ('%Tools%\devcon.exe Driverfiles "%HardWareID%"^|find ":\"') do xcopy /h/r/y %%~si "%BakPath%\%DevName%" >nul 2>nul
  50. xcopy /h/r/y "%Systemroot%\Inf\%~3" "%BakPath%\%DevName%" >nul 2>nul
  51. if errorlevel 0 set /a "count=%count%+1"
  52. set "InfName=%~n3"
  53. for /f "tokens=1* delims== " %%k in ('type "%Systemroot%\Inf\%InfName%.inf"^|find /i ".Cat"^|find /v "64"') do set "OemName=%%~nl"
  54. if defined OemName (
  55.    for /f "delims=*" %%a in ('dir /s/b/a-d "%SystemRoot%\system32\CatRoot\%InfName%.cat" 2^>nul') do set "catfile=%%~a"
  56.    if not defined catfile for /f "delims=*" %%k in ('dir /s/b/a-d "%SystemRoot%\%OemName%.cat" 2^>nul') do set "catfile=%%~k"
  57. )
  58. if defined catfile (
  59.    set "InfName=%OemName%"
  60.    xcopy /h/r/y "%catfile%" "%BakPath%\%DevName%\">nul 2>nul
  61.    if errorlevel 0 echo  含WHQL数字签名
  62.    attrib -s -h -r "%BakPath%\%DevName%\%InfName%.*">nul
  63.    copy /y "%BakPath%\%DevName%\Driver.nfo" "%BakPath%\%DevName%\Driver.bak">nul 2>nul
  64.    type "%BakPath%\%DevName%\Driver.bak"|find /v "InfName=">"%BakPath%\%DevName%\Driver.nfo"
  65.    >>"%BakPath%\%DevName%\Driver.nfo" echo InfName=%OemName%.inf&del "%BakPath%\%DevName%\Driver.bak" 2>nul
  66.    move /y "%BakPath%\%DevName%\%InfName%.inf" "%BakPath%\%DevName%\%OemName%.inf">nul 2>nul
  67.    move /y "%BakPath%\%DevName%\%InfName%.cat" "%BakPath%\%DevName%\%OemName%.cat">nul 2>nul
  68. )
  69. endlocal&set count=%count%
  70. goto:eof
  71. :Pack
  72. if "%~1"=="" goto:eof
  73. set "DriverPath=%~dp1"
  74. set "Name=%DriverPath:~0,-1%"
  75. for /f "delims=*" %%a in ("%Name%.tmp") do set "Name=%%~na"
  76. cls&echo 正在集成 %Name% 驱动包请稍等...
  77. %Tools%\7za.exe a -sfxdev.sfx "%Name%.exe" "%DriverPath%*.*" "%Tools%\devcon.exe" "%Tools%\sleep.exe" "%Tools%\Update.cmd"
  78. rem rd /s/q "%DriverPath%"
  79. goto:eof
复制代码

[ 本帖最后由 fastslz 于 2009-4-12 20:09 编辑 ]

TOP

+ ■ 硬件支持   (简直榨干了) 能用才怪
nLite 以修改inf文件达到目的的,不知道它去掉了哪部分....

TOP

13 楼在精简系统下的测试结果:

正在收集设备信息,请稍等...
节点 - XP
错误:
描述 = 提供程序加载失败
系统找不到指定的文件。

备份已完成!一共备份了 0 项设备驱动

按下任意键开始打包集成驱动,15秒内未做选择默认自动退出



带有 Wmic Path Win32_PnPSignedDriver where 语句的跟前无分别


+ ■ 硬件支持 (被精简掉的东西)
    √ Brother 设备
    √ Gravis 数字游戏端口
    √ Iomega Zip 设备
    √ Ramdisk
    √ Windows CE USB 主机
    √ 多端口串行适配器
    √ 智能卡

[ 本帖最后由 chishingchan 于 2008-3-21 10:57 编辑 ]

TOP

返回列表