无忧启动论坛

标题: 也来发一个自动给win7pe集成驱动的批处理 [打印本页]

作者: hhh333    时间: 2012-11-11 19:06
标题: 也来发一个自动给win7pe集成驱动的批处理
参照各位大侠的研究成果,也发一个所谓替换法巧妙添加驱动的批处理:
  1. @Echo Off
  2. REM 原创by chiannet,修改by TCLSHX、H3
  3. setlocal EnableDelayedExpansion
  4. COLOR 1F
  5. Echo.
  6. ECHO 本工具用来给W7PE增加驱动,各文件夹及文件意义如下:
  7. ECHO   w7pe文件夹----w7pe.wim之挂载目标
  8. ECHO   bot文件夹-----boot.wim之挂载目标
  9. ECHO   wim文件夹-----boot.wim w7pe.wim等WIM文件存放处
  10. ECHO   drv文件夹-----欲添加的驱动文件存放处
  11. Echo.
  12. ECHO 请按以上要求将WIM文件和驱动文件准备好(以上位于根或子文件夹均可)!
  13. ECHO 本批处理必须要在安装了Windows AIK(KB3AIK_CN.ISO)的环境中运行!
  14. Echo.
  15. ECHO 如果已经作好上述准备工作,按任意键继续......
  16. pause>nul
  17. Echo.
  18. ECHO 第1步:检查用于挂载的WIM文件......
  19. Echo.
  20. set nowim=0
  21. If not Exist wim\W7PE.WIM set nowim=1 &&echo 没有Win7PE镜像文件w7pe.wim!
  22. If not Exist wim\boot.wim set nowim=1 &&echo 没有Win7原版boot.wim镜像文件!
  23. if not "%nowim%"=="0" pause&&goto end
  24. Echo.
  25. ECHO 第2步:挂载WIM镜像......
  26. Echo.
  27. If Exist w7pe RD w7pe /S /Q>NUL 2>NUL
  28. If Exist bot RD bot /S /Q>NUL 2>NUL
  29. md w7pe
  30. md bot
  31. Dism /Mount-Wim /WimFile:wim\W7PE.WIM /index:1 /MountDir:%CD%\w7pe
  32. Dism /Mount-Wim /WimFile:wim\boot.wim /index:1 /MountDir:%CD%\bot
  33. dir /a-d /b bot\windows\system32\*.dll >BOOTFN.OLD
  34. ECHO .
  35. ECHO 第3步:集成驱动文件......
  36. ECHO .
  37. REM 将w7pe中驱动有关文件移到bot中
  38. rd bot\windows\inf  /s /q
  39. rd bot\windows\system32\drivers /s /q
  40. rd bot\windows\system32\config  /s /q
  41. rd bot\windows\system32\DriverStore /s /q
  42. move w7pe\windows\inf bot\windows\
  43. move w7pe\windows\system32\drivers bot\windows\system32\
  44. move w7pe\windows\system32\config bot\windows\system32\
  45. move w7pe\windows\system32\DriverStore bot\windows\system32\
  46. REM 集成驱动
  47. Dism /image:bot /Add-Driver /driver:"DRV" /recurse /ForceUnsigned  
  48. REM 将已经集成好的位于bot中的原w7pe中驱动有关文件移回w7pe中
  49. move "bot\windows\inf" "w7pe\windows"
  50. move "bot\windows\system32\config" "w7pe\windows\system32"
  51. move "bot\windows\system32\drivers" "w7pe\windows\system32"
  52. move "bot\windows\system32\DriverStore" "w7pe\windows\system32"
  53. del "w7pe\windows\system32\*.pnf" /s /q
  54. del "w7pe\windows\system32\config\*.log?" /s /q /a:h
  55. del "w7pe\windows\inf\*.log" /q
  56. del "w7pe\windows\system32\config\*.blf" /s /q /a:h
  57. del "w7pe\windows\system32\config\*.regtrans-ms" /s /q /a:h
  58. del "w7pe\Windows\System32\DriverStore\*.1" /q
  59. ECHO .
  60. ECHO 第4步:更新DLL文件......
  61. ECHO .
  62. ECHO .  
  63. REM 比较文件列表
  64. if exist ADDDLL.TXT del ADDDLL.TXT /q
  65. dir /a-d /b bot\windows\system32\*.dll >BOOTFN.NEW
  66. for /f "tokens=*" %%i in (BOOTFN.OLD) do (
  67.         set %%i=m
  68. )
  69. for /f "delims=" %%a in (BOOTFN.NEW) do (
  70.         if not defined %%a >>ADDDLL.TXT echo %%a
  71. )
  72. REM 复制差异文件......
  73. for /f "delims=" %%a in (ADDDLL.TXT) do (
  74.    copy /y "bot\windows\system32\%%a" "w7pe\windows\system32"
  75. )
  76. ECHO .  
  77. ECHO 第5步:更新DLL已经完成,按任意键写入wim\w7pe.wim并卸挂boot......
  78. pause>nul
  79. for %%i in (ADDDLL.TXT BOOTFN.OLD BOOTFN.NEW) do del %%i /Q
  80. Dism /unmount-Wim /MountDir:"%CD%\w7pe" /Commit
  81. Dism /unmount-Wim /MountDir:"%CD%\bot" /discard
  82. :END
复制代码


特点:可放任意盘,任意子目录,只要将WIM文件夹(其中包含boot.wim w7pe.wim两个文件)和DRV文件夹(其中包含驱动安装文件)准备好,再将这个批处理放到这两个文件夹所在的位置,运行之就可以了。
(将boot.wim挂载目录改为bot,避免在Win7&8启动盘根下做的时候破坏启动盘;利用了文件列表记录文件来比较出新增文件,不用再将原dll复制保存一份了;改成相对路径,在任何位置都可以做了,不需要清理一个盘来做。)

[ 本帖最后由 hhh333 于 2012-11-11 21:38 编辑 ]
作者: chanel    时间: 2012-11-11 19:33
好东西 谢谢分享
作者: xyzxp    时间: 2012-11-11 19:41
强大,谢谢分享!!!
作者: huaqingyuan    时间: 2012-11-11 20:02
win8pe,可以用吗?
作者: 201120122050    时间: 2012-11-11 20:06
谢谢分享!!!!!!!!!!!!!!!!!!!!!
作者: tegl    时间: 2012-11-11 21:24
好东西,支持原创
作者: 2012ttt    时间: 2012-11-11 22:10
标题: 回复 #1 hhh333 的帖子
反馈

用这个批处理安装了一下驱动,完成后发现w7pe.wim文件里怎么多个[files]文件夹,里面全是1234之类的数字命名的文件,体积有我添加驱动的压缩包的三分之二大小。
这个[files]文件夹有用吗?能删吗?

[ 本帖最后由 2012ttt 于 2012-11-11 23:19 编辑 ]
作者: 2012yzz    时间: 2012-11-11 23:04
想问一下楼主有没有2003的PE这种工具呀.
作者: 2010hook    时间: 2012-11-11 23:43
标题: 回复 #1 hhh333 的帖子
楼主有两个地方是错的吧:
>BOOTFN.OLD
>BOOTFN.NEW
你要得到一个列表的话, 应该是两个">"才是连续写入. 否则, 最终只有一行内容.

不用DIR命令可以降低资源占用, 两处"dir"所在行都可以像这样改写:
for %%a in (bot\windows\system32\*.dll) do (
        echo %%a >>BOOTFN.OLD
)
另一个换成 BOOTFN.NEW

[ 本帖最后由 2010hook 于 2012-11-11 23:44 编辑 ]
作者: hhh333    时间: 2012-11-11 23:45
标题: 回复 #9 2010hook 的帖子
自己试一下就知道了,不解释
作者: hhh333    时间: 2012-11-11 23:47
标题: 回复 #7 2012ttt 的帖子
dism打包就是这样的,可以解包后重新用其他工具打包
作者: 2012n5413    时间: 2012-11-21 10:37
标题: 标题
头疼这个集成驱动
作者: 2012n5413    时间: 2012-11-21 22:30
标题: 回复 #1 hhh333 的帖子
提示系统找不到ADDDLL.txt
作者: aimengyucheng    时间: 2014-12-9 23:27
支持
作者: 8696648    时间: 2014-12-9 23:44
谢谢分享!!!
作者: x9tian    时间: 2014-12-10 11:03
本帖最后由 x9tian 于 2014-12-10 12:50 编辑
hhh333 发表于 2012-11-11 23:45
自己试一下就知道了,不解释


H3 兄,你有工环境 试下看行不行, 我是直截把你的再精练了些,不生存临时文件提搞效率,

  1. @Echo Off&COLOR 1F
  2. REM 原创by chiannet,修改by TCLSHX、H3 精简 x9tian
  3. REM bbs.wuyou.net
  4. setlocal EnableDelayedExpansion
  5. Echo.
  6. ECHO 本工具用来给W7PE增加驱动,各文件夹及文件意义如下:
  7. ECHO   w7pe文件夹----w7pe.wim之挂载目标
  8. ECHO   bot文件夹-----boot.wim之挂载目标
  9. ECHO   wim文件夹-----boot.wim w7pe.wim等WIM文件存放处
  10. ECHO   drv文件夹-----欲添加的驱动文件存放处
  11. Echo.
  12. ECHO 请按以上要求将WIM文件和驱动文件准备好(以上位于根或子文件夹均可)!
  13. ECHO 本批处理必须要在安装了Windows AIK(KB3AIK_CN.ISO)的环境中运行!
  14. Echo.
  15. ECHO 如果已经作好上述准备工作,按任意键继续......
  16. pause>nul
  17. Echo.
  18. ECHO 第1步:检查用于挂载的WIM文件......
  19. Echo.
  20. If not Exist wim\W7PE.WIM (
  21. echo.没有 W7PE.WIM镜像文件!
  22. If not Exist wim\boot.wim echo 没有Win7原版boot.wim镜像文件!
  23. PING -N 5 127.0.1 >NUL 2>NUL
  24. EXIT
  25. )


  26. Echo.
  27. ECHO 第2步:挂载WIM镜像......
  28. Echo.
  29. If Exist w7pe RD w7pe /S /Q>NUL 2>NUL
  30. If Exist bot RD bot /S /Q>NUL 2>NUL
  31. md w7pe
  32. md bot
  33. Dism /Mount-Wim /WimFile:wim\W7PE.WIM /index:1 /MountDir:%CD%\w7pe
  34. Dism /Mount-Wim /WimFile:wim\boot.wim /index:1 /MountDir:%CD%\bot

  35. for /f "tokens=*" %%i in ('dir /a-d /b bot\windows\system32\*.dll') do set "%%i=_"

  36. ECHO .
  37. ECHO 第3步:集成驱动文件......
  38. ECHO .
  39. REM 将w7pe中驱动有关文件移到bot中
  40. del \\?\\%cd:~2%windows\inf\*.* \\?\\%cd:~2%windows\system32\drivers\*.*  \\?\\%cd:~2%windows\system32\DriverStore\*.* /a /f  /s /q 2>NUL
  41. move w7pe\windows\inf bot\windows\
  42. move w7pe\windows\system32\drivers bot\windows\system32\
  43. move w7pe\windows\system32\config bot\windows\system32\
  44. move w7pe\windows\system32\DriverStore bot\windows\system32\
  45. REM 集成驱动
  46. Dism /image:bot /Add-Driver /driver:"DRV" /recurse /ForceUnsigned  
  47. REM 将已经集成好的位于bot中的原w7pe中驱动有关文件移回w7pe中
  48. move "bot\windows\inf" "w7pe\windows"
  49. move "bot\windows\system32\config" "w7pe\windows\system32"
  50. move "bot\windows\system32\drivers" "w7pe\windows\system32"
  51. move "bot\windows\system32\DriverStore" "w7pe\windows\system32"
  52. del "w7pe\windows\system32\*.pnf" /s /q
  53. del "w7pe\windows\system32\config\*.log?" /s /q /a:h
  54. del "w7pe\windows\inf\*.log" /q
  55. del "w7pe\windows\system32\config\*.blf" /s /q /a:h
  56. del "w7pe\windows\system32\config\*.regtrans-ms" /s /q /a:h
  57. del "w7pe\Windows\System32\DriverStore\*.1" /q
  58. ECHO .
  59. ECHO 第4步:更新DLL文件......
  60. ECHO .
  61. ECHO .  
  62. REM 比较文件列表 复制差异文件......

  63. for /f "delims=" %%a in ('dir /a-d /b bot\windows\system32\*.dll') do (
  64.         set /a num+=1
  65.         if not defined %%a copy /y "bot\windows\system32\%%a" "w7pe\windows\system32"
  66. )


  67. ECHO .  
  68. ECHO 第5步:更新增加 %num% 个 DLL已经完成,按任意键写入wim\w7pe.wim并卸挂boot......
  69. pause>nul
  70. Dism /unmount-Wim /MountDir:"%CD%\w7pe" /Commit
  71. Dism /unmount-Wim /MountDir:"%CD%\bot" /discard

复制代码





欢迎光临 无忧启动论坛 (http://bbs.wuyou.net/) Powered by Discuz! X3.3