无忧启动论坛

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

[分享] 添加pe到硬盘

    [复制链接]
跳转到指定楼层
1#
发表于 2025-3-10 13:49:10 | 只看该作者 |只看大图 回帖奖励 |正序浏览 |阅读模式
分享一个批处理:添加pe到硬盘

  1. @echo off
  2. title 添加PE到硬盘
  3. setlocal ENABLEDELAYEDEXPANSION
  4. if %1.==. (set src=pe\boot.wim) else set src=%1
  5. set drv=c
  6. pushd %~dp0
  7. :do
  8. cls
  9. echo.
  10. echo 即将把 %src% 复制到 %drv%:\pe.wim 并添加引导
  11. echo.
  12. echo 1.确认执行 2.修改目标盘符 3.退出
  13. echo.
  14. set n=1
  15. set /p n=请输入选项并回车:
  16. goto:do%n%

  17. :do2
  18. echo.&set /p drv=请输入PE添加到的盘符:
  19. goto:do

  20. :do1
  21. if exist s: mountvol s: /d
  22. mountvol s: /s && (call :uefi) || call :bios
  23. call :chksdi
  24. call :chkwim
  25. call :bcd
  26. echo 请按任意键结束...
  27. pause>nul
  28. exit

  29. :uefi
  30.   set bd=s
  31.   set sdi=\EFI\boot.sdi
  32.   exit /b
  33. :bios
  34.   set bd=c
  35.   set sdi=\boot\boot.sdi
  36.   exit /b
  37. :chksdi
  38. if not exist %bd%:%sdi% (
  39.     if exist C:\Windows\Boot\DVD\EFI\boot.sdi (
  40.         set sdi1=C:\Windows\Boot\DVD\EFI\boot.sdi
  41.     ) else (
  42.         if exist pe\boot.sdi (
  43.             set sdi1=pe\boot.sdi
  44.         ) else (
  45.             echo.&set /p sdi1=请将boot.sdi文件拖放到本窗口后按回车键:
  46.         )
  47.     )
  48.     copy !sdi1! %bd%:%sdi%
  49. )
  50. exit /b

  51. :chkwim
  52. if not exist %drv%:\pe.wim (
  53.     if exist %src% (
  54.         set wim=%src%
  55.     ) else (
  56.         echo.&set /p wim=请将pe的wim文件拖放到本窗口后按回车键:
  57.     )
  58.     echo 复制 !wim! 到 %drv%:\pe.wim
  59.     copy !wim! %drv%:\pe.wim
  60. )
  61. exit /b

  62. :bcd
  63. if not exist %drv%:\pe.wim goto:error
  64. if not exist %bd%:%sdi% goto:error
  65. echo 添加菜单引导项
  66. set desc="Win PE"
  67. set wim=[%drv%:]\pe.wim
  68. for /f "tokens=2 delims={}" %%a in ('bcdedit /create /application osloader') do set id={%%a}
  69. bcdedit /set %id% description %desc%
  70. bcdedit /set %id% device ramdisk="%wim%,{ramdiskoptions}"
  71. bcdedit /set %id% osdevice ramdisk="%wim%,{ramdiskoptions}"
  72. bcdedit /set %id% systemroot \Windows
  73. bcdedit /set %id% detecthal 1
  74. bcdedit /set %id% winpe 1
  75. bcdedit /displayorder %id% /addlast
  76. bcdedit /timeout 3
  77. bcdedit /set {bootmgr} displaybootmenu 1
  78. bcdedit /set {bootmgr} nointegritychecks 1
  79. bcdedit /create {ramdiskoptions}
  80. bcdedit /set {ramdiskoptions} ramdisksdidevice boot
  81. bcdedit /set {ramdiskoptions} ramdisksdipath %sdi%
  82. exit /b

  83. :error
  84. ::cls
  85. echo.
  86. echo 复制文件失败,请手动复制文件 pe.wim 和 boot.sdi 到 %drv%:\pe.wim 和 %bd%:%sdi% 后按任意键继续...
  87. pause>nul
  88. goto:bcd
复制代码


添加PE到硬盘.7z (1.05 KB, 下载次数: 160)
42#
发表于 2025-5-30 08:47:45 | 只看该作者
感谢分享
回复

使用道具 举报

41#
发表于 2025-5-25 10:01:12 | 只看该作者

谢谢共享!
回复

使用道具 举报

40#
发表于 2025-5-23 16:10:31 | 只看该作者
感谢分享!
回复

使用道具 举报

39#
发表于 2025-4-6 14:19:50 | 只看该作者
本帖最后由 oym2016 于 2025-4-6 14:22 编辑

在楼主的基础上  经deepseek_r 检测

  @echo off
pushd %~dp0
title 添加PE VHD到硬盘
setlocal ENABLEDELAYEDEXPANSION

set "src=%~1"
if "%~1"=="" (echo.&set /p "src=请将PE的WIM/VHDX文件拖放到本窗口后按回车键:")
set "src=%src:"=%"
for %%a in ("%src%") do (set "fn=%%~na"&set "fx=%%~xa")

:process_drv
cls&echo.
:: 查找可用驱动器号
set "pan="
for %%i in (Q R S T U V W X Y Z) do (if not exist %%i:\ set "pan=%%i"&goto :mount_vol)
        
:mount_vol
if defined pan (
    mountvol !pan!: /s >nul 2>&1 && (
    echo "系统UEFI启动.使用ESP分区efi\microsoft\boot\BCD."
    set "bd=!pan!"
    set "sdi=\EFI\boot.sdi"
    set "ext=efi"
    set "is_efi=1"
    if /i "%fx%"==".vhdx" goto process_vhd
    echo.&set /p "drv=请输入PE添加到的盘符(回车ESP分区; C D E F... ):"
         )
) else (
    echo "非UEFI启动.使用C:盘BCD."
    set bd=C
    set "sdi=\boot\boot.sdi"
    set "ext=exe"
    set "is_efi=0"
    if /i "%fx%"==".vhdx"  goto process_vhd
)

:chksdi
if not exist "%bd%:%sdi%" (
    if exist "C:\Windows\Boot\DVD\EFI\boot.sdi" (
        set "sdi1=C:\Windows\Boot\DVD\EFI\boot.sdi"
    ) else if exist "%~dp0boot.sdi" (
        set "sdi1=%~dp0boot.sdi"
    ) else (
        echo.
        set /p "sdi1=请将boot.sdi文件拖放到本窗口后按回车键:"
        set "sdi1=!sdi1:"=!"
    )
    if exist "!sdi1!" copy "!sdi1!" "%bd%:%sdi%" >nul
)

:chkwim
if not "!drv!"=="" (
if not exist "%drv%:\sources\%fn%%fx%" (
      if not exist "%drv%:\sources" md "%drv%:\sources"
         if exist "%src%" (
           copy "%src%" "%drv%:\sources" >nul
         )   
   )
)else (     
if not exist "%bd%:\sources\%fn%%fx%" (
    if not exist "%bd%:\sources" md "%bd%:\sources"
        if exist "%src%" (
        copy "%src%" "%bd%:\sources" >nul
       )
   )
)
:bcd
if defined pan mountvol !pan!: /d >nul 2>&1
for /f "tokens=1*" %%c in ('Dism.exe /Get-ImageInfo /ImageFile:"%src%" /Index:1 ^| findstr /i "名称:"') do (
    set "desc=%%d"
)
if "!desc!"=="" set "desc=Windows PE_%fn%%fx%"
call :osid

if !is_efi! equ 1 (
    set "wim=[boot]\sources\%fn%%fx%"
    if exist !drv!: set  "wim=[%drv%:]\sources\%fn%%fx%"
    ) else (
    set "wim=[%bd%:]\sources\%fn%%fx%"
)

echo BCD_%fn%%fx%:
echo.
echo 系统存储:SystemBCD
echo 设备文件:!wim!
echo GUID    :!guid!
echo 菜单标题:!desc!
echo 启动文件:\Windows\system32\boot\winload.!ext!
echo.
pause

bcdedit /enum {ramdiskoptions} | findstr /i "boot.sdi" >nul || (
    bcdedit /create {ramdiskoptions} >nul
    bcdedit /set {ramdiskoptions} ramdisksdidevice boot >nul
    bcdedit /set {ramdiskoptions} ramdisksdipath "%sdi%" >nul
)

bcdedit /set !guid! device "ramdisk=!wim!,{ramdiskoptions}"
bcdedit /set !guid! osdevice "ramdisk=!wim!,{ramdiskoptions}"
bcdedit /set !guid! path "\Windows\system32\boot\winload.!ext!"
bcdedit /set !guid! systemroot \Windows >nul
bcdedit /set !guid! detecthal 1 >nul
bcdedit /set !guid! winpe 1 >nul
bcdedit /displayorder !guid! /addlast >nul
bcdedit /timeout 3 >nul
bcdedit /set {bootmgr} displaybootmenu 1 >nul
bcdedit /set {bootmgr} nointegritychecks 1 >nul

:end
echo 请按任意键结束...
pause >nul
if defined pan mountvol !pan!: /d >nul 2>&1
exit

:process_vhd
if defined pan mountvol !pan!: /d >nul 2>&1
set "vhd_path=%src%"
set "desc=Windows_%fn%%fx%"
call :osid
echo.
echo BCD_%fn%%fx%:
echo.
echo 系统存储:SystemBCD
echo 设备文件:"[!vhd_path:~0,2!]!vhd_path:~2!"
echo GUID     :!guid!
echo 菜单标题:!desc!
echo 启动文件:\Windows\system32\winload.!ext!
echo.
pause

bcdedit /set !guid! device "vhd=[!vhd_path:~0,2!]!vhd_path:~2!"
bcdedit /set !guid! osdevice "vhd=[!vhd_path:~0,2!]!vhd_path:~2!"
bcdedit /set !guid! path "\Windows\system32\winload.!ext!" >nul
bcdedit /set !guid! systemroot \Windows >nul
bcdedit /displayorder !guid! /addlast >nul
bcdedit /timeout 5 >nul
echo VHD启动项 [!guid!] 已创建
pause
exit

:osid
for /f "tokens=2 delims={}" %%a in ('bcdedit /create /d "%desc%" /application osloader 2^>nul') do (
    set "guid={%%a}"
    set "guid=!guid:~0,38!"
)
exit /b
回复

使用道具 举报

38#
发表于 2025-4-5 01:31:00 | 只看该作者
多谢,先用先得!
回复

使用道具 举报

37#
发表于 2025-4-4 15:27:19 | 只看该作者
试试看看
回复

使用道具 举报

36#
 楼主| 发表于 2025-3-18 16:08:08 | 只看该作者
本帖最后由 hilsonma 于 2025-3-18 17:05 编辑
qq8899399 发表于 2025-3-18 13:59
加一个卸载命令就好了。能加上不。楼主。

刚才回复错了,跟U盘双启模板搞混了。

卸载只能手工操作,因为添加启动项的时候没有做记录,批处理不好判断哪个项是之前添加的,所以做不到自动卸载。
回复

使用道具 举报

35#
发表于 2025-3-18 13:59:21 | 只看该作者
加一个卸载命令就好了。能加上不。楼主。

点评

没有这个必要。因为我没有设计备份的操作,没有备份原先的启动文件,卸载我这模板后会丢失启动文件启动不了。 如果你事先有做备份,那么只要格式化fat32分区或者把该分区全部文件删除,再把备份放回去就好了。  详情 回复 发表于 2025-3-18 16:08
回复

使用道具 举报

34#
发表于 2025-3-14 20:08:33 | 只看该作者
回复

使用道具 举报

33#
发表于 2025-3-14 16:38:10 | 只看该作者
需要管理员权限。
回复

使用道具 举报

32#
发表于 2025-3-14 13:37:56 | 只看该作者
学到了
回复

使用道具 举报

31#
发表于 2025-3-13 17:01:42 | 只看该作者
谢谢分享,回头试试
回复

使用道具 举报

30#
发表于 2025-3-13 15:07:34 来自手机 | 只看该作者
谢谢分享
回复

使用道具 举报

29#
 楼主| 发表于 2025-3-13 11:05:39 | 只看该作者
本帖最后由 hilsonma 于 2025-3-13 11:06 编辑

将想要添加的pe的wim文件拖放到批处理上来执行
批处理会将这个wim文件复制成 c:\pe.wim 并添加启动项到bcd菜单

默认第1个选项,直接按Enter键不需要输入1就会执行
如果不想放到c盘而想放到其他盘,就选2来修改盘符放到其他盘
回复

使用道具 举报

28#
发表于 2025-3-12 16:03:19 | 只看该作者
感谢分享
回复

使用道具 举报

27#
发表于 2025-3-12 15:47:06 | 只看该作者
给力!感谢楼主分享
回复

使用道具 举报

26#
发表于 2025-3-11 08:50:25 | 只看该作者
谢谢楼主分享
回复

使用道具 举报

25#
发表于 2025-3-11 08:22:23 | 只看该作者
非常不错,十分感谢分享!


回复

使用道具 举报

24#
发表于 2025-3-10 22:01:26 | 只看该作者
必要时很有用。
回复

使用道具 举报

23#
发表于 2025-3-10 20:35:56 | 只看该作者
这贴也要收藏,感谢分享。
回复

使用道具 举报

22#
发表于 2025-3-10 20:09:43 | 只看该作者
微PE那个安装好,可以设置密码,我都是安装了,再替换PE文件
回复

使用道具 举报

21#
 楼主| 发表于 2025-3-10 19:37:45 | 只看该作者
少马石 发表于 2025-3-10 18:16
大佬能不能做个gui界面的,方便操作

我不懂做gui界面。
回复

使用道具 举报

20#
发表于 2025-3-10 19:10:25 | 只看该作者
谢谢分享!!
回复

使用道具 举报

19#
发表于 2025-3-10 18:16:49 | 只看该作者
大佬能不能做个gui界面的,方便操作
回复

使用道具 举报

18#
发表于 2025-3-10 18:16:22 | 只看该作者
WIT挂pe挺方便的。
回复

使用道具 举报

17#
发表于 2025-3-10 17:31:46 | 只看该作者
本帖最后由 jnwin123 于 2025-3-10 17:32 编辑

用工具右右键直接安装PE到本地硬盘更简单
回复

使用道具 举报

16#
发表于 2025-3-10 17:23:23 | 只看该作者
感谢分享!!!
回复

使用道具 举报

15#
发表于 2025-3-10 17:20:43 | 只看该作者

谢谢分享!!!
回复

使用道具 举报

14#
发表于 2025-3-10 17:05:48 | 只看该作者
收下了,谢谢大佬分享!
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2025-6-17 14:28

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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