| 
 | 
一直用自己的脚本,自己想怎样都行!   
@echo off 
setlocal enabledelayedexpansion 
::CMD窗口字体绿色 
title %~n0 
color 0a 
 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
set "m_脚本标题=%~n0" 
set "m_BCD文件=%~1" 
set "m_BCD文件命令=" 
set "m_本地脚本文件名=%~0" 
set "m_脚本文件名=%~nx0" 
set "m_BCD文件有效=" 
set "m_BCD文件启动类型=" 
set /a m_BCD文件启动项计数=0 
set "m_BCD文件启动类型_MBR=" 
set "m_BCD文件启动类型_EFI=" 
 
set "m_主功能菜单行1=D.删除启动项   R.添加到启动目录   P.修改启动项名      Q.删除项数值" 
set "m_主功能菜单行2=S.修改项数值   H.设置默认启动项   T.设置启动项超时    A.添加一个数值" 
set "m_主功能菜单行3=M.关闭驱动数字证书检测程序        G.全部关闭驱动数字证书检测程序" 
set "m_主功能菜单行4=N.打开驱动数字证书检测程序        F.全部打开驱动数字证书检测程序" 
set "m_主功能菜单行5=C.添加一个系统分区的启动项        W.添加WinPE或WinRE启动项" 
set "m_主功能菜单行6=V.添加一个VHD文件启动项           L.文本查看数据" 
set "m_主功能菜单行7=B.创建一个基本BCD文件             E.退出              Z.注册表校验" 
set "m_主功能菜单行8=X.添加NTLDR启动项或实模式启动项" 
 
set "m_选择主功能项=" 
set "m_主功能菜单标签=" 
 
set /a m_当前选择的启动项索引号=0 
set "m_当前选择的启动项ID=" 
set "m_当前选择的启动项启动项名=" 
set /a m_当前选择的启动项启动数值计数=0 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
rem 安装脚本 
set "m_命令临时数据=%~1" 
if /i " " EQU "!m_命令临时数据:~0,1!" goto :安装本地脚本右键功能 
if /i "*" EQU "!m_命令临时数据:~0,1!" goto :安装本地脚本右键功能 
if /i "?" EQU "!m_命令临时数据:~0,1!" goto :安装本地脚本右键功能 
if /i "|" EQU "!m_命令临时数据:~0,1!" goto :安装本地脚本右键功能 
call :安装本地脚本右键功能 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
mode con:  cols=130 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
if "" EQU "!m_BCD文件!" call :选择BCD文件 
if "" EQU "!m_BCD文件!" goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
call :脚本顶层标题 
if exist "!m_BCD文件!" ( 
   call :判断有效的BCD文件 "!m_BCD文件!" "m_BCD文件有效" 
   if "" EQU "!m_BCD文件有效!" ( 
      echo  *****您选择了无效的BCD文件:!m_BCD文件! 
      echo. 
      echo  任意键结束...... 
      pause>nul 
      goto :eof 
   ) 
) 
if " " EQU "!m_BCD文件:~0,1!" set "m_BCD文件= " 
if exist "!m_BCD文件!" set m_BCD文件命令=/store "!m_BCD文件!" 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:全局循环CODE 
 
set "m_选择主功能项=" 
set "m_主功能菜单标签=" 
 
set /a m_当前选择的启动项索引号=0 
set "m_当前选择的启动项ID=" 
set "m_当前选择的启动项启动项名=" 
set /a m_当前选择的启动项启动数值计数=0 
 
call :脚本顶层标题 
set "m_BCD文件启动类型=" 
call :获取BCD文件的启动类型 "!m_BCD文件!" "m_BCD文件启动类型" 
if "" EQU "!m_BCD文件启动类型!" ( 
   if " " EQU "!m_BCD文件!" echo  *****无法获取当前系统的启动类型是MBR还是EFI***** 
   if " " NEQ "!m_BCD文件!" ( 
      echo  *****您选择的BCD文件:!m_BCD文件! 
      echo  *****无法获取启动类型是MBR还是EFI***** 
   ) 
   echo. 
   echo  任意键结束...... 
   pause>nul 
   goto :eof 
) 
for %%a in (!m_BCD文件启动类型!) do ( 
   if /i "mbr" EQU "%%a" set "m_BCD文件启动类型_MBR=MBR" 
   if /i "efi" EQU "%%a" set "m_BCD文件启动类型_EFI=EFI" 
) 
call :显示BCD基本信息 
call :加载BCD信息 
call :显示主菜单 
 
set "m_主功能菜单标签=" 
set "m_选择主功能项=" 
set /p m_选择主功能项=.请选择键入主功能项前面字母(不区分大小写): 
 
if /i "E" EQU "!m_选择主功能项!" ( 
    if exist "!m_BCD文件!" call :注册表日志文件文件清除 "!m_BCD文件!" 
    goto :eof 
) 
call :显示选择主功能操作 "您选择了:" 
if "" EQU "!m_选择主功能项!" ( 
   echo  您的选择有误,任意键返回主菜单...... 
   pause>nul 
   goto :全局循环CODE 
) 
if "" NEQ "!m_主功能菜单标签!" ( 
   call :标签_!m_主功能菜单标签! 
   call :注册表日志文件文件清除 "!m_BCD文件!" 
) 
pause>nul 
goto :全局循环CODE 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_注册表校验 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  注册表校验运行完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:主功能_注册表校验 
if not exist "%~1" goto :eof 
set "主功能_注册表校验_注册表名=%Random%_%Random%" 
( Reg Load "HKEY_LOCAL_MACHINE\!主功能_注册表校验_注册表名!" "%~1" )>nul 2>nul 
( Reg UnLoad "HKEY_LOCAL_MACHINE\!主功能_注册表校验_注册表名!" )>nul 2>nul 
call :注册表日志文件文件清除 "%~1" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_删除启动项 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
echo. 
echo  正在删除 第 !m_当前选择的启动项索引号! 项ID !m_当前选择的启动项ID! 
bcdedit %m_BCD文件命令% /delete !m_当前选择的启动项ID! /f 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo. 
echo  项目删除指令运行完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_添加到启动目录 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
echo. 
echo  正在添加 第 !m_当前选择的启动项索引号! 项ID !m_当前选择的启动项ID! 
bcdedit %m_BCD文件命令% /displayorder !m_当前选择的启动项ID! /addlast 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo. 
echo  添加到启动目录完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_设置默认启动项 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
echo. 
echo  正在设置为默认启动项 于 第 !m_当前选择的启动项索引号! 项ID !m_当前选择的启动项ID! 
bcdedit %m_BCD文件命令% /default !m_当前选择的启动项ID! 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo. 
echo  正在设置为默认启动项完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_修改启动项名 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
set "修改前的启动项名=!m_当前选择的启动项启动项名!" 
echo. 
echo  当前启动项名:!修改前的启动项名! 
echo. 
set "修改后的启动项名=!修改前的启动项名!" 
set /p 修改后的启动项名=.请输入您要的新启动项名(回车默认原来的启动项名不做修改): 
if "!修改前的启动项名!" NEQ "!修改后的启动项名!" ( 
   bcdedit %m_BCD文件命令% /set !m_当前选择的启动项ID! description "!修改后的启动项名!" 
   echo. 
) 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  修改启动项名 完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_删除项数值 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
call :显示当前启动项的详细数值 
echo. 
echo  请输入您要删除的数值索引号 
set /a 标签_删除项数值_选中数值索引号=0 
set /p 标签_删除项数值_选中数值索引号=.数值索引号: 
set "标签_删除项数值_索引号确认=" 
for /l %%i in ( 1 1 !m_当前选择的启动项启动数值计数! ) do if "%%i" EQU "!标签_删除项数值_选中数值索引号!" set "标签_删除项数值_索引号确认=1" 
if "" EQU "!标签_删除项数值_索引号确认!" ( 
   echo. 
   echo  您选择了不合法的选中数值索引号:!标签_删除项数值_选中数值索引号! 
   echo  任意键返回主菜单...... 
   goto :eof 
) 
call :显示当前启动项的详细数值 "!标签_删除项数值_选中数值索引号!" "标签_删除项数值_001" 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  删除项数值 完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::: 
:标签_删除项数值_001 
for /f "tokens=1,2 delims= " %%a in ("%~1") do ( 
   echo. 
   echo  正在删除数值名:%%a 的值....... 
   bcdedit %m_BCD文件命令% /deletevalue !m_当前选择的启动项ID! %%a 
   echo. 
) 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_修改项数值 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
call :显示当前启动项的详细数值 
echo. 
echo  请输入您要修改的数值索引号 
set /a 标签_修改项数值_选中数值索引号=0 
set /p 标签_修改项数值_选中数值索引号=.数值索引号: 
set "标签_修改项数值_索引号确认=" 
for /l %%i in ( 1 1 !m_当前选择的启动项启动数值计数! ) do if "%%i" EQU "!标签_修改项数值_选中数值索引号!" set "标签_修改项数值_索引号确认=1" 
if "" EQU "!标签_修改项数值_索引号确认!" ( 
   echo. 
   echo  您选择了不合法的选中数值索引号:!标签_修改项数值_选中数值索引号! 
   echo  任意键返回主菜单...... 
   goto :eof 
) 
call :显示当前启动项的详细数值 "!标签_修改项数值_选中数值索引号!" "标签_修改项数值_001" 
echo. 
echo  修改项数值 完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::: 
:标签_修改项数值_001 
set "标签_修改项数值_001_整体数据=%~1" 
set "标签_修改项数值_001_数据名=" 
set "标签_修改项数值_001_数据值=" 
call :标签_修改项数值_获取数据值 "标签_修改项数值_001_整体数据" "标签_修改项数值_001_数据名" "标签_修改项数值_001_数据值" 
echo. 
echo  开始修改数值名: !标签_修改项数值_001_数据名! 的数值...... 
echo  该数据原来数据为: !标签_修改项数值_001_数据值! 
echo. 
set "修改后的数值=!标签_修改项数值_001_数据值!" 
set /p 修改后的数值=.请输入您当前要修改的数值(回车默认不修改): 
if "!标签_修改项数值_001_数据值!" NEQ "!修改后的数值!" ( 
   echo. 
   echo  正在修改 !标签_修改项数值_001_数据名! 的值为: !修改后的数值! 
   bcdedit %m_BCD文件命令% /set !m_当前选择的启动项ID! !标签_修改项数值_001_数据名! "!修改后的数值!" 
   echo. 
) 
goto :eof 
::::::::::::::::::::::::::::::::::::::::: 
:标签_修改项数值_获取数据值 
set "标签_修改项数值_获取数据值_1=!%~1!" 
set "标签_修改项数值_获取数据值_2=" 
if "" NEQ "%~2" set "%~2=" 
if "" NEQ "%~3" set "%~3=" 
for /f "tokens=1,2 delims= " %%a in ("!标签_修改项数值_获取数据值_1!") do if "" NEQ "%~2" set "%~2=%%a" 
for /l %%i in ( 0 1 99 ) do ( 
   if " " EQU "!标签_修改项数值_获取数据值_1:~%%i,1!" ( 
      set "标签_修改项数值_获取数据值_2=!标签_修改项数值_获取数据值_1:~%%i!" 
      goto :标签_修改项数值_获取数据值_001 
   ) 
) 
:标签_修改项数值_获取数据值_001 
call :加载BCD信息_去掉数据前面空格_001 "标签_修改项数值_获取数据值_2" 
if "" NEQ "%~3" set "%~3=!标签_修改项数值_获取数据值_2!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_添加一个数值 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
echo. 
echo  当前现有数值如下: 
call :显示当前启动项的详细数值 
echo. 
echo  ***请输入您当前要添加的数值名和数值 数值名与数值之间以空格分开*** 
echo  ***这里不验证您的输入是否有误*** 
 
set "添加的数值名和数值=" 
set /p 添加的数值名和数值=.请输入您当前要添加的数值名和数值(回车默认不添加): 
if "" NEQ "!添加的数值名和数值!" ( 
   bcdedit %m_BCD文件命令% /set !m_当前选择的启动项ID! !添加的数值名和数值! 
   echo. 
) 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  添加一个数值 完毕 ,任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_关闭驱动数字证书检测程序 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
echo. 
echo  启动项正在 关闭驱动数字证书检测程序 于 第 !m_当前选择的启动项索引号! 项ID !m_当前选择的启动项ID! 
bcdedit %m_BCD文件命令% /set !m_当前选择的启动项ID! nointegritychecks on 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  关闭驱动数字证书检测程序完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_打开驱动数字证书检测程序 
call :显示选择主功能操作 "当前开始执行:" 
call :选择启动项 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
echo. 
echo  启动项正在 打开驱动数字证书检测程序 于 第 !m_当前选择的启动项索引号! 项ID !m_当前选择的启动项ID! 
bcdedit %m_BCD文件命令% /set !m_当前选择的启动项ID! nointegritychecks off 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  打开驱动数字证书检测程序 完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_设置启动项超时 
call :显示选择主功能操作 "当前开始执行:" 
set "启动项超时时间=30" 
set /p 启动项超时时间=.请设置启动项超时的时间,(回车默认!启动项超时时间!秒): 
( set /a 验证启动项超时时间=!启动项超时时间! - 0 )>nul 2>nul 
if !验证启动项超时时间! NEQ !启动项超时时间! ( 
   set "启动项超时时间=30" 
   echo  您没有输入有效的数字,当前被重置为默认时间!启动项超时时间!秒 
) 
bcdedit %m_BCD文件命令% /timeout !启动项超时时间! 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  设置启动项超时为!启动项超时时间!秒 任务完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_全部关闭驱动数字证书检测程序 
call :显示选择主功能操作 "当前开始执行:" 
echo. 
echo  开始批量全部关闭驱动数字证书检测程序...... 
for /l %%i in ( 1 1 !m_BCD文件启动项计数! ) do ( 
   set "全部关闭驱动数字证书检测程序_ID=" 
   call :全局获取项ID "%%i" "全部关闭驱动数字证书检测程序_ID" 
   if "" NEQ "!全部关闭驱动数字证书检测程序_ID!" ( bcdedit %m_BCD文件命令% /set !全部关闭驱动数字证书检测程序_ID! nointegritychecks on ) 
) 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  全部关闭驱动数字证书检测程序完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_全部打开驱动数字证书检测程序 
call :显示选择主功能操作 "当前开始执行:" 
echo. 
echo  开始批量全部打开驱动数字证书检测程序...... 
for /l %%i in ( 1 1 !m_BCD文件启动项计数! ) do ( 
   set "全部打开驱动数字证书检测程序_ID=" 
   call :全局获取项ID "%%i" "全部打开驱动数字证书检测程序_ID" 
   if "" NEQ "!全部打开驱动数字证书检测程序_ID!" ( bcdedit %m_BCD文件命令% /set !全部打开驱动数字证书检测程序_ID! nointegritychecks off ) 
) 
call :主功能_注册表校验 "!m_BCD文件!" 
echo. 
echo  全部打开驱动数字证书检测程序完毕!任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_文本查看数据 
call :显示选择主功能操作 "当前开始执行:" 
if exist "!m_BCD文件!" ( 
   bcdedit /store "!m_BCD文件!" /enum all >"!m_BCD文件!.txt" 
   start %WinDir%\System32\notepad.exe "!m_BCD文件!.txt" 
) 
if not exist "!m_BCD文件!" ( 
   bcdedit /enum all >当前BCD信息.txt 
   start %WinDir%\System32\notepad.exe "当前BCD信息.txt" 
) 
echo. 
echo  导出查看BCD数据 完毕 ,任意键返回主菜单...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_添加一个系统分区的启动项 
call :显示选择主功能操作 "当前开始执行:" 
call :主功能_添加一个系统分区的启动项 "!m_BCD文件!" 
call :主功能_注册表校验 "!m_BCD文件!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_添加WinPE或WinRE启动项 
call :显示选择主功能操作 "当前开始执行:" 
call :主功能_添加WinPE或WinRE启动项 "!m_BCD文件!" 
call :主功能_注册表校验 "!m_BCD文件!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_添加一个VHD文件启动项 
call :显示选择主功能操作 "当前开始执行:" 
call :主功能_添加一个VHD文件启动项 "!m_BCD文件!" 
call :主功能_注册表校验 "!m_BCD文件!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_添加NTLDR启动项或实模式启动项 
call :显示选择主功能操作 "当前开始执行:" 
call :主功能_添加NTLDR启动项或实模式启动项 "!m_BCD文件!" 
call :主功能_注册表校验 "!m_BCD文件!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:标签_创建一个基本BCD文件 
call :显示选择主功能操作 "当前开始执行:" 
call :主功能_创建一个基本BCD文件 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:显示当前启动项的详细数值 
if "" EQU "!m_当前选择的启动项ID!" goto :eof 
set /a 启动项数值索引号=1 
set "显示当前启动项的详细数值_开始计数=" 
set "显示当前启动项的详细数值_临时数据=" 
if "" EQU "%~1" if "" EQU "%~2" set /a m_当前选择的启动项启动数值计数=0 
echo. 
echo *************************************************************************** 
for /f "delims=" %%a in ('bcdedit %m_BCD文件命令% /enum !m_当前选择的启动项ID!') do ( 
   set "显示当前启动项的详细数值_临时数据=%%a" 
   if "2" EQU "!显示当前启动项的详细数值_开始计数!" set "显示当前启动项的详细数值_开始计数=3" 
   if "1" EQU "!显示当前启动项的详细数值_开始计数!" set "显示当前启动项的详细数值_开始计数=2" 
   if "---" EQU "!显示当前启动项的详细数值_临时数据:~0,3!" set "显示当前启动项的详细数值_开始计数=1" 
   if "3" EQU "!显示当前启动项的详细数值_开始计数!" ( 
      set "启动项一个数值名=" 
      for /f "tokens=1,2 delims= " %%b in ("%%a") do if "" NEQ "%%c" set "启动项一个数值名=%%b" 
         if "" NEQ "!启动项一个数值名!" ( 
            if "" EQU "%~1" if "" EQU "%~2" ( 
               if !启动项数值索引号! LSS 10 echo  数值索引号: !启动项数值索引号! 数值: %%a 
               if 9 LSS !启动项数值索引号!  echo  数值索引号:!启动项数值索引号! 数值: %%a 
            ) 
            if "" NEQ "%~1" if "" NEQ "%~2" ( 
               if "%~1" EQU "!启动项数值索引号!" call :%~2 "%%a" 
            ) 
            set /a 启动项数值索引号=!启动项数值索引号! + 1 
         ) 
      ) 
   ) 
) 
call :注册表日志文件文件清除 "!m_BCD文件!" 
if "" EQU "%~1" if "" EQU "%~2" set /a m_当前选择的启动项启动数值计数=!启动项数值索引号! - 1 
echo *************************************************************************** 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:选择启动项 
set /a m_当前选择的启动项索引号=0 
set "m_当前选择的启动项ID=" 
set "m_当前选择的启动项启动项名=" 
if !m_BCD文件启动项计数! LEQ 0 goto :eof 
echo. 
if 1 EQU !m_BCD文件启动项计数! ( 
   echo  当前只有一项BCD启动项,回车默认1: 
   set /a m_当前选择的启动项索引号=1 
) 
if 1 LSS !m_BCD文件启动项计数! echo  请选择BCD启动项索引号( 1-!m_BCD文件启动项计数! ) 
set /p m_当前选择的启动项索引号=.请您选择的BCD启动项索引号,回车默认!m_当前选择的启动项索引号!: 
 
for /l %%i in ( 1 1 !m_BCD文件启动项计数! ) do ( 
   if "%%i" EQU "!m_当前选择的启动项索引号!" ( 
      call :全局获取项ID "!m_当前选择的启动项索引号!" "m_当前选择的启动项ID" 
      caLL :全局获取项启动项名 "!m_当前选择的启动项索引号!" "m_当前选择的启动项启动项名" 
      echo. 
      echo    当前选中BCD启动项索引号: !m_当前选择的启动项索引号! 
      echo        当前选中BCD启动项ID: !m_当前选择的启动项ID! 
      echo  当前选中BCD启动项启动项名: !m_当前选择的启动项启动项名! 
      goto :eof 
   ) 
) 
echo  没有找到BCD启动项索引号: !m_当前选择的启动项索引号! ,任意键返回主菜单...... 
set /a m_当前选择的启动项索引号=0 
set "m_当前选择的启动项ID=" 
set "m_当前选择的启动项启动项名=" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:显示主菜单 
echo  主功能菜单,请选择主功能项 
echo ========================================================================= 
for /l %%i in ( 1 1 7 ) do ( 
   echo. 
   echo  !m_主功能菜单行%%i! 
) 
if /i "" NEQ "!m_BCD文件启动类型_MBR!" ( 
       echo. 
       echo  !m_主功能菜单行8! 
) 
echo. 
echo ========================================================================= 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:显示选择主功能操作 
set "显示选择主功能操作_输出确认=" 
set "显示选择主功能操作_临时数据=" 
set "m_主功能菜单标签=" 
if !m_BCD文件启动项计数! LEQ 0 echo  ****当前无任何启动项**** 
 
for /l %%a in ( 1 1 7 ) do ( 
   for %%b in (!m_主功能菜单行%%a!) do ( 
      set "显示选择主功能操作_临时数据=%%b" 
      if /i "!m_选择主功能项!" EQU "!显示选择主功能操作_临时数据:~0,1!" ( 
         set "m_主功能菜单标签=!显示选择主功能操作_临时数据:~2!" 
         echo. 
         echo  %~1 !m_主功能菜单标签! 
         goto :eof 
      ) 
   ) 
) 
if /i "" NEQ "!m_BCD文件启动类型_MBR!" ( 
   for %%b in (!m_主功能菜单行8!) do ( 
       set "显示选择主功能操作_临时数据=%%b" 
       if /i "!m_选择主功能项!" EQU "!显示选择主功能操作_临时数据:~0,1!" ( 
         set "m_主功能菜单标签=!显示选择主功能操作_临时数据:~2!" 
         echo. 
         echo  %~1 !m_主功能菜单标签! 
         goto :eof 
      ) 
   ) 
) 
set "m_选择主功能项=" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:显示BCD基本信息 
if " " EQU "!m_BCD文件!" echo  当前载入了系统BCD 
if exist "!m_BCD文件!"   echo  当前载入的BCD文件:!m_BCD文件! 
echo  引导启动类型: !m_BCD文件启动类型! 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:加载BCD信息 
set /a m_BCD文件启动项计数=0 
set "加载BCD信息_行1=" 
set "加载BCD信息_行2=" 
set "加载BCD信息_行3=" 
set /a 加载BCD信息_当前项索引号=1 
 
set "启动ID1=" 
set "启动ID2=" 
 
set "启动名=" 
set "启动设备=" 
 
set "启动系统设备=" 
set "休眠恢复项=" 
set "启动文件=" 
 
set "Ram设备=" 
set "Ram配置文件=" 
set "启动管理器=" 
set "关闭驱动数字证书检测程序=" 
set "隔离上下文=" 
 
set "启动项类型1=" 
set "启动项类型2=" 
 
for /f "delims=" %%a in ('bcdedit %m_BCD文件命令% /enum all') do ( 
   set "加载BCD信息_行1=!加载BCD信息_行2!" 
   set "加载BCD信息_行2=!加载BCD信息_行3!" 
   set "加载BCD信息_行3=%%a" 
 
   rem 读取分析数据 
   for /f "tokens=1,2,3,4,5,6,7,8,9 delims= " %%b in ("%%a") do ( 
      if /i "device" EQU "%%b" set "启动设备=!加载BCD信息_行3:~6!" 
      if /i "osdevice" EQU "%%b" set "启动系统设备=!加载BCD信息_行3:~8!" 
      if /i "description" EQU "%%b" set "启动名=!加载BCD信息_行3:~11!" 
      if /i "filepath" EQU "%%b" set "休眠恢复项=休眠恢复项" 
      if /i "path" EQU "%%b" set "启动文件=!加载BCD信息_行3:~4!" 
      if /i "ramdisksdidevice" EQU "%%b" set "Ram设备=!加载BCD信息_行3:~16!" 
      if /i "ramdisksdipath" EQU "%%b" set "Ram配置文件=!加载BCD信息_行3:~14!" 
      if /i "toolsdisplayorder" EQU "%%b" set "启动管理器=!加载BCD信息_行3:~17!" 
 
      if /i "nointegritychecks" EQU "%%b" if /i "Yes" EQU "%%c" set "关闭驱动数字证书检测程序=%%c (关闭检测状态%%b)" 
      if /i "nointegritychecks" EQU "%%b" if /i "on"  EQU "%%c" set "关闭驱动数字证书检测程序=%%c (关闭检测状态%%b)" 
      if /i "nointegritychecks" EQU "%%b" if /i "on"  NEQ "%%c" if /i "Yes" NEQ "%%c" set "关闭驱动数字证书检测程序=%%c (开启检测状态%%b)" 
 
      if /i "isolatedcontext" EQU "%%b" set "隔离上下文=隔离上下文%%b " 
      if /i "isolatedcontext" EQU "%%b" if /i "Yes" EQU "%%c" set "隔离上下文=%%c (关闭隔离上下文状态%%b)" 
      if /i "isolatedcontext" EQU "%%b" if /i "on"  EQU "%%c" set "隔离上下文=%%c (关闭隔离上下文状态%%b)" 
      if /i "isolatedcontext" EQU "%%b" if /i "on"  NEQ "%%c" if /i "Yes" NEQ "%%c" set "隔离上下文=%%c (开启隔离上下文状态%%b)" 
   ) 
   if "---" EQU "!加载BCD信息_行2:~0,3!" ( 
      set "启动ID1=!启动ID2!" 
      for /f "tokens=1,2 delims= " %%b in ("!加载BCD信息_行3!") do  set "启动ID2=%%c" 
 
      set "启动项类型1=!启动项类型2!" 
      set "启动项类型2=!加载BCD信息_行1!" 
 
      call :加载BCD信息_打印条目 
 
      set "启动名=" 
      set "启动设备=" 
 
      set "启动系统设备=" 
      set "休眠恢复项=" 
      set "启动文件=" 
      set "Ram设备=" 
      set "Ram配置文件=" 
      set "启动管理器=" 
      set "关闭驱动数字证书检测程序=" 
      set "隔离上下文=" 
   ) 
) 
call :注册表日志文件文件清除 "!m_BCD文件!" 
set "启动ID1=!启动ID2!" 
set "启动项类型1=!启动项类型2!" 
call :加载BCD信息_打印条目 
set /a m_BCD文件启动项计数=!加载BCD信息_当前项索引号! - 1 
echo. 
echo ========================================================================= 
call :显示BCD基本信息 
echo  启动项总条目: !m_BCD文件启动项计数! 
echo. 
goto :eof 
::::::::::::::::::::::::::::::::::::::::: 
:加载BCD信息_打印条目 
if "" EQU "!启动ID1!" goto :eof 
if "" EQU "!启动项类型1!" goto :eof 
call :加载BCD信息_去掉数据前面空格 
echo. 
echo -------------------------------------------------------- 
echo --输入 !加载BCD信息_当前项索引号! 选择以下启动项信息 启动项ID: !启动ID1! 
call :全局设置项ID "!加载BCD信息_当前项索引号!" "启动ID1" 
call :全局设置项启动项名 "!加载BCD信息_当前项索引号!" "启动名" 
 
if /i "{current}" EQU "!启动ID1!" echo  ****当前系统启动项**** 
if /i "{default}" EQU "!启动ID1!" echo  ****默认启动项**** 
echo     启动项名: !启动名! 
echo     启动项ID: !启动ID1! 
 
if "" NEQ "!启动设备!"     (echo     启动设备: !启动设备!) 
if "" NEQ "!启动系统设备!" (echo 启动系统设备: !启动系统设备!) 
if "" NEQ "!启动文件!"     (echo     启动文件: !启动文件!) 
 
if "" NEQ "!Ram设备!"      (echo      Ram设备: !Ram设备!) 
if "" NEQ "!Ram配置文件!"  (echo  Ram配置文件: !Ram配置文件!) 
if "" NEQ "!隔离上下文!"   (echo   上下文关闭: !隔离上下文!) 
if "" NEQ "!启动管理器!"   (echo   启动管理器: !启动管理器!) 
if "" NEQ "!关闭驱动数字证书检测程序!" (echo 证书检测关闭: !关闭驱动数字证书检测程序!) 
rem if "" NEQ "!关闭驱动数字证书检测程序!" (echo 关闭驱动数字证书检测程序: !关闭驱动数字证书检测程序!) 
if "" NEQ "!休眠恢复项!"   (echo   ****!休眠恢复项!****  ) 
echo   启动项类型: !启动项类型1! 
set /a 加载BCD信息_当前项索引号=!加载BCD信息_当前项索引号! + 1 
goto :eof 
::::::::::::::::::::::::::::::::::::::::: 
:加载BCD信息_去掉数据前面空格 
call :加载BCD信息_去掉数据前面空格_001 "启动ID1" 
call :加载BCD信息_去掉数据前面空格_001 "启动ID2" 
call :加载BCD信息_去掉数据前面空格_001 "启动名" 
call :加载BCD信息_去掉数据前面空格_001 "启动设备" 
call :加载BCD信息_去掉数据前面空格_001 "启动文件" 
call :加载BCD信息_去掉数据前面空格_001 "Ram设备" 
call :加载BCD信息_去掉数据前面空格_001 "Ram配置文件" 
call :加载BCD信息_去掉数据前面空格_001 "启动系统设备" 
call :加载BCD信息_去掉数据前面空格_001 "启动管理器" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::: 
:加载BCD信息_去掉数据前面空格_001 
if "" NEQ "%~1" if "" NEQ "!%~1!" if " " EQU "!%~1:~0,1!" set "%~1=!%~1:~1!" & goto :加载BCD信息_去掉数据前面空格_001 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:全局设置项ID 
set "第%~1条启动项的ID=!%~2!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:全局获取项ID 
if "" NEQ "%~2" set "%~2=!第%~1条启动项的ID!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:全局设置项启动项名 
set "第%~1条启动项的启动项名=!%~2!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:全局获取项启动项名 
if "" NEQ "%~2" set "%~2=!第%~1条启动项的启动项名!" 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:选择BCD文件 
set "m_BCD文件= " 
call :脚本顶层标题 
set /p m_BCD文件=.请输入bcd位置,如:C:\BOOT\BCD,回车确认,x退出,回车默认当前系统BCD: 
echo  正在加载BCD文件信息,请稍后...... 
set "m_BCD文件=!m_BCD文件:"=!" 
set "选择BCD文件_判断有效BCD文件=" 
set "选择BCD文件_选择状态=" 
call :判断有效的BCD文件 "!m_BCD文件!" "选择BCD文件_判断有效BCD文件" 
 
if " " EQU "!m_BCD文件!" if "" EQU "!选择BCD文件_判断有效BCD文件!" ( 
   set "m_BCD文件=" 
   call :脚本顶层标题 
   echo  ***********没有办法获取当前系统的BCD文件*********** 
   echo  输入E/e结束脚本,否则任意键重新选择BCD文件...... 
   set /p 选择BCD文件_选择状态=. 
   if /i "e" EQU "!选择BCD文件_选择状态!" goto :eof 
   goto :选择BCD文件 
) 
 
if "" EQU "!选择BCD文件_判断有效BCD文件!" ( 
   call :脚本顶层标题 
   echo  *****您选择了无效的BCD文件:!m_BCD文件! 
   echo. 
   set "m_BCD文件=" 
   echo  输入E/e结束脚本,否则任意键重新选择BCD文件...... 
   set /p 选择BCD文件_选择状态=. 
   if /i "e" EQU "!选择BCD文件_选择状态!" goto :eof 
   goto :选择BCD文件 
) 
 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:脚本顶层标题 
title !m_脚本标题! 
cls 
echo. 
echo                          !m_脚本标题! 
echo. 
echo ========================================================================= 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:安装本地脚本右键功能 
rem call :复制覆盖一个文件 "!m_本地脚本文件名!" "%SystemRoot%\System32\!m_脚本文件名!" 
 
set "文件右键菜单中加上脚本打开_注册表路径=HKEY_CLASSES_ROOT\*\shell\用!m_脚本标题!打开该文件\Command" 
( 
   rem Reg Add "%文件右键菜单中加上脚本打开_注册表路径%" /ve /t REG_SZ /d "\"%SystemRoot%\System32\!m_脚本文件名!\" \"%%1\" \"%%2\" \"%%3\" \"%%4\"  \"%%5\"" /f 
   Reg Add "%文件右键菜单中加上脚本打开_注册表路径%" /ve /t REG_SZ /d "\"%~dpnx0\" \"%%1\" \"%%2\" \"%%3\" \"%%4\"  \"%%5\"" /f 
)>nul 2>nul 
goto :eof 
 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:主功能_添加一个系统分区的启动项 
set "主功能_添加一个系统分区的启动项_系统盘符=" 
set "主功能_添加一个系统分区的启动项_启动方式=" 
set "主功能_添加一个系统分区的启动项_启动名=" 
 
set "主功能_添加一个系统分区的启动项_系统盘符列表=" 
call :枚举Windows系统盘符列表 "主功能_添加一个系统分区的启动项_系统盘符列表" 
echo. 
if "" EQU "!主功能_添加一个系统分区的启动项_系统盘符列表!" ( 
   echo *****当前没有找到任何有Windows系统的盘符***** 
   goto :eof 
) 
set /p 主功能_添加一个系统分区的启动项_系统盘符=.请选择输入系统盘符(!主功能_添加一个系统分区的启动项_系统盘符列表!): 
echo. 
for %%a in ( !主功能_添加一个系统分区的启动项_系统盘符列表! ) do if /i "%%a" EQU "!主功能_添加一个系统分区的启动项_系统盘符!" ( 
   set "主功能_添加一个系统分区的启动项_系统盘符=%%a" 
   goto :主功能_添加一个系统分区的启动项_001 
) 
echo *****当前没有找到您选择的Windows系统盘符:!主功能_添加一个系统分区的启动项_系统盘符!***** 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:主功能_添加一个系统分区的启动项_001 
set "主功能_添加一个系统分区的启动项_启动方式列表=" 
set "主功能_添加一个系统分区的启动项_mbr启动方式=" 
set "主功能_添加一个系统分区的启动项_efi启动方式=" 
set "主功能_添加一个系统分区的启动项_启动名=Windows OS" 
call :获取一个目录下的Windows系统版本名 "!主功能_添加一个系统分区的启动项_系统盘符!" "主功能_添加一个系统分区的启动项_启动名" 
 
if "" EQU "主功能_添加一个系统分区的启动项_启动名" ( 
   set "主功能_添加一个系统分区的启动项_启动名=Windows OS" 
   set /p 主功能_添加一个系统分区的启动项_启动名=.请给!主功能_添加一个系统分区的启动项_系统盘符!盘指定一个启动项名称(回车默认!主功能_添加一个系统分区的启动项_启动名!): 
) 
 
call :获取BCD文件的启动类型 "%~1" "主功能_添加一个系统分区的启动项_启动方式列表" 
for %%a in (!主功能_添加一个系统分区的启动项_启动方式列表!) do ( 
   if /i "mbr" EQU "%%a" set "主功能_添加一个系统分区的启动项_mbr启动方式=.exe" 
   if /i "efi" EQU "%%a" set "主功能_添加一个系统分区的启动项_efi启动方式=.efi" 
) 
if "" EQU "!主功能_添加一个系统分区的启动项_启动方式列表!" ( 
   echo. 
   echo  *****您选择的BCD文件数据格式不合法,没有获取到BCD文件的启动方式,无法添加启动项***** 
   goto :eof 
) 
if "" NEQ "!主功能_添加一个系统分区的启动项_mbr启动方式!" ( 
   call :添加一个系统分区的启动项 "%~1" "主功能_添加一个系统分区的启动项_系统盘符" "主功能_添加一个系统分区的启动项_mbr启动方式" "主功能_添加一个系统分区的启动项_启动名" 
   if "" NEQ "!主功能_添加一个系统分区的启动项_efi启动方式!" echo. 
) 
if "" NEQ "!主功能_添加一个系统分区的启动项_efi启动方式!" ( 
   call :添加一个系统分区的启动项 "%~1" "主功能_添加一个系统分区的启动项_系统盘符" "主功能_添加一个系统分区的启动项_efi启动方式" "主功能_添加一个系统分区的启动项_启动名" 
) 
echo. 
echo  添加一个系统分区的启动项完毕! ...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:主功能_添加WinPE或WinRE启动项 
set "主功能_添加WinPE或WinRE启动项_新建启动项名=" 
set "主功能_添加WinPE或WinRE启动项_mbr启动方式=" 
set "主功能_添加WinPE或WinRE启动项_efi启动方式=" 
set "主功能_添加WinPE或WinRE启动项_bcd启动类型=" 
set "主功能_添加WinPE或WinRE启动项_wim文件=" 
echo. 
call :获取BCD文件的启动类型 "%~1" "主功能_添加WinPE或WinRE启动项_bcd启动类型" 
if "" EQU "!主功能_添加WinPE或WinRE启动项_bcd启动类型!" ( 
 
   echo  *****您选择的BCD文件数据格式不合法,没有获取到BCD文件的启动方式,无法添加启动项***** 
   goto :eof 
) 
for %%a in (!主功能_添加WinPE或WinRE启动项_bcd启动类型!) do ( 
   if /i "mbr" EQU "%%a" set "主功能_添加WinPE或WinRE启动项_mbr启动方式=.exe" 
   if /i "efi" EQU "%%a" set "主功能_添加WinPE或WinRE启动项_efi启动方式=.efi" 
) 
 
call :脚本选择文件扩展名类型的文件 "wim" "主功能_添加WinPE或WinRE启动项_wim文件" 
if "" EQU "!主功能_添加WinPE或WinRE启动项_wim文件!" goto :eof 
for %%a in ("!主功能_添加WinPE或WinRE启动项_wim文件!") do set "主功能_添加WinPE或WinRE启动项_新建启动项名=%%~nxa" 
set /p 主功能_添加WinPE或WinRE启动项_新建启动项名=.请指定新建启动项名,回车默认(!主功能_添加WinPE或WinRE启动项_新建启动项名!): 
if "" NEQ "!主功能_添加WinPE或WinRE启动项_mbr启动方式!" ( 
   call :添加WinPE或WinRE启动项 "%~1" "主功能_添加WinPE或WinRE启动项_wim文件" "主功能_添加WinPE或WinRE启动项_mbr启动方式" "主功能_添加WinPE或WinRE启动项_新建启动项名" 
) 
if "" NEQ "!主功能_添加WinPE或WinRE启动项_efi启动方式!" ( 
   call :添加WinPE或WinRE启动项 "%~1" "主功能_添加WinPE或WinRE启动项_wim文件" "主功能_添加WinPE或WinRE启动项_efi启动方式" "主功能_添加WinPE或WinRE启动项_新建启动项名" 
) 
echo. 
echo  添加一个WinPE或WinRE启动项完毕! ...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:主功能_添加一个VHD文件启动项 
set "主功能_添加一个VHD文件启动项_新建启动项名=" 
set "主功能_添加一个VHD文件启动项_mbr启动方式=" 
set "主功能_添加一个VHD文件启动项_efi启动方式=" 
set "主功能_添加一个VHD文件启动项_bcd启动类型=" 
set "主功能_添加一个VHD文件启动项_vhd文件=" 
echo. 
call :获取BCD文件的启动类型 "%~1" "主功能_添加一个VHD文件启动项_bcd启动类型" 
if "" EQU "!主功能_添加一个VHD文件启动项_bcd启动类型!" ( 
   echo  *****您选择的BCD文件数据格式不合法,没有获取到BCD文件的启动方式,无法添加启动项***** 
   goto :eof 
) 
for %%a in (!主功能_添加一个VHD文件启动项_bcd启动类型!) do ( 
   if /i "mbr" EQU "%%a" set "主功能_添加一个VHD文件启动项_mbr启动方式=.exe" 
   if /i "efi" EQU "%%a" set "主功能_添加一个VHD文件启动项_efi启动方式=.efi" 
) 
 
call :脚本选择文件扩展名类型的文件 "vhd" "主功能_添加一个VHD文件启动项_vhd文件" 
if "" EQU "!主功能_添加一个VHD文件启动项_vhd文件!" goto :eof 
 
for %%a in ("!主功能_添加一个VHD文件启动项_vhd文件!") do set "主功能_添加一个VHD文件启动项_新建启动项名=%%~nxa" 
set /p 主功能_添加一个VHD文件启动项_新建启动项名=.请指定新建启动项名,回车默认(!主功能_添加一个VHD文件启动项_新建启动项名!): 
 
if "" NEQ "!主功能_添加一个VHD文件启动项_mbr启动方式!" ( 
   call :添加一个VHD文件启动项 "%~1" "主功能_添加一个VHD文件启动项_vhd文件" "主功能_添加一个VHD文件启动项_mbr启动方式" "主功能_添加一个VHD文件启动项_新建启动项名" 
) 
if "" NEQ "!主功能_添加一个VHD文件启动项_efi启动方式!" ( 
   call :添加一个VHD文件启动项 "%~1" "主功能_添加一个VHD文件启动项_vhd文件" "主功能_添加一个VHD文件启动项_efi启动方式" "主功能_添加一个VHD文件启动项_新建启动项名" 
) 
echo. 
echo  添加一个VHD文件启动项完毕! ...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:主功能_添加NTLDR启动项或实模式启动项 
set "主功能_添加NTLDR启动项或实模式启动项_新建启动项名=" 
set "主功能_添加NTLDR启动项或实模式启动项_NTLDR文件=" 
echo. 
set /p 主功能_添加NTLDR启动项或实模式启动项_NTLDR文件=.请选择输入NTLDR文件或实模式启动文件,(支持文件拖拽): 
if "" EQU "!主功能_添加NTLDR启动项或实模式启动项_NTLDR文件!" ( 
   echo  *****指定启动文件,无法添加启动项***** 
   goto :eof 
) 
 
set "主功能_添加NTLDR启动项或实模式启动项_NTLDR文件=!主功能_添加NTLDR启动项或实模式启动项_NTLDR文件:"=!" 
 
for %%a in ("!主功能_添加NTLDR启动项或实模式启动项_NTLDR文件!") do ( 
   if ":" NEQ "!主功能_添加NTLDR启动项或实模式启动项_NTLDR文件:~1,1!" set "主功能_添加NTLDR启动项或实模式启动项_NTLDR文件=%~dp0%%a" 
   set "主功能_添加NTLDR启动项或实模式启动项_新建启动项名=%%~nxa" 
) 
 
call :添加NTLDR启动项或实模式启动项 "%~1" "主功能_添加NTLDR启动项或实模式启动项_NTLDR文件" "主功能_添加NTLDR启动项或实模式启动项_新建启动项名" 
echo. 
echo  添加NTLDR启动项或实模式启动项完毕! ...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:主功能_创建一个基本BCD文件 
echo. 
set "主功能_创建一个基本BCD文件_启动类型=M" 
echo  请选择创建BCD文件类型: 
echo ========================================================================= 
echo. 
echo     M.创建一个基本的MBR引导BCD文件     E.创建一个基本的EFI引导BCD文件     
echo. 
echo ========================================================================= 
set /p 主功能_创建一个基本BCD文件_启动类型=.请输入您选择的BCD文件类型(字母不区分大小写): 
set "主功能_创建一个基本BCD文件_输出目录=%SystemDrive%\Users\Public\Desktop" 
set /p 主功能_创建一个基本BCD文件_输出目录=.请输入创建的BCD文件保存目录(回车默认!主功能_创建一个基本BCD文件_输出目录!): 
call :主功能_创建一个基本BCD文件_001 "主功能_创建一个基本BCD文件_输出目录" 
( mkdir "!主功能_创建一个基本BCD文件_输出目录!")>nul 2>nul 
if not exist "!主功能_创建一个基本BCD文件_输出目录!\" ( 
   echo. 
   echo  ***您的选择了无效的输出目录,无法创建BCD文件*** 
   goto :eof 
) 
if /i "m" EQU "!主功能_创建一个基本BCD文件_启动类型!" call :创建一个基本BCD文件 "MBR" "主功能_创建一个基本BCD文件_输出目录" 
if /i "e" EQU "!主功能_创建一个基本BCD文件_启动类型!" call :创建一个基本BCD文件 "EFI" "主功能_创建一个基本BCD文件_输出目录" 
if /i "m" NEQ "!主功能_创建一个基本BCD文件_启动类型!" if /i "e" NEQ "!主功能_创建一个基本BCD文件_启动类型!" ( 
   echo. 
   echo  ***您的选择有误无法创建BCD文件*** 
) 
echo. 
echo  创建一个基本BCD文件完毕! ...... 
goto :eof 
:主功能_创建一个基本BCD文件_001 
if "" NEQ "%~1" if "" NEQ "!%~1!" if "\" EQU "!%~1:~-1!" set "%~1=!%~1:~0,-1!" & goto %~0 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:添加一个系统分区的启动项 
if /i ".exe" NEQ "!%~3!" if /i ".efi" NEQ "!%~3!" ( 
   echo  *****您的选择输入了不合法的启动方式:!%~3!***** 
   goto :eof 
) 
set "添加一个系统分区的启动项_启动方式=" 
if /i ".exe" EQU "!%~3!" set "添加一个系统分区的启动项_启动方式=MBR" 
if /i ".efi" EQU "!%~3!" set "添加一个系统分区的启动项_启动方式=EFI" 
echo  正在添加盘符:!%~2! 的!%~4!系统的启动项,启动方式为:!添加一个系统分区的启动项_启动方式! 
set "添加一个系统分区的启动项_现有系统启动项ID=" 
set "添加一个系统分区的启动项_新建系统启动项ID=" 
set "添加一个系统分区的启动项_BCD文件=%~1" 
set "添加一个系统分区的启动项_BCD文件命令=" 
set "添加一个系统分区的启动项_临时文件=%Random%_%Random%.ini" 
call :获取一个BCD文件的BCD文件路径命令 "添加一个系统分区的启动项_BCD文件" "添加一个系统分区的启动项_BCD文件命令" 
if "" EQU "!添加一个系统分区的启动项_BCD文件命令!" ( 
   echo  *****您的选择了不合法BCD文件:%~1***** 
   goto :eof 
) 
call :从BCD文件查找一个系统分区启动项ID "%~1" "添加一个系统分区的启动项_现有系统启动项ID" "!%~3!" 
if "" EQU "!添加一个系统分区的启动项_现有系统启动项ID!" ( 
   ( bcdedit !添加一个系统分区的启动项_BCD文件命令! /create /d "!%~4!" /application osloader )>!添加一个系统分区的启动项_临时文件! 
   for /f "tokens=2 delims={}"  %%a in (!添加一个系统分区的启动项_临时文件!) do set "添加一个系统分区的启动项_新建系统启动项ID={%%a}" 
   ( del /f/q "!添加一个系统分区的启动项_临时文件!" )>nul 2>nul 
   goto :添加一个系统分区的启动项_001 
) 
( bcdedit !添加一个系统分区的启动项_BCD文件命令! /copy !添加一个系统分区的启动项_现有系统启动项ID! /d "!%~4!" )>!添加一个系统分区的启动项_临时文件! 
for /f "tokens=2 delims={}"  %%a in (!添加一个系统分区的启动项_临时文件!) do set "添加一个系统分区的启动项_新建系统启动项ID={%%a}" 
( del /f/q "!添加一个系统分区的启动项_临时文件!" )>nul 2>nul 
:添加一个系统分区的启动项_001 
if "" EQU "!添加一个系统分区的启动项_新建系统启动项ID!" ( 
   echo  *****无法获取新建启动项的项ID***** 
   goto :eof 
) 
( bcdedit !添加一个系统分区的启动项_BCD文件命令! /deletevalue !添加一个系统分区的启动项_新建系统启动项ID! recoverysequence )>nul 2>nul 
( bcdedit !添加一个系统分区的启动项_BCD文件命令! /deletevalue !添加一个系统分区的启动项_新建系统启动项ID! resumeobject )>nul 2>nul 
echo. 
bcdedit !添加一个系统分区的启动项_BCD文件命令! /set !添加一个系统分区的启动项_新建系统启动项ID! description "!添加一个系统分区的启动项_启动方式!: !%~4!" 
bcdedit !添加一个系统分区的启动项_BCD文件命令! /set !添加一个系统分区的启动项_新建系统启动项ID! device "partition=!%~2!:" 
bcdedit !添加一个系统分区的启动项_BCD文件命令! /set !添加一个系统分区的启动项_新建系统启动项ID! osdevice "partition=!%~2!:" 
bcdedit !添加一个系统分区的启动项_BCD文件命令! /set !添加一个系统分区的启动项_新建系统启动项ID! path "\Windows\system32\winload!%~3!" 
bcdedit !添加一个系统分区的启动项_BCD文件命令! /set !添加一个系统分区的启动项_新建系统启动项ID! systemroot  \windows 
bcdedit !添加一个系统分区的启动项_BCD文件命令! /displayorder !添加一个系统分区的启动项_新建系统启动项ID! /addlast 
echo. 
echo  完成添加盘符:!%~2! 的!%~4!系统的启动项,启动方式为:!添加一个系统分区的启动项_启动方式! ...... 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:添加NTLDR启动项或实模式启动项 
set "添加NTLDR启动项或实模式启动项_现有NTLDR启动项ID=" 
set "添加NTLDR启动项或实模式启动项_新建NTLDR启动项ID=" 
set "添加NTLDR启动项或实模式启动项_NTLDR文件=!%~2!" 
set "添加NTLDR启动项或实模式启动项_临时文件=%Random%_%Random%.ini" 
set "添加NTLDR启动项或实模式启动项_BCD文件=%~1" 
set "添加NTLDR启动项或实模式启动项_BCD文件命令=" 
 
echo. 
call :获取一个BCD文件的BCD文件路径命令 "添加NTLDR启动项或实模式启动项_BCD文件" "添加NTLDR启动项或实模式启动项_BCD文件命令" 
if "" EQU "!添加NTLDR启动项或实模式启动项_BCD文件命令!" ( 
   echo  *****您的选择了不合法BCD文件:%~1***** 
   goto :eof 
) 
 
( bcdedit !添加NTLDR启动项或实模式启动项_BCD文件命令! /copy {ntldr} /d "!%~3!" )>!添加NTLDR启动项或实模式启动项_临时文件! 
if 0 NEQ %errorlevel% ( bcdedit !添加NTLDR启动项或实模式启动项_BCD文件命令! /create {ntldr} /d "!%~3!" )>!添加NTLDR启动项或实模式启动项_临时文件! 
for /f "tokens=2 delims={}"  %%a in (!添加NTLDR启动项或实模式启动项_临时文件!) do set "添加NTLDR启动项或实模式启动项_新建NTLDR启动项ID={%%a}" 
( del /f/q "!添加NTLDR启动项或实模式启动项_临时文件!" )>nul 2>nul 
 
if "" EQU "!添加NTLDR启动项或实模式启动项_新建NTLDR启动项ID!" ( 
   echo  *****无法获取新建启动项的项ID***** 
   goto :eof 
) 
 
bcdedit !添加NTLDR启动项或实模式启动项_BCD文件命令! /set !添加NTLDR启动项或实模式启动项_新建NTLDR启动项ID! device partition=!添加NTLDR启动项或实模式启动项_NTLDR文件:~0,2! 
bcdedit !添加NTLDR启动项或实模式启动项_BCD文件命令! /set !添加NTLDR启动项或实模式启动项_新建NTLDR启动项ID! path "!添加NTLDR启动项或实模式启动项_NTLDR文件:~2!" 
if /i "!添加NTLDR启动项或实模式启动项_BCD文件:~0,1!" EQU "!添加NTLDR启动项或实模式启动项_NTLDR文件:~0,1!" ( 
   bcdedit !添加NTLDR启动项或实模式启动项_BCD文件命令! /set !添加NTLDR启动项或实模式启动项_新建NTLDR启动项ID! device boot 
) 
bcdedit !添加NTLDR启动项或实模式启动项_BCD文件命令! /displayorder !添加NTLDR启动项或实模式启动项_新建NTLDR启动项ID! /addlast 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:添加一个VHD文件启动项 
set "添加一个VHD文件启动项_新建vhd启动项ID=" 
set "添加一个VHD文件启动项_vhd文件=!%~2!" 
set "添加一个VHD文件启动项_临时文件=%Random%_%Random%.ini" 
set "添加一个VHD文件启动项_BCD文件=%~1" 
set "添加一个VHD文件启动项_BCD文件命令=" 
set "添加一个VHD文件启动项_启动方式=" 
 
echo. 
if /i ".exe" NEQ "!%~3!" if /i ".efi" NEQ "!%~3!" ( 
   echo  *****您的选择输入了不合法的启动方式:!%~3!***** 
   goto :eof 
) 
 
call :获取一个BCD文件的BCD文件路径命令 "添加一个VHD文件启动项_BCD文件" "添加一个VHD文件启动项_BCD文件命令" 
if "" EQU "!添加一个VHD文件启动项_BCD文件命令!" ( 
   echo  *****您的选择了不合法BCD文件:%~1***** 
   goto :eof 
) 
 
set "添加一个VHD文件启动项_启动方式=" 
if /i ".exe" EQU "!%~3!" set "添加一个VHD文件启动项_启动方式=MBR" 
if /i ".efi" EQU "!%~3!" set "添加一个VHD文件启动项_启动方式=EFI" 
 
echo  开始添加vhd文件:!%~2! 
echo       启动项名为:!%~4! 
echo       启动方式为:!添加一个VHD文件启动项_启动方式! 
echo. 
 
( bcdedit !添加一个VHD文件启动项_BCD文件命令! /create /d "!%~4!" /application osloader )>!添加一个VHD文件启动项_临时文件! 
for /f "tokens=2 delims={}"  %%a in (!添加一个VHD文件启动项_临时文件!) do set "添加一个VHD文件启动项_新建vhd启动项ID={%%a}" 
( del /f/q "!添加一个VHD文件启动项_临时文件!" )>nul 2>nul 
if "" EQU "!添加一个VHD文件启动项_新建vhd启动项ID!" ( 
   echo  *****无法获取新建vhd启动项的项ID位于BCD文件:%~1中***** 
   goto :eof 
) 
 
bcdedit !添加一个VHD文件启动项_BCD文件命令! /set !添加一个VHD文件启动项_新建vhd启动项ID! description "!添加一个VHD文件启动项_启动方式! VHD : !%~4!" 
bcdedit !添加一个VHD文件启动项_BCD文件命令! /set !添加一个VHD文件启动项_新建vhd启动项ID! device "vhd=[!添加一个VHD文件启动项_vhd文件:~0,2!]!添加一个VHD文件启动项_vhd文件:~2!" 
bcdedit !添加一个VHD文件启动项_BCD文件命令! /set !添加一个VHD文件启动项_新建vhd启动项ID! osdevice "vhd=[!添加一个VHD文件启动项_vhd文件:~0,2!]!添加一个VHD文件启动项_vhd文件:~2!" 
bcdedit !添加一个VHD文件启动项_BCD文件命令! /set !添加一个VHD文件启动项_新建vhd启动项ID! path \windows\system32\winload!%~3! 
bcdedit !添加一个VHD文件启动项_BCD文件命令! /set !添加一个VHD文件启动项_新建vhd启动项ID! systemroot \windows 
bcdedit !添加一个VHD文件启动项_BCD文件命令! /set !添加一个VHD文件启动项_新建vhd启动项ID! detecthal yes 
bcdedit !添加一个VHD文件启动项_BCD文件命令! /displayorder !添加一个VHD文件启动项_新建vhd启动项ID! /addlast 
 
echo. 
echo  完成添加vhd文件:!%~2! 
echo       启动项名为:!%~4! 
echo       启动方式为:!添加一个VHD文件启动项_启动方式! 
goto :eof 
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 
:添加WinPE或WinRE启动项 
rem "添加WinPE或WinRE启动项_sdi文件" 
set "添加WinPE或WinRE启动项_现有wim启动项ID=" 
set "添加WinPE或WinRE启动项_新建wim启动项ID=" 
set "添加WinPE或WinRE启动项_新建sdi设备项ID=" 
set "添加WinPE或WinRE启动项_sdi文件=" 
set "添加WinPE或WinRE启动项_wim文件=!%~2!" 
set "添加WinPE或WinRE启动项_临时文件=%Random%_%Random%.ini" 
set "添加WinPE或WinRE启动项_BCD文件=%~1" 
set "添加WinPE或WinRE启动项_BCD文件命令=" 
 
echo. 
if /i ".exe" NEQ "!%~3!" if /i ".efi" NEQ "!%~3!" ( 
   echo  *****您的选择输入了不合法的启动方式:!%~3!***** 
   goto :eof 
) 
 
call :获取一个BCD文件的BCD文件路径命令 "添加WinPE或WinRE启动项_BCD文件" "添加WinPE或WinRE启动项_BCD文件命令" 
if "" EQU "!添加WinPE或WinRE启动项_BCD文件命令!" ( 
   echo  *****您的选择了不合法BCD文件:%~1***** 
   goto :eof 
) 
 
set "添加WinPE或WinRE启动项_启动方式=" 
if /i ".exe" EQU "!%~3!" set "添加WinPE或WinRE启动项_启动方式=MBR" 
if /i ".efi" EQU "!%~3!" set "添加WinPE或WinRE启动项_启动方式=EFI" 
 
echo  开始添加Wim文件:!%~2! 
echo       启动项名为:!%~4! 
echo       启动方式为:!添加WinPE或WinRE启动项_启动方式! 
echo. 
 
set "添加WinPE或WinRE启动项_现有wim启动项ID=" 
call :从BCD文件查找一个WIM启动项ID "%~1" "添加WinPE或WinRE启动项_现有wim启动项ID" "添加WinPE或WinRE启动项_新建sdi设备项ID" "!%~3!" 
if "" NEQ "!添加WinPE或WinRE启动项_现有wim启动项ID!" if "" NEQ "!添加WinPE或WinRE启动项_新建sdi设备项ID!" goto :添加WinPE或WinRE启动项_002 
 
::::::::::::::::::::::::::::::::::::: 
:添加WinPE或WinRE启动项_001 
 |   
 
 
 
 |