无忧启动论坛
标题:
请教bcdedit语法
[打印本页]
作者:
wjgyz740526
时间:
2017-2-23 16:40
标题:
请教bcdedit语法
想要自动给pe加到启动项,写了个批处理如下:
@echo off
bcdedit.exe /timeout 9
for /f "delims={,} tokens=2" %%a in ('bcdedit /create /d "Windows 8 PE 维护平台2" -application osloader ') do set Guid={%%a}
bcdedit /set %Guid% device ramdisk="[%systemdrive%]\BOOT\8X86.wim,{ramdiskoptions}"
bcdedit /set %Guid% osdevice ramdisk="[%systemdrive%]\BOOT\8X86.wim,{ramdiskoptions}"
bcdedit /set %Guid% path \windows\system32\boot\winload.exe
bcdedit /set %Guid% locale zh-CN
bcdedit /set %Guid% systemroot \windows
bcdedit /displayorder %Guid% -addlast
用bootice查看启动项已经添加,但无法启动!
添加的启动项如下:
2.png
(43.76 KB, 下载次数: 33)
下载附件
2017-2-23 16:38 上传
我用bootice手工添加引导向如下即可成功引导:
1.png
(42.03 KB, 下载次数: 34)
下载附件
2017-2-23 16:38 上传
那么,请问用批处理该怎么写才能实现过图片中的设置??
恳请达人指教,谢谢
作者:
邪恶海盗
时间:
2017-2-23 21:36
没研究过,帮顶
作者:
slore
时间:
2017-2-23 22:22
@echo off
rem 硬盘安装Windows时,在现用系统上添加启动要安装系统的boot.wim
rem 管理者模式启动仍保持工作路径为脚本所在目录
cd /d "%~dp0"
set TEST_OPT=1
set /p WINISODRV=请输入安装文件所在盘符(例如:F):
: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 "Ramdisk Options"
bcdedit %TEST_OPT% /set {ramdiskoptions} ramdisksdidevice partition=%WINISODRV%:
bcdedit %TEST_OPT% /set {ramdiskoptions} ramdisksdipath \boot\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=[%WINISODRV%:]\sources\boot.wim,{ramdiskoptions}
bcdedit %TEST_OPT% /set %LOADER_GUID% path \windows\system32\winload.exe
bcdedit %TEST_OPT% /set %LOADER_GUID% description "Windows Setup"
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=[%WINISODRV%:]\sources\boot.wim,{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
if "%TEST_OPT%"=="" (
bcdedit %TEST_OPT% /displayorder %LOADER_GUID% /addlast
)
goto :BCD_END
:BCD_EFI
bcdedit -store S:\EFI\Microsoft\Boot\BCD -create {bootmgr} /d "Boot Manager"
bcdedit -store S:\EFI\Microsoft\Boot\BCD -create {globalsettings} /d "globalsettings"
bcdedit -store S:\EFI\Microsoft\Boot\BCD -create {dbgsettings} /d "debugsettings"
bcdedit -store S:\EFI\Microsoft\Boot\BCD -create {ramdiskoptions} /d "ramdiskoptions"
bcdedit -store S:\EFI\Microsoft\Boot\BCD -create /d "Windows PE" -application osloader
bcdedit -store S:\EFI\Microsoft\Boot\BCD /default <GUID from Windows PE store>
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {Default} device ramdisk=[C:]\sources\boot.wim,{ramdiskoptions}
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {Default} path \windows\system32\winload.efi
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {Default} osdevice ramdisk=[C:]\sources\boot.wim,{ramdiskoptions}
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {Default} systemroot \windows
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {Default} winpe yes
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {Default} nx optin
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {Default} detecthal yes
bcdedit -store S:\EFI\Microsoft\Boot\BCD -displayorder {Default} -addfirst
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {dbgsettings} debugtype Serial
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {dbgsettings} debugport 1
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {dbgsettings} baudrate 115200
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {ramdiskoptions} ramdisksdidevice partition=C:
bcdedit -store S:\EFI\Microsoft\Boot\BCD -set {ramdiskoptions} ramdisksdipath \sources\boot.sdi
:BCD_END
if not "%TEST_OPT%"=="" (
echo 确认添加的引导信息
bcdedit %TEST_OPT% /enum all
echo 确认信息无误后,按任意键将引导信息添加到系统启动菜单
pause
set TEST_OPT=
goto :BCD_EDIT
)
echo 添加引导信息到系统启动菜单成功
pause
复制代码
我自己用的这个,能启动boot.wim,你参照看看。
作者:
cy-hong
时间:
2017-2-24 10:44
本帖最后由 cy-hong 于 2017-2-24 11:02 编辑
楼主,求分享如图的软件。。。
晕,原来就是BOOTICE里带的,,我以为是,,,新东西
作者:
6677884
时间:
2017-2-24 13:53
你用bcdedit命令看下两个启动项哪里不同
作者:
wjgyz740526
时间:
2017-2-24 22:35
本帖最后由 wjgyz740526 于 2017-2-24 22:37 编辑
谢谢上面各位兄弟的回复,原因找到了,我的代码没问题,是bcd文件损坏造成无法启动——很奇怪的是它的系统引导项可以启动,下面的两个pe的是损坏的
关于实现图二效果的代码如下:
@echo off
bcdedit.exe /timeout 9
for /f "delims={,} tokens=2" %%a in ('bcdedit /create /d "Windows 8 PE 维护平台2" -application osloader ') do set Guid={%%a}
bcdedit /set %Guid% device ramdisk="[BOOT]\BOOT\8X86.wim,{ramdiskoptions}"
bcdedit /set %Guid% osdevice ramdisk="[%systemdrive%]\BOOT\8X86.wim,{ramdiskoptions}"
bcdedit /set %Guid% path \windows\system32\boot\winload.exe
bcdedit /set %Guid% locale zh-CN
bcdedit /set %Guid% systemroot \windows
bcdedit /displayorder %Guid% -addlast
欢迎光临 无忧启动论坛 (http://bbs.wuyou.net./)
Powered by Discuz! X3.3