无忧启动论坛

标题: 添加WIM启动项的BAT源码 [打印本页]

作者: mr8246    时间: 2024-10-27 09:55
标题: 添加WIM启动项的BAT源码
本帖最后由 mr8246 于 2024-10-27 16:23 编辑

@echo off
bcdedit /timeout 10
::等待时间10秒
for /f "delims={,} tokens=2" %%a in ('bcdedit /create /d "PE" -application osloader') do set Guid={%%a}
::用bdedit创建启动项,导出GUID序列号,赋值给变量Guid
bcdedit /set %Guid% device ramdisk="[d:]\boot\boot.wim,{ramdiskoptions}"
::启动设备
bcdedit /set %Guid% osdevice ramdisk="[d:]\boot\boot.wim,{ramdiskoptions}"
::系统启动设备(设置和启动设备一样就行)
bcdedit /set %Guid% locale zh-CN
::区域设置中国
bcdedit /set %Guid% systemroot \windows
::系统根目录
bcdedit /set %Guid% detecthal Yes
::检测HAL(硬件抽象层),如Yes(一般用于PE)
bcdedit /set %Guid% winpe Yes
::是否windows PE,如Yes(只有是PE时才需要此参数)
bcdedit /displayorder %Guid% -addlast
::设置启动项显示顺序为最后
bcdedit /create {ramdiskoptions}
::创建RAM磁盘选项
bcdedit /set {ramdiskoptions} ramdisksdidevice partition=d:
::设置RAM磁盘SDI设备
bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
::设置RAM磁盘SDI路径




::绿色的,是需要用户自定义的,其它的随意
::紫色的,是注释,不删除也行,有的系统需要点右键,以管理员身份运行

作者: mrzhonghb    时间: 2024-10-27 10:14
没这么简单,需要先判断启动模式,这个批处理只是legacy启动,现在大多数电脑只支持UEFI启动,楼主继续完善。
作者: yyz2191958    时间: 2024-10-27 10:41
没有看到   绿色的
作者: mr8246    时间: 2024-10-27 11:32
mrzhonghb 发表于 2024-10-27 10:14
没这么简单,需要先判断启动模式,这个批处理只是legacy启动,现在大多数电脑只支持UEFI启动,楼主继续完善 ...

主要是自用比较方便,efi启动的把启动文件改下就行
作者: szwp    时间: 2024-10-27 11:43
mr8246 发表于 2024-10-27 11:32
主要是自用比较方便,efi启动的把启动文件改下就行

此行删了即可
作者: szwp    时间: 2024-10-27 11:44
mrzhonghb 发表于 2024-10-27 10:14
没这么简单,需要先判断启动模式,这个批处理只是legacy启动,现在大多数电脑只支持UEFI启动,楼主继续完善 ...

无需判断,将winload这行删了即可双启通用
作者: fruds9981    时间: 2024-10-27 12:00
赞赞
作者: mr8246    时间: 2024-10-27 13:16
szwp 发表于 2024-10-27 11:44
无需判断,将winload这行删了即可双启通用

试过了,确实可以,efi没试
作者: mrzhonghb    时间: 2024-10-27 13:22
多谢高手指点
作者: guong    时间: 2024-10-27 14:08
来学习了
作者: szwp    时间: 2024-10-27 14:32
mr8246 发表于 2024-10-27 13:16
试过了,确实可以,efi没试

guid可自定义,双启统一
作者: yc2428    时间: 2024-10-27 14:58
谢谢分享!
作者: wang1126    时间: 2024-10-27 15:31
谢谢楼主分享
作者: fegr    时间: 2024-10-27 16:23
感谢分享
作者: promrhxq    时间: 2024-10-27 17:10
感谢分享好东东
作者: 断剑留痕    时间: 2024-10-28 12:38
多谢楼主的分享
作者: freesoft00    时间: 2024-10-28 14:47
本帖最后由 freesoft00 于 2024-10-28 14:48 编辑
szwp 发表于 2024-10-27 11:44
无需判断,将winload这行删了即可双启通用

mbr磁盘的系统,使用搜索那个可以
bcdedit.exe /set {current} device locate=\Windows\System32\winload.exe
bcdedit.exe /set {current} osdevice locate=\Windows\System32\winload.exe
bcdedit.exe /deletevalue {bootmgr} device
bcdedit.exe /deletevalue {bootmgr} path
(后2句好像不对并不能删除)

但是这个语句用在gpt磁盘的系统上就会使系统无法启动。不知是没有设置对还是这个确实只针对bios而不能应用在uefi中
========================================================
也有可能是我这一套代码没有针对uefi做处理,\Windows\System32\winload.exe这个应该改一下,回头我再试试

作者: szwp    时间: 2024-10-28 15:17
freesoft00 发表于 2024-10-28 14:47
mbr磁盘的系统,使用搜索那个可以
bcdedit.exe /set {current} device locate=\Windows\System32\winloa ...

http://bbs.wuyou.net/forum.php?m ... &fromuid=225195
作者: 孟仁飞    时间: 2024-10-29 17:31
学习
作者: oym2016    时间: 2024-10-29 20:12
   set src=%1
   if %1.==. set /p src=请将pe的wim文件拖放到本窗口后按回车键:
   for %%a in (%src%) do (set NX=%%~nxa)
   echo !NX!&pause
   for /f "tokens=1*" %%c in ('Dism.exe /Get-ImageInfo /ImageFile:%src% /Index:1') do (
                     if /i "%%c"=="名称:" (set wim_name=%%d)
                    )
   mountvol R: /S
   dir R:\
   if not exist R:\Sources md R:\Sources 1>nul 2>nul
   copy /y %src%  R:\Sources
   BCDEdit /enum {ramdiskoptions} /v >nul 2>nul
   IF errorlevel 1  (
      xcopy /yhie  boot.sdi R:\EFI
      bcdedit /create {ramdiskoptions} 1>nul 2>nul
      bcdedit /set {ramdiskoptions} ramdisksdidevice "boot" 1>nul 2>nul
      bcdedit /set {ramdiskoptions} ramdisksdipath \EFI\boot.sdi 1>nul 2>nul
      )
   mountvol R: /D
   for /f "delims={,} tokens=2" %%a in ('bcdedit -create /d "%wim_name%" -application osloader  ') do set ID={%%a}
   bcdedit /set %ID% device ramdisk="[boot]\Sources\%NX%,{ramdiskoptions}"
   bcdedit /set %ID% osdevice ramdisk="[boot]\Sources\%NX%,{ramdiskoptions}"
   bcdedit /set %ID% path \windows\system32\boot\winload.efi
   bcdedit /set %ID% locale zh-CN 1>nul 2>nul
   bcdedit /set %ID% systemroot \windows 1>nul 2>nul
   bcdedit /set %ID% detecthal yes 1>nul 2>nul
   bcdedit /set %ID% winpe yes 1>nul 2>nul
   bcdedit /set %ID% bootmenupolicy Legacy 1>nul 2>nul
   bcdedit /displayorder %ID% -addlast 1>nul 2>nul
   echo !src! OK
   Pause>nul
   exit
作者: 享β亻寸木东    时间: 2024-11-1 16:33
多谢楼主的分享
作者: 享β亻寸木东    时间: 2024-11-1 20:04
借花献佛,修改一下:
  1. @echo off
  2. bcdedit /timeout 10
  3. ::等待时间10秒
  4. bcdedit /create {ramdiskoptions}
  5. ::创建RAM磁盘选项
  6. bcdedit /set {ramdiskoptions} ramdisksdidevice partition=D:
  7. ::设置RAM磁盘镜像所在分区
  8. bcdedit /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
  9. ::设置RAM磁盘SDI路径
  10. for /f "delims={,} tokens=2" %%a in ('bcdedit /create /d "PE" -application osloader') do set Guid={%%a}
  11. ::用bdedit创建启动项,导出GUID序列号,赋值给变量Guid
  12. bcdedit /set %Guid% device ramdisk="[D:]\boot\boot.wim,{ramdiskoptions}"
  13. ::启动设备
  14. bcdedit /set %Guid% osdevice ramdisk="[D:]\boot\boot.wim,{ramdiskoptions}"
  15. ::系统启动设备(设置和启动设备一样就行)
  16. bcdedit /set %Guid% locale zh-CN
  17. ::区域设置中国
  18. bcdedit /set %Guid% systemroot \windows
  19. ::系统根目录
  20. bcdedit /set %Guid% detecthal Yes
  21. ::检测HAL(硬件抽象层),如Yes(一般用于PE)
  22. bcdedit /set %Guid% winpe Yes
  23. ::是否windows PE,如Yes(只有是PE时才需要此参数)
  24. bcdedit /displayorder %Guid% -addlast
  25. ::把创建的项目添加到启动列表。如果不添加,替换成此命令就是一次性启动 bcdedit /bootsequence %Guid%


  26. ::绿色的,是需要用户自定义的,其它的随意
  27. ::紫色的,是注释,不删除也行,有的系统需要点右键,以管理员身份运行
复制代码

作者: mr8246    时间: 2024-11-1 20:52
本帖最后由 mr8246 于 2024-11-1 20:57 编辑

欢迎批评指正
作者: 2012飘水    时间: 2024-11-4 23:22
学习一下思路
作者: szwp    时间: 2024-11-5 08:14
一般俺不用 {ramdiskoptions},不影响系统原有的,另外新建sdi项。
作者: mr8246    时间: 2024-11-6 08:27
szwp 发表于 2024-11-5 08:14
一般俺不用 {ramdiskoptions},不影响系统原有的,另外新建sdi项。

也可以




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