无忧启动论坛

标题: bcd设置一次性启动重启后进入PE等系统批处理,请指正 [打印本页]

作者: yjqd    时间: 2018-10-27 17:40
标题: bcd设置一次性启动重启后进入PE等系统批处理,请指正
本帖最后由 yjqd 于 2018-10-27 17:41 编辑

适用于win7系统

bcd已配置了如下:
微软方式启动的Pe                 仅一个
Grub4dos实模式启动              仅一个
windows自带的Winre修复       仅一个

bcdedit需要有中文语言文件
---------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
@echo off
cd /d %~dp0

echo.
bcdedit /enum {bootmgr}|find "bootsequence">nul||echo 在系统BCD中没发现一次性启动
bcdedit /enum {bootmgr}|find "bootsequence">nul&&echo 在系统BCD中发现一次性启动
echo.

rem 获取--Pe--启动项的标识(identifier)
for /F "usebackq tokens=1,*" %%I IN (`bcdedit /enum^|findstr /I "标识符 identifier"`) DO (for /F "usebackq" %%A IN (`bcdedit /enum %%J^|findstr /I ".wim,"`) DO (set p=%%J))

rem  获取--Grub4dos实模式启动扇区--启动项的标识(identifier)
for /F "usebackq tokens=1,*" %%I IN (`bcdedit /enum all^|findstr /I "标识符 identifier"`) DO (for /F "usebackq" %%A IN (`bcdedit /enum %%J^|findstr /I "实模式启动扇区 Real-mode"`) DO (set g=%%J))

rem  获取--Winre修复计算机--启动项的标识(identifier)
for /F "usebackq tokens=1,*" %%I IN (`bcdedit /enum all^|findstr /I "标识符 identifier"`) DO (for /F "usebackq" %%A IN (`bcdedit /enum %%J^|findstr /I "Winre.wim"`) DO (set r=%%J))


echo 获取--Pe--启动项的标识(identifier)
echo %p%
echo.
echo 获取--Grub4dos实模式启动扇区--启动项的标识(identifier)
echo %g%
echo.
echo 获取--Winre修复计算机--启动项的标识(identifier)
echo %r%
echo.
echo.

echo 设置一次性启动
echo 启动pe就输入p,启动Grub4dos就输入g,启动修复就输入r,不分区大小写
echo.

set /p y=请输入:
echo.
if /i "%y%"=="p" set y=%p%
if /i "%y%"=="g" set y=%g%
if /i "%y%"=="r" set y=%r%

echo 导出系统的bcd(备份)
bcdedit /export 备份bcd

echo.
echo 把所选启动项设为一次性启动
bcdedit  /store "%cd%"\备份BCD /bootsequence %y%

echo.
echo 导入bcd(备份)到系统的bcd
bcdedit /import 备份bcd
del 备份bcd
del *.lo* /A

echo.
bcdedit /enum {bootmgr}|find "bootsequence">nul||echo 在系统BCD中没发现一次性启动
bcdedit /enum {bootmgr}|find "bootsequence"&&echo 在系统BCD中发现一次性启动
echo.
for /F "usebackq tokens=1,*" %%I IN (`bcdedit /enum {bootmgr}^|find "bootsequence"`) DO (
if /i "%%J"=="%p%" echo 一次性启动为:--Pe--
if /i "%%J"=="%g%" echo 一次性启动为:--Grub4dos实模式启动扇区--
if /i "%%J"=="%r%" echo 一次性启动为:--Winre修复计算机--)
echo.
timeout 2
echo.
echo 重启系统
shutdown -r -t 5

exit

---------------------------------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------------------------------------
重启后进入Winre修复计算机也可用下面的命令:
用reagentc命令来设置:

@echo off
reagentc  /boottore


作者: wbzzzzj    时间: 2018-10-27 18:09
感谢楼主分享!我的win7系统是精简版的,没有winre环境,使用后自动进入了事先安装的OBR一键还原系统了。
作者: hszgb    时间: 2018-10-27 19:15
谢谢分享,收藏 了
作者: qxhdly    时间: 2018-10-28 03:41
感谢楼主分享!
作者: yjqd    时间: 2018-10-29 11:21

重启后进入Winre修复计算机也可用下面的命令:
用reagentc命令来设置:

@echo off
reagentc  /boottore
echo.
echo 重启系统
echo.
bcdedit /enum {bootmgr}|find "bootsequence">nul||echo 在系统BCD中没发现一次性启动
bcdedit /enum {bootmgr}|find "bootsequence"&&echo 在系统BCD中发现一次性启动
echo.
shutdown -r -t 5

exit




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