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

[系统增强] 纯批处理脚本备份、还原驱动增强版(2022-10-29更新)

[复制链接]
发表于 2011-3-10 17:27:41 | 显示全部楼层
有点小的问题:
1,卡巴将sleep.exe报毒
2,备份的时候将卡巴的网卡也备份进去了(表达能力欠缺^_^)
发表于 2011-5-10 08:46:15 | 显示全部楼层
看看是什么东西
 楼主| 发表于 2011-5-24 13:34:26 | 显示全部楼层
时隔二年未更新我也够懒的
新版本即将重新发布,支持winxp以上系统包括32位64位,并优化NVIDIA显卡驱动
正在测试中.....
发表于 2011-5-24 14:42:53 | 显示全部楼层
测试了下旧版的 驱动备份不全,
期待新版本。。。。。继续测试
发表于 2011-5-27 14:32:53 | 显示全部楼层
本帖最后由 techon 于 2011-5-27 14:37 编辑

此行代码,如文件 InfName.inf 里含有多行及引号

  1. for /f "tokens=1* delims== " %%k in ('type "%Systemroot%\Inf\%InfName%.inf"^|find /i ".Cat"') do set "OemName=%%~nl"
复制代码
例如我的一个inf文件:
type "%Systemroot%\Inf\oem24.inf"|find /i ".Cat"

  1. CatalogFile.NT = cb002iku.cat
  2. HKLM, Software\%CompanySubkey%\%ProductSubkey%\Files\CATALOG,      CB00*.cat,,     "CB00*.cat"
  3. HKLM, Software\%CompanySubkey%\%ProductSubkey%\Files\CATALOG,      CB00*.cat,,     "CB00*.cat"
复制代码
将导致后面的
  1. if not defined catfile for /f "delims=*" %%k in ('dir /s/b/a-d "%SystemRoot%\%OemName%.cat" 2^>nul') do set "catfile=%%~k"
复制代码
语句出错直接退出

附件不好使
。。。。
 楼主| 发表于 2011-5-28 09:24:08 | 显示全部楼层
谢谢反馈,更谢谢你直接找出了原因
  1. for /f "tokens=1* delims== " %%k in ('type "%Systemroot%\Inf\%InfName%.inf"^|findstr /i "CatalogFile .Cat"') do set "OemName=%%~nl"
复制代码
这样就可以解决问题了
本来这段代码可以优化不用find或findstr,直接tokens=1,2可以做到了,这样代码执行效率稍微高一点,稳定性可差远了,这个也多亏你贴出inf文件信息,CatalogFile.NT = cb002iku.cat很少见,所以代码只有在不同的环境下才能更完善!
附件已更新
发表于 2011-5-29 00:51:43 | 显示全部楼层
本帖最后由 techon 于 2011-5-29 01:16 编辑

很感谢 fastslz 费心制作批处理程序,使驱动备份、还原变得如此简单轻松

楼上的代码还是会出问题。。。
因为这个inf文件后面有两行:
HKLM, Software\%CompanySubkey%\%ProductSubkey%\Files\CATALOG,      CB00*.cat,,     "CB00*.cat"
HKLM, Software\%CompanySubkey%\%ProductSubkey%\Files\CATALOG,      CB00*.cat,,     "CB00*.cat"

导致中途退出的是以上这两行
这个for /f 执行最后
%%L==Software\%CompanySubkey%\%ProductSubkey%\Files\CATALOG,      CB00*.cat,,     "CB00*.cat"
%%~nL==OemName==CATALOG,      CB00*.cat,,     "CB00*
保险的解决办法是:

  1. for /f "tokens=1,2 delims==此处为一个TAB制表符 " %%k in ('type "%Systemroot%\Inf\%InfName%.inf"^|findstr /i Catalogfile') do set "OemName=%%~nl"
复制代码

  1. for /f "tokens=1,2 delims==此处为一个TAB制表符 " %%k in ('type "%Systemroot%\Inf\%InfName%.inf"^|find /i "Catalogfile"') do set "OemName=%%~nl"
复制代码
inf 文件的格式比较宽松,很多东西想怎么写就怎么写
还有这样的呢。。。 不过目前还没发现第三方驱动使用这样的inf信息
CatalogFile.NTx86  = ndisrd86.cat
CatalogFile.NTAMD64 = ndisrd64.cat


也就微软这么用。。。。暂时可以忽略,或者考虑加个判断是x86还是 *64

  1. ; -- NDISRD_M.INF --
  2. ;
  3. ; Based on Passsthru Miniport INF file
  4. ;
  5. ; Copyright (c) 2000-2009, NT Kernel Resources

  6. ; ----------------------------------------------------------------------

  7. [Version]
  8. signature  = "$Windows NT$"
  9. Class      = Net
  10. ClassGUID  = {4d36e972-e325-11ce-bfc1-08002be10318}
  11. Provider   = %Ntkr%
  12. DriverVer  = 08/27/2009,3.00.7.1
  13. CatalogFile.NTx86  = ndisrd86.cat
  14. CatalogFile.NTAMD64 = ndisrd64.cat

  15. [ControlFlags]
  16. ExcludeFromSelect = nt_ndisrdmp

  17. [DestinationDirs]
  18. DefaultDestDir=12
  19. ; No files to copy

  20. [Manufacturer]
  21. %Ntkr% = NTKR,NTx86,NTia64,NTamd64

  22. ;For Win2K

  23. [NTKR]
  24. %NdisrdMP_Desc% = NdisrdMP.ndi, nt_ndisrdmp

  25. ;For WinXP and later

  26. [NTKR.NTx86]
  27. %NdisrdMP_Desc% = NdisrdMP.ndi, nt_ndisrdmp

  28. [NTKR.NTia64]
  29. %NdisrdMP_Desc% = NdisrdMP.ndi, nt_ndisrdmp

  30. [NTKR.NTamd64]
  31. %NdisrdMP_Desc% = NdisrdMP.ndi, nt_ndisrdmp


  32. [NdisrdMP.ndi]
  33. AddReg  = NdisrdMP.ndi.AddReg
  34. Characteristics = 0x29 ;NCF_NOT_USER_REMOVABLE | NCF_VIRTUAL | NCF_HIDDEN

  35. [NdisrdMP.ndi.AddReg]
  36. HKR, Ndi, Service,  0,  NdisrdMP

  37. [NdisrdMP.ndi.Services]
  38. AddService = NdisrdMP,0x2, NdisrdMP.AddService


  39. [NdisrdMP.AddService]
  40. ServiceType    = 1 ;SERVICE_KERNEL_DRIVER
  41. StartType      = 3 ;SERVICE_DEMAND_START
  42. ErrorControl   = 1 ;SERVICE_ERROR_NORMAL
  43. ServiceBinary  = %12%\ndisrd.sys
  44. AddReg         = NdisrdMP.AddService.AddReg


  45. [NdisrdMP.AddService.AddReg]
  46. ; ----------------------------------------------------------------------
  47. ; Add any miniport-specific parameters here.  These are params that your
  48. ; filter device is going to use.
  49. ;
  50. ;HKR, Parameters, ParameterName,  0x10000, "MultiSz", "Parameter", "Value"
  51. ;HKR, Parameters, ParameterName2, 0x10001, 4

  52. [Strings]
  53. Ntkr = "NTKR"
  54. ndisrdMP_Desc = "WinpkFilter Miniport"

  55. [SourceDisksNames]
  56. ;None

  57. [SourceDisksFiles]
  58. ;None
复制代码
 楼主| 发表于 2011-5-30 14:07:13 | 显示全部楼层
2011-5-30 更新说明:优化备份驱动签名部分代码,同步系统版本
谢谢techon
发表于 2011-6-1 09:00:07 | 显示全部楼层
多谢了,下载好好学习一下
发表于 2011-6-1 15:34:50 | 显示全部楼层
一堆EXE也叫“纯”批处理?这样的话“纯”批处理什么不能做?
 楼主| 发表于 2011-6-3 10:54:03 | 显示全部楼层
一堆EXE也叫“纯”批处理?这样的话“纯”批处理什么不能做?
Demon 发表于 2011-6-1 15:34

除了devcon其它都是浮云,而devcon也是微软WDK开发工具之一,之前也就“借助DevCon纯脚本备份驱动”,如果不依赖任何exe备份效率没这么高,即使能备份不能还原那这个批处理也只是浮云!find 外部命令从MS-DOS存在到现在和之后的Windows 8,目前还在计算机考级范围内。
批处理能做什么,无非简化操作!
发表于 2011-6-3 10:59:31 | 显示全部楼层
除了devcon其它都是浮云,而devcon也是微软WDK开发工具之一,之前也就“借助DevCon纯脚本备份驱动”,如果不依赖任何exe备份效率没这么高,即使能备份不能还原那这个批处理也只是浮云!find 外部命令从MS-DOS存在到 ...
fastslz 发表于 2011-6-3 10:54

那就不要加个“纯”字,我也很想知道批处理能做什么。
 楼主| 发表于 2011-6-3 12:07:55 | 显示全部楼层
那就不要加个“纯”字,我也很想知道批处理能做什么。
Demon 发表于 2011-6-3 10:59

我也想改个更贴切的名字了,做人和做事由始至终,开头用了这个名字也便于搜索引擎抓取
发表于 2011-6-6 17:30:32 | 显示全部楼层
强大啊。。~
发表于 2011-8-17 07:54:03 | 显示全部楼层
谢谢楼主,我试试看
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-16 23:03 , Processed in 0.020618 second(s), 7 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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