无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站投放广告、加入VIP会员,请联系 微信:wuyouceo
查看: 34455|回复: 53
打印 上一主题 下一主题

[已解决] 能不能用批处理添加wim启动项

  [复制链接]
跳转到指定楼层
1#
发表于 2018-4-5 10:46:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 807979023 于 2019-3-6 17:10 编辑

图中用bootice添加的wim启动项,pe启动成功。
请问能不能用批处理添加这个启动项?

1.jpg (103.92 KB, 下载次数: 299)

1.jpg
2#
发表于 2018-4-5 11:06:21 | 只看该作者
可以.......

不过俺记不住命令.......

难得折腾......
回复

使用道具 举报

3#
发表于 2018-4-5 11:10:22 | 只看该作者

可以.......

不过俺记懒得编写.......

懒得折腾......

评分

参与人数 1无忧币 +5 收起 理由
q8155128 + 5 很给力! 下次记得完完整整抄俺的.....

查看全部评分

回复

使用道具 举报

4#
发表于 2018-4-5 11:11:17 | 只看该作者
批处理最重要的功能在于批量,如果你只改一两次,编个批处理没有意义。。。
回复

使用道具 举报

5#
发表于 2018-4-5 11:13:34 | 只看该作者
可以是可以,但是分清哪项,别选错了,脑袋 大了。
回复

使用道具 举报

6#
发表于 2018-4-5 12:56:51 | 只看该作者
可以,我写了个查找当前目录下的wim文件添加到启动菜单,win7下添加测试成功,10貌似没成功,所以搁置着

点评

10的好像得先转成传统菜单吧。  发表于 2018-4-5 13:57
能不能分享一下,感觉很适用,只要是指定名称的wim都行,我只会添加xp和grldr。  详情 回复 发表于 2018-4-5 13:21
回复

使用道具 举报

7#
 楼主| 发表于 2018-4-5 13:21:17 | 只看该作者
江南一根葱 发表于 2018-4-5 12:56
可以,我写了个查找当前目录下的wim文件添加到启动菜单,win7下添加测试成功,10貌似没成功,所以搁置着

能不能分享一下,感觉很适用,只要是指定名称的wim都行,我只会添加xp和grldr。

点评

我弄得有点复杂,可以编辑下用,把批处理wim文件和boot.sdi放在同个目录下,不管wim文件名 @echo off rem 硬盘安装Windows时,在现用系统上添加启动要安装系统的boot.wim :: 获取管理员权限运行批处理 >nul 2>  详情 回复 发表于 2018-4-5 20:27
指定WIM需要添加SDI文件的信息,这是个麻烦  详情 回复 发表于 2018-4-5 15:33
回复

使用道具 举报

8#
发表于 2018-4-5 15:33:18 | 只看该作者
807979023 发表于 2018-4-5 13:21
能不能分享一下,感觉很适用,只要是指定名称的wim都行,我只会添加xp和grldr。

指定WIM需要添加SDI文件的信息,这是个麻烦
回复

使用道具 举报

9#
发表于 2018-4-5 19:23:27 | 只看该作者
论坛以前qiqiqicool大神的 WimRamOS_制作与热备份工具  批处理里面有这个的


  1. @ECHO OFF
  2. set bcddir=/store %SystemDrive%\boot\BCD
  3. bcdedit %bcddir% /create {ramdiskoptions} /d "Ramdisk options"
  4. bcdedit %bcddir% /set {ramdiskoptions} ramdisksdidevice "boot"
  5. bcdedit %bcddir% /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
  6. for /f "delims={,} tokens=2" %%a in ('bcdedit %bcddir% -create /d "QiRAMW7" -application osloader  ') do set ID={%%a}
  7. bcdedit %bcddir% -set %ID% device ramdisk="[boot]\boot\QiRAMW7.wim,{ramdiskoptions}"
  8. bcdedit %bcddir% -set %ID% osdevice ramdisk="[boot]\boot\QiRAMW7.wim,{ramdiskoptions}"
  9. bcdedit %bcddir% -set %ID% path \windows\system32\winload.exe
  10. bcdedit %bcddir% -set %ID% locale zh-CN
  11. bcdedit %bcddir% -set %ID% systemroot \windows
  12. bcdedit %bcddir% -set %ID% detecthal no
  13. bcdedit %bcddir% -set %ID% winpe yes
  14. bcdedit %bcddir% -set %ID% testsigning yes
  15. bcdedit %bcddir% -set %ID% nointegritychecks yes
  16. bcdedit %bcddir% -set %ID% pae forceenable
  17. bcdedit %bcddir% -displayorder %ID% -addlast
  18. pause
复制代码

点评

这个我以前用过差不多的,win7好用 win10蓝屏,可能是缺 bcdedit /set %id1% ems no ems no 缺少这个参数,可能蓝屏,我以前遇到过  详情 回复 发表于 2020-5-20 08:32
谢谢分享!能够正确添加wim启动项,但启动时0F兰屏,以后再硏究。  详情 回复 发表于 2018-4-6 16:21
回复

使用道具 举报

10#
发表于 2018-4-5 20:27:14 | 只看该作者
本帖最后由 江南一根葱 于 2018-4-5 20:29 编辑
807979023 发表于 2018-4-5 13:21
能不能分享一下,感觉很适用,只要是指定名称的wim都行,我只会添加xp和grldr。


我弄得有点复杂,可以编辑下用,把批处理wim文件和boot.sdi放在同个目录下,不管wim文件名

@echo off
rem 硬盘安装Windows时,在现用系统上添加启动要安装系统的boot.wim
:: 获取管理员权限运行批处理
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs" 1>nul 2>nul
exit /b
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) 1>nul 2>nul
rem 判断biosefi
:::::::::::::::::::::::::::::::::::::::::::::::::::以上是获取管理员权限运行批处理::::::::::::::::::::::::::::::::::::
set wimdriver=%~d0
::echo pe =%1
::set lj=%1
:::echo pe=%lj:~3,100%
for /f "tokens=1-3 delims=\" %%a in ('dir /b /s %~dp0\*.wim') do (
set mulu=%%b
set wimname=%%c
)

echo 你要添加的pe为%wimname%位于%wimdriver%的%mulu%目录下!
echo 请确认!!!如有误请立即马上赶紧迅速关闭此黑咕隆咚的界面。。
echo 即将在你的系统盘添加“拆”字卷标!
label %systemdrive% 拆
echo 系统卷标已经改为"拆"!
bcdedit /enum {current}|find "system32\winload.exe">nul
if errorlevel 1 echo 当前模式为efi&&timeout 8&&set bootmode=2&&goto biosefi
if errorlevel 0 echo 当前模式为bios&&timeout 8&&set bootmode=1&&goto biosefi

rem 管理者模式启动仍保持工作路径为脚本所在目录
:biosefi
cd /d "%~dp0"

set TEST_OPT=1
::::::set /p WINISODRV=请输入安装文件所在盘符(例如:F):
set winisodrv=%wimdriver%
:BM_CHOOICE
echo 请选择启动模式:
echo       1.Legacy BIOS-based 模式(MBR引导)
echo       2.UEFI-based 模式(EFI引导)

:::set /p bootmode=
if "%bootmode%"=="1" goto :BCD_EDIT
if "%bootmode%"=="2" goto :BCD_EDIT
goto :BM_CHOOICE

:BCD_EDIT
if "%bootmode%"=="1" set bootmode=LEGACY
if "%bootmode%"=="2" set bootmode=EFI

rem 指定测试选项,创建用于测试的BCD文件
if not "%TEST_OPT%"=="" (
    rem 备份当前系统BCD
    bcdedit > ".\SYS_BCD.txt"
    bcdedit /export ".\SYS_BCD.bak"
    set TMP_BCD=.\TEST_BCD
)

if not "%TEST_OPT%"=="" (
    del /f /q %TMP_BCD%
    bcdedit /createstore %TMP_BCD%
    set TEST_OPT=/store %TMP_BCD%
)

if "bootmode"=="LEGACY" goto :BCD_LEGACY
if "bootmode"=="EFI" goto :BCD_EFI

:BCD_LEGACY

echo 创建安装程序 Ramdisk 选项
bcdedit %TEST_OPT% /create {ramdiskoptions} /d "Windows 10pe远程维护平台"
bcdedit %TEST_OPT% /set {ramdiskoptions} ramdisksdidevice partition=%wimdriver%
bcdedit %TEST_OPT% /set {ramdiskoptions} ramdisksdipath \%mulu%\boot.sdi
for /f "tokens=2 delims={}" %%i in ('bcdedit %TEST_OPT% /create /d "Windows Boot" /application osloader') do (
    set LOADER_GUID={%%i}
)
echo GUID:%LOADER_GUID%
if "%LOADER_GUID%"=="" goto :ErrorExit

echo 创建Windows 启动加载器
bcdedit %TEST_OPT% /set %LOADER_GUID% device ramdisk=[%wimdriver%]\%mulu%\%wimname%,{ramdiskoptions}
:::::::::bcdedit %TEST_OPT% /set %LOADER_GUID% path \windows\system32\winload.exe
bcdedit %TEST_OPT% /set %LOADER_GUID% description "Windows 10pe远程维护平台"
bcdedit %TEST_OPT% /set %LOADER_GUID% locale zh-CN
bcdedit %TEST_OPT% /set %LOADER_GUID% inherit {bootloadersettings}
bcdedit %TEST_OPT% /set %LOADER_GUID% osdevice ramdisk=[%wimdriver%]\%mulu%\%wimname%,{ramdiskoptions}
bcdedit %TEST_OPT% /set %LOADER_GUID% systemroot \windows
bcdedit %TEST_OPT% /set %LOADER_GUID% detecthal yes
bcdedit %TEST_OPT% /set %LOADER_GUID% winpe yes
bcdedit %TEST_OPT% /set %LOADER_GUID% ems no
bcdedit %TEST_OPT% /default %LOADER_GUID%

if "%TEST_OPT%"=="" (
    bcdedit %TEST_OPT% /displayorder %LOADER_GUID% /addlast
)
goto :BCD_END

:BCD_EFI

bcdedit -store S:\EFI\Microsoft\pe\BCD -create {bootmgr} /d "Boot Manager"
bcdedit -store S:\EFI\Microsoft\pe\BCD -create {globalsettings} /d "globalsettings"
bcdedit -store S:\EFI\Microsoft\pe\BCD -create {dbgsettings} /d "debugsettings"
bcdedit -store S:\EFI\Microsoft\pe\BCD -create {ramdiskoptions} /d "ramdiskoptions"
bcdedit -store S:\EFI\Microsoft\pe\BCD -create /d "Windows PE" -application osloader

bcdedit -store S:\EFI\Microsoft\pe\BCD /default <GUID from Windows PE store>

bcdedit -store S:\EFI\Microsoft\pe\BCD -set {Default} device ramdisk=[%wimdriver%]\%mulu%\%wimname%,{ramdiskoptions}
:::::::::::bcdedit -store S:\EFI\Microsoft\pe\BCD -set {Default} path \windows\system32\winload.efi
bcdedit -store S:\EFI\Microsoft\pe\BCD -set {Default} osdevice ramdisk=[%wimdriver%]\%mulu%\%wimname%,{ramdiskoptions}
bcdedit -store S:\EFI\Microsoft\pe\BCD -set {Default} systemroot \windows
bcdedit -store S:\EFI\Microsoft\pe\BCD -set {Default} winpe yes
bcdedit -store S:\EFI\Microsoft\pe\BCD -set {Default} nx optin
bcdedit -store S:\EFI\Microsoft\pe\BCD -set {Default} detecthal yes
bcdedit -store S:\EFI\Microsoft\pe\BCD -displayorder {Default} -addfirst

bcdedit -store S:\EFI\Microsoft\pe\BCD -set {dbgsettings} debugtype Serial
bcdedit -store S:\EFI\Microsoft\pe\BCD -set {dbgsettings} debugport 1
bcdedit -store S:\EFI\Microsoft\pe\BCD -set {dbgsettings} baudrate 115200

bcdedit -store S:\EFI\Microsoft\pe\BCD -set {ramdiskoptions} ramdisksdidevice partition=%wimdriver%
bcdedit -store S:\EFI\Microsoft\pe\BCD -set {ramdiskoptions} ramdisksdipath \%mulu%\boot.sdi

:BCD_END
if not "%TEST_OPT%"=="" (
    echo 确认添加的引导信息
    bcdedit %TEST_OPT% /enum all

    echo 确认信息无误后,按任意键将引导信息添加到系统启动菜单
   timeout 1

    set TEST_OPT=
    goto :BCD_EDIT
)
echo 添加引导信息到系统启动菜单成功
pause
exit


::::::::改自论坛和ramos群一批处理文件

点评

谢谢分享!批处理和boot.wim和BOOT.SDI 在任意目录中运行,添加错误,运行后兰屏 批处理和boot.wim和BOOT.SDI 拷贝到c盘boot中运行,添加成功,运行成功 代码复杂,只能简单改一下。  详情 回复 发表于 2018-4-6 16:22
回复

使用道具 举报

11#
 楼主| 发表于 2018-4-6 16:21:11 | 只看该作者
y7y007 发表于 2018-4-5 19:23
论坛以前qiqiqicool大神的 WimRamOS_制作与热备份工具  批处理里面有这个的

谢谢分享!能够正确添加wim启动项,但启动时0F兰屏,以后再硏究。
回复

使用道具 举报

12#
 楼主| 发表于 2018-4-6 16:22:55 | 只看该作者
江南一根葱 发表于 2018-4-5 20:27
我弄得有点复杂,可以编辑下用,把批处理wim文件和boot.sdi放在同个目录下,不管wim文件名

@echo of ...

谢谢分享!批处理和boot.wim和BOOT.SDI 在任意目录中运行,添加错误,运行后兰屏
               批处理和boot.wim和BOOT.SDI 拷贝到c盘boot中运行,添加成功,运行成功
              代码复杂,只能简单改一下。

点评

嗯,应该和目录名称有关,我试过C:\pe之类的短目录可以启动 还有和wim也有关 我这儿的wim用64位可以,32位蓝屏,跟一些参数有关吧,10下貌似没成功  详情 回复 发表于 2018-4-6 19:26
回复

使用道具 举报

13#
 楼主| 发表于 2018-4-6 17:54:48 | 只看该作者
终于按自已的要求修改成功,感谢楼上两位提供的代码。

添加wim菜单项.bat :
  1. @echo off
  2. color 1f

  3. set aa=0
  4. if /i %SystemDrive% == x: set aa=1
  5. ver|find "5.">nul && set aa=1
  6. if "%aa%" == "1" (
  7.    cls
  8.    echo.
  9.    echo.
  10.    echo     不能在xp或PE中运行 !
  11.    echo.
  12.    echo     按任意键退出...
  13.    pause >nul
  14.    exit
  15. )

  16. copy boot.wim c:\boot
  17. copy BOOT.SDI c:\boot

  18. :: 获取管理员权限运行批处理
  19. >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
  20. if '%errorlevel%' NEQ '0' (
  21. goto UACPrompt
  22. ) else ( goto gotAdmin )
  23. :UACPrompt
  24. echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
  25. echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
  26. "%temp%\getadmin.vbs" 1>nul 2>nul
  27. exit /b
  28. :gotAdmin
  29. if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" ) 1>nul 2>nul
  30. :: 以上是获取管理员权限运行批处理

  31. rem 管理者模式启动仍保持工作路径为脚本所在目录
  32. cd /d "%~dp0"

  33. echo 创建安装程序 Ramdisk 选项
  34. :: bcdedit /create {ramdiskoptions} /d "w8x32PE"
  35. bcdedit /set {ramdiskoptions} ramdisksdidevice partition=c:
  36. bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
  37. for /f "tokens=2 delims={}" %%i in ('bcdedit /create /d "Windows Boot" /application osloader') do (
  38.     set id={%%i}
  39. )

  40. echo 创建Windows 启动加载器
  41. bcdedit /set %id% device ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
  42. bcdedit /set %id% osdevice ramdisk=[c:]\boot\boot.wim,{ramdiskoptions}
  43. :: bcdedit /set %id% path \windows\system32\winload.exe
  44. bcdedit /set %id% description "w8x32PE"
  45. bcdedit /set %id% locale zh-CN
  46. bcdedit /set %id% inherit {bootloadersettings}
  47. bcdedit /set %id% systemroot \windows
  48. bcdedit /set %id% detecthal yes
  49. bcdedit /set %id% winpe yes
  50. bcdedit /set %id% ems no
  51. bcdedit /displayorder %id% /addlast

  52. echo 添加引导信息到系统启动菜单成功 !
  53. echo.
  54. echo 按任意键退出...
  55. pause >nul
复制代码

点评

感谢感谢!成功了  详情 回复 发表于 2019-3-6 11:33
回复

使用道具 举报

14#
发表于 2018-4-6 19:26:09 | 只看该作者
807979023 发表于 2018-4-6 16:22
谢谢分享!批处理和boot.wim和BOOT.SDI 在任意目录中运行,添加错误,运行后兰屏
               批处理 ...

嗯,应该和目录名称有关,我试过C:\pe之类的短目录可以启动  还有和wim也有关 我这儿的wim用64位可以,32位蓝屏,跟一些参数有关吧,10下貌似没成功
回复

使用道具 举报

15#
发表于 2019-3-6 11:33:55 | 只看该作者
807979023 发表于 2018-4-6 17:54
终于按自已的要求修改成功,感谢楼上两位提供的代码。

添加wim菜单项.bat :

感谢感谢!成功了

点评

上面这个批处理第1次运行正常,删除新增启动项后,再次运行批处理报错,但启动正常,好像bcd有记忆。 后来改进一下,用当时的秒和毫秒替换id1和id2的前4个值,相当于手工设置变化的id,不再报错。 id值可随变修改  详情 回复 发表于 2019-3-6 16:54
回复

使用道具 举报

16#
 楼主| 发表于 2019-3-6 16:54:11 | 只看该作者
inxiaoxi 发表于 2019-3-6 11:33
感谢感谢!成功了

上面这个批处理第1次运行正常,删除新增启动项后,再次运行批处理报错,但启动正常,好像bcd有记忆。
后来改进一下,用当时的秒和毫秒替换id1和id2的前4个值,相当于手工设置变化的id,不再报错。
id值可随变修改,甚至可改成:
set id1={%time:~6,2%%time:~9,2%8888-8888-8888-8888-168168168ffa}
set id2={%time:~6,2%%time:~9,2%8888-8888-8888-8888-168168168ffb}

添加wim菜单项.bat
  1. @echo off
  2. color 1f
  3. echo.
  4. echo.
  5. set aa=0
  6. if /i %SystemDrive% == x: set aa=1
  7. ver|find "5.">nul && set aa=1
  8. if "%aa%" == "1" (
  9.    cls
  10.    echo.
  11.    echo.
  12.    echo     不能在xp或PE中运行 !
  13.    echo.
  14.    echo     按任意键退出...
  15.    pause >nul
  16.    exit
  17. )
  18. set id1={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffa}
  19. set id2={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffb}
  20. bcdedit /create %id2% /d "w8x32PE" /device
  21. bcdedit /set %id2% ramdisksdidevice partition=c:
  22. bcdedit /set %id2% ramdisksdipath \boot\boot.sdi
  23. echo.
  24. bcdedit /create %id1% /d "w8x32PE" /application osloader
  25. bcdedit /set %id1% device ramdisk=[c:]\boot\BOOT.WIM,%id2%
  26. bcdedit /set %id1% osdevice ramdisk=[c:]\boot\BOOT.WIM,%id2%
  27. bcdedit /set %id1% path \windows\system32\boot\winload.exe
  28. bcdedit /set %id1% description w8x32PE
  29. bcdedit /set %id1% locale zh-CN
  30. bcdedit /set %id1% inherit {bootloadersettings}
  31. bcdedit /set %id1% systemroot \windows
  32. bcdedit /set %id1% detecthal Yes
  33. bcdedit /set %id1% winpe Yes
  34. bcdedit /set %id1% ems no
  35. bcdedit /displayorder %id1% /addlast
  36. echo.
  37. echo 按任意键退出...
  38. pause >nul
复制代码


2.jpg (56.21 KB, 下载次数: 279)

2.jpg

点评

一直很需要,太好了。这个才是修改好最终的批处理吧  发表于 2019-9-12 18:20

评分

参与人数 1无忧币 +5 收起 理由
879792799 + 5 很给力!

查看全部评分

回复

使用道具 举报

17#
发表于 2019-3-7 11:40:40 | 只看该作者
嗯嗯,这是个好办法!学习了
回复

使用道具 举报

18#
发表于 2019-3-7 11:48:02 | 只看该作者
木有研究过
回复

使用道具 举报

19#
发表于 2019-9-12 21:15:39 | 只看该作者
谢谢大神们的分享!实验成了。

依据16楼的代码小改一点:

addwim.cmd

@echo off
set aa=0
if /i %SystemDrive% == x: set aa=1
ver|find "5.">nul && set aa=1
if "%aa%" == "1" (
cls&echo 不能在PE、XP中运行
ping 127.1 -n 5 >nul 2>nul&&exit ||pause&exit
)
::
if exist %SystemDrive%\boot\Win7PE\id_1 (set/p id_1=<%SystemDrive%\boot\Win7PE\id_1 )
if exist %SystemDrive%\boot\Win7PE\id_2 (set/p id_2=<%SystemDrive%\boot\Win7PE\id_2 )
bcdedit /delete %id_1% /f >nul 2>nul
bcdedit /delete %id_2% /f >nul 2>nul
::
set id1={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffa}
set id2={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffb}
bcdedit /create %id2% /d "Win7_PE" /device
bcdedit /set %id2% ramdisksdidevice partition=%SystemDrive%
bcdedit /set %id2% ramdisksdipath \boot\Win7PE\Win7_PE.sdi
::
bcdedit /create %id1% /d "Win7_PE" /application osloader
bcdedit /set %id1% device ramdisk=[%SystemDrive%]\boot\Win7PE\Win7_PE.wim,%id2%
bcdedit /set %id1% osdevice ramdisk=[%SystemDrive%]\boot\Win7PE\Win7_PE.wim,%id2%
bcdedit /set %id1% path \windows\system32\boot\winload.exe
bcdedit /set %id1% description Win7_PE
bcdedit /set %id1% locale zh-CN
bcdedit /set %id1% inherit {bootloadersettings}
bcdedit /set %id1% systemroot \windows
bcdedit /set %id1% detecthal Yes
bcdedit /set %id1% winpe Yes
bcdedit /set %id1% ems no
bcdedit /displayorder %id1% /addlast
echo %id1%>%SystemDrive%\boot\Win7PE\id_1
echo %id2%>%SystemDrive%\boot\Win7PE\id_2
::
ping 127.1 -n 10 >nul 2>nul&&exit ||pause&exit

用winrar打成自解压缩包提示找不到bcdedit命令,查了下是因默认自解包执行批处理命令是32位环境。想了个办法:将addwim.cmd压缩成64位自解包;用批处理判断是否存在SysWOW64,存在运行addwim.exe不存在运行addwim.cmd 。再将所有文件打包成32位自解包,附件里面的Win7_PE.sdi、Win7_PE.wim是空文件。


copywimfiles.cmd
@echo off
md %SystemDrive%\boot\Win7PE
copy Win7_PE.wim %SystemDrive%\boot\Win7PE
copy Win7_PE.sdi %SystemDrive%\boot\Win7PE
if exist %windir%\SysWOW64 (start addwim.exe)else (start addwim.cmd)



添加wim菜单项.7z (141.03 KB, 下载次数: 90)


回复

使用道具 举报

20#
发表于 2019-9-13 12:09:22 | 只看该作者
本帖最后由 liu_zhenfeng 于 2019-9-13 13:53 编辑

20190913更新:临时文件方式传递wim、sdi文件名,生成删除启动项批处理。

wimPE硬盘安装模板.zip (176.44 KB, 下载次数: 100)


copywimfiles.cmd

@echo off
set aa=0
if /i %SystemDrive% == x: set aa=1
ver|find "5.">nul && set aa=1
if "%aa%" == "1" (cls&echo 不能在PE、XP中运行 &echo.&pause&exit)
::
for /f "delims=" %%i in ('dir/b *.wim')do echo %%~ni>"%temp%\wim"
for /f "delims=" %%i in ('dir/b *.sdi')do echo %%~ni>"%temp%\sdi"
set/p wim=<"%temp%\wim"
set/p sdi=<"%temp%\sdi"
::
md "%SystemDrive%\boot\%wim%"
copy "%wim%.wim" "%SystemDrive%\boot\%wim%"
del "%wim%.wim"
copy "%sdi%.sdi" "%SystemDrive%\boot\%wim%"
del "%sdi%.sdi"
if exist %windir%\SysWOW64 (start addwim.exe)else (start addwim.cmd)
if exist %windir%\SysWOW64 (del addwim.cmd)else (del addwim.exe)
echo.&echo.&echo 即将关闭窗口&timeout /t 15
del addwim.exe >nul 2>nul
del addwim.cmd >nul 2>nul
del %0




addwim.cmd

@echo off
set aa=0
if /i %SystemDrive% == x: set aa=1
ver|find "5.">nul && set aa=1
if "%aa%" == "1" (cls&echo 不能在PE、XP中运行 &echo.&pause&exit)
::
set/p wim=<"%temp%\wim"
del "%temp%\wim"
set/p sdi=<"%temp%\sdi"
del "%temp%\sdi"
::
if exist "%SystemDrive%\boot\%wim%\id_1" (set/p id_1=<"%SystemDrive%\boot\%wim%\id_1" )
if exist "%SystemDrive%\boot\%wim%\id_2" (set/p id_2=<"%SystemDrive%\boot\%wim%\id_2" )
bcdedit /delete %id_1% /f >nul 2>nul
bcdedit /delete %id_2% /f >nul 2>nul
::
set id1={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffa}
set id2={%time:~6,2%%time:~9,2%ffff-8d96-11de-8e71-fffffffffffb}
bcdedit /create %id2% /d "%wim%" /device
bcdedit /set %id2% ramdisksdidevice partition=%SystemDrive%
bcdedit /set %id2% ramdisksdipath "\boot\%wim%\%sdi%.sdi"
::
bcdedit /create %id1% /d "%wim%" /application osloader
bcdedit /set %id1% device ramdisk="[%SystemDrive%]\boot\%wim%\%wim%.wim",%id2%
bcdedit /set %id1% osdevice ramdisk="[%SystemDrive%]\boot\%wim%\%wim%.wim",%id2%
bcdedit /set %id1% path \windows\system32\boot\winload.exe
bcdedit /set %id1% description "%wim%"
bcdedit /set %id1% locale zh-CN
bcdedit /set %id1% inherit {bootloadersettings}
bcdedit /set %id1% systemroot \windows
bcdedit /set %id1% detecthal Yes
bcdedit /set %id1% winpe Yes
bcdedit /set %id1% ems no
bcdedit /displayorder %id1% /addlast
echo %id1%>"%SystemDrive%\boot\%wim%\id_1"
echo %id2%>"%SystemDrive%\boot\%wim%\id_2"
::
echo @echo off >"%SystemDrive%\boot\DEL_%wim%.cmd"
echo bcdedit /delete %id1% >>"%SystemDrive%\boot\DEL_%wim%.cmd"
echo bcdedit /delete %id2% >>"%SystemDrive%\boot\DEL_%wim%.cmd"
echo rd /s /q "%SystemDrive%\boot\%wim%" >>"%SystemDrive%\boot\DEL_%wim%.cmd"
echo del "%SystemDrive%\boot\DEL_%wim%.cmd" >>"%SystemDrive%\boot\DEL_%wim%.cmd"
::
echo.&echo.&echo 即将关闭窗口&timeout /t 10 &del %0 &exit

回复

使用道具 举报

21#
发表于 2019-9-14 23:42:41 | 只看该作者
20190914更新:临时文件方式传递菜单标题名,用winrar自解包功能加了个是否安装提示。

http://bbs.wuyou.net/forum.php?mod=viewthread&tid=416395
回复

使用道具 举报

22#
发表于 2019-12-22 01:05:11 | 只看该作者
还是无忧论坛人才多,找了好久的批处理添加WIM,自己都试着写也还没搞定,这篇真是雪中送炭,好好研究下,用bootice每次操作都要花3分钟时间设置,好累
回复

使用道具 举报

23#
发表于 2020-4-5 20:39:38 | 只看该作者
传统模式用这个,右击用管理员身份运行。



@echo OFF
@ECHO OFF
MD %SYSTEMDRIVE%\WinPE
copy /y "%~dp0BOOT.WIM" C:\WinPE\
copy /y "%~dp0BOOT.SDI" C:\WinPE\


bcdedit /delete {ffffffff-3600-11de-8e71-ffffffffffff} /cleanup
bcdedit /delete {ffffffff-3600-11de-8e71-fffffffffffe} /cleanup
bcdedit /create {ffffffff-3600-11de-8e71-ffffffffffff} /d "WinPE(查杀木马时可选择此项)" /device
bcdedit /create  {ffffffff-3600-11de-8e71-fffffffffffe} /d "360winpe" /application osloader
bcdedit /set {ffffffff-3600-11de-8e71-ffffffffffff} ramdisksdidevice partition=C:
bcdedit /set {ffffffff-3600-11de-8e71-ffffffffffff} ramdisksdipath \WinPE\boot.sdi
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} device                  ramdisk=[C:]\WinPE\boot.wim,{ffffffff-3600-11de-8e71-ffffffffffff}
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} path                    \windows\system32\boot\winload.exe       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} description             WinPE(查杀木马时可选择此项)               
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} locale                  en-US       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} inherit                 {bootloadersettings}               
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} osdevice                ramdisk=[C:]\WinPE\boot.wim,{ffffffff-3600-11de-8e71-ffffffffffff}       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} systemroot              \windows       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} detecthal               Yes       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} winpe                   Yes       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} ems                     no       
bcdedit /displayorder {ffffffff-3600-11de-8e71-fffffffffffe} /addlast
pause


EFI模式用下面这个,还是用管理员身份运行

@ECHO OFF
@ECHO OFF
MD %SYSTEMDRIVE%\WinPE
copy /y "%~dp0BOOT.WIM" C:\WinPE\
copy /y "%~dp0BOOT.SDI" C:\WinPE\


bcdedit /delete {ffffffff-3600-11de-8e71-ffffffffffff} /cleanup
bcdedit /delete {ffffffff-3600-11de-8e71-fffffffffffe} /cleanup
bcdedit /create {ffffffff-3600-11de-8e71-ffffffffffff} /d "WinPE(查杀木马时可选择此项)" /device
bcdedit /create  {ffffffff-3600-11de-8e71-fffffffffffe} /d "360winpe" /application osloader
bcdedit /set {ffffffff-3600-11de-8e71-ffffffffffff} ramdisksdidevice partition=C:
bcdedit /set {ffffffff-3600-11de-8e71-ffffffffffff} ramdisksdipath \WinPE\boot.sdi
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} device                  ramdisk=[C:]\WinPE\boot.wim,{ffffffff-3600-11de-8e71-ffffffffffff}
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} path                    \windows\system32\boot\winload.efi       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} description             WinPE(查杀木马时可选择此项)               
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} locale                  en-US       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} inherit                 {bootloadersettings}               
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} osdevice                ramdisk=[C:]\WinPE\boot.wim,{ffffffff-3600-11de-8e71-ffffffffffff}       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} systemroot              \windows       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} detecthal               Yes       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} winpe                   Yes       
bcdedit /set  {ffffffff-3600-11de-8e71-fffffffffffe} ems                     no       
bcdedit /displayorder {ffffffff-3600-11de-8e71-fffffffffffe} /addlast
pause
回复

使用道具 举报

24#
发表于 2020-4-5 22:54:14 来自手机 | 只看该作者
马克一下,没搞过efi的
回复

使用道具 举报

25#
发表于 2020-4-8 22:00:35 | 只看该作者
可以
回复

使用道具 举报

26#
发表于 2020-4-9 20:52:32 | 只看该作者

感谢分享
回复

使用道具 举报

27#
发表于 2020-4-25 13:40:38 | 只看该作者
能用批处理添加wim启动项
回复

使用道具 举报

28#
发表于 2020-5-19 11:33:46 | 只看该作者
好东西,谢谢!
回复

使用道具 举报

29#
 楼主| 发表于 2020-5-19 17:07:30 | 只看该作者
小改一下,BOOT.WIM和BOOT.SDI 可以放入任意分区 任意文件夹。
id值{20200519-1646-5277-eeee-fffffffffffa} 表示该启动项添加日期是20年5月19日16点46分52.77秒。
id值绝对不会重复。

  1. @echo off&color 1f&echo.&echo.
  2. set aa=0
  3. if /i %SystemDrive% == x: set aa=1
  4. ver|find "5.">nul && set aa=1
  5. if "%aa%" == "1" cls&echo.&echo.&echo 不能在PE或XP中运行!&echo.&echo 按任意键退出...&pause>nul&exit
  6. set time1=%time%
  7. if "%time1:~0,1%"==" " set time1=0%time1:~1%
  8. set id1={%date:~0,4%%date:~5,2%%date:~8,2%-%time1:~0,2%%time1:~3,2%-%time1:~6,2%%time1:~9,2%-eeee-fffffffffffa}
  9. set id2={%date:~0,4%%date:~5,2%%date:~8,2%-%time1:~0,2%%time1:~3,2%-%time1:~6,2%%time1:~9,2%-eeee-fffffffffffb}
  10. echo.
  11. bcdedit /create %id2% /d "w8x32PE" /device
  12. bcdedit /set %id2% ramdisksdidevice partition=e:
  13. bcdedit /set %id2% ramdisksdipath \00e\boot.sdi
  14. echo.
  15. bcdedit /create %id1% /d "w8x32PE" /application osloader
  16. bcdedit /set %id1% device ramdisk=[e:]\00e\BOOT.WIM,%id2%
  17. bcdedit /set %id1% osdevice ramdisk=[e:]\00e\BOOT.WIM,%id2%
  18. bcdedit /set %id1% path \windows\system32\boot\winload.exe
  19. bcdedit /set %id1% description w8x32PE
  20. bcdedit /set %id1% locale zh-CN
  21. bcdedit /set %id1% inherit {bootloadersettings}
  22. bcdedit /set %id1% systemroot \windows
  23. bcdedit /set %id1% detecthal Yes
  24. bcdedit /set %id1% winpe Yes
  25. bcdedit /set %id1% ems no
  26. bcdedit /displayorder %id1% /addlast
  27. echo.
  28. echo 按任意键退出...
  29. pause >nul
复制代码


3.jpg (89.2 KB, 下载次数: 240)

3.jpg

点评

你确定boot.sdi放在任意分区,真的在所有条件下都能启动?  详情 回复 发表于 2020-5-20 07:25
回复

使用道具 举报

30#
发表于 2020-5-20 07:25:08 来自手机 | 只看该作者
807979023 发表于 2020-5-19 17:07
小改一下,BOOT.WIM和BOOT.SDI 可以放入任意分区 任意文件夹。
id值{20200519-1646-5277-eeee-fffffffffff ...

        你确定boot.sdi放在任意分区,真的在所有条件下都能启动?

点评

简单条件下测试通过,复杂条件下未测试,不知道,可能不行。  详情 回复 发表于 2020-5-20 10:04
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-11-23 18:51

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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