无忧启动论坛

标题: 重启更换指定系统进入的快速方法 [打印本页]

作者: 呆萌鼠    时间: 2024-9-8 18:46
标题: 重启更换指定系统进入的快速方法
本帖最后由 呆萌鼠 于 2024-9-9 14:07 编辑

                               重启更换指定系统进入的快速方法
多系统的想重启进别的系统不用在引导界面选,直接进,运行bat或软件--输入一个数字--回车三步结束。
是一次性的,再启动会重回到默认系统。
代码:
  1. @echo off
  2. chcp 65001 >nul

  3. :: 检查是否以管理员身份运行
  4. net session >nul 2>&1
  5. if %errorLevel% neq 0 (
  6.     echo 请以管理员身份运行此脚本。
  7.     echo 正在尝试以管理员身份重新运行...
  8.     :: 重新以管理员身份运行
  9.     powershell -Command "Start-Process '%~f0' -Verb RunAs"
  10.     exit
  11. )

  12. :: 如果已是管理员权限,则执行以下命令
  13. setlocal enabledelayedexpansion

  14. REM 初始化变量
  15. set index=1

  16. REM 获取系统引导配置列表
  17. for /f "tokens=1,2,* delims= " %%A in ('bcdedit /enum ^| findstr "identifier description"') do (
  18.     if /i "%%A"=="identifier" (
  19.         REM 存储每个操作系统的标识符
  20.         set id!index!=%%B
  21.     ) else if /i "%%A"=="description" (
  22.         REM 存储每个操作系统的描述
  23.         set name!index!=%%C
  24.         echo !index!: %%C
  25.         set /a index+=1
  26.     )
  27. )

  28. REM 提示用户选择系统
  29. set /p choice=请选择要启动的系统对应的数字(例如1, 2, 3...):

  30. REM 验证输入是否为有效数字
  31. if not defined id%choice% (
  32.     echo 输入无效,请重试。
  33.     pause
  34.     exit /b
  35. )

  36. REM 设置一次性启动项
  37. bcdedit /bootsequence !id%choice%!

  38. REM 重启系统
  39. shutdown /r /t 0
复制代码
复制到记事本保存,把后缀改为bat即可。
想改成exe的用论坛里的软件,请自行搜索,我昨天的帖子里也有。
使用方法

运行后出现对话框,选择对应系统前面的数字,输入数字,回车,结束。

我只有win11系统带2硬盘PE不知道为啥显示这么少,水平有限,请大佬们多多指教!

成品及制作过程下载地址123pan.com/s/DdErVv-XaKHA

不经常改系统的建议转9#楼,有一键直达!
补充:用论坛里的bat转exe,快捷键可以放到任务栏和桌面右键菜单,详细情况请参考我的帖子由GPT3.5 制作的批量文件重命名软件添加右键制作过程更新 - 综合讨论区 - 无忧启动论坛 - Powered by Discuz! (wuyou.net)

作者: zlq_hysy    时间: 2024-9-8 18:54
没支持VHD?



作者: yyz2191958    时间: 2024-9-8 18:54
支持原创
作者: yyz2191958    时间: 2024-9-8 18:57
cls
echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo. %【留下 10个 空行】%
echo.                                 重启进 Win7 ?
pause>nul
::【数字——各电脑不同。由 “引导菜单.bat” 获取(或 “创建PE启动菜单.exe”)】
BCDEdit /default {7de55357-21e2-11ee-b8ea-00e04e6072c8} >nul 2>nul
cls
shutdown.exe   -r   -t   0         %【重新启动】%
:A
exit
---------------------------------------------------------------------------------
cls
echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo.&echo. %【留下 10个 空行】%
echo.                                   重启进 PE ?
pause>nul
::【数字——各电脑不同。由 “引导菜单.bat” 获取(或 “创建PE启动菜单.exe”)】
BCDEdit /default {4270dc10-21f1-11ee-bd8e-788a8610df2d} >nul 2>nul
cls
shutdown.exe   -r   -t   0            %【重新启动】%
:A
exit

作者: wn168cn@163.com    时间: 2024-9-8 19:01
点赞原著分享
作者: lyrgcy    时间: 2024-9-8 19:24
怎么显示这样呢,PE也没显示出来,不支持中文?

QQ截图20240908192254.png (12.21 KB, 下载次数: 0)

QQ截图20240908192254.png

作者: yc2428    时间: 2024-9-8 19:24

谢谢分享
作者: lyrgcy    时间: 2024-9-8 19:38
本帖最后由 lyrgcy 于 2024-9-8 19:40 编辑

改保存UTF-8编码可以了,但中文的PE菜单没显示出来,windows 10也显示不全,只有10

QQ图片20240908193605.png (42.62 KB, 下载次数: 0)

QQ图片20240908193605.png

作者: 呆萌鼠    时间: 2024-9-8 19:39
本帖最后由 呆萌鼠 于 2024-9-10 06:00 编辑

标识码识别制作一键重启
管理员运行cmd,
输入bcdedit /enum
出现
一次性重启直达的bat代码
  1. @echo off
  2. chcp 65001 >nul

  3. :: 检查是否以管理员身份运行
  4. net session >nul 2>&1
  5. if %errorLevel% neq 0 (
  6. echo 请以管理员身份运行此脚本。
  7. echo 正在尝试以管理员身份重新运行...
  8. :: 重新以管理员身份运行
  9. powershell -Command "Start-Process '%~f0' -Verb RunAs"
  10. exit
  11. )

  12. :: 如果已是管理员权限,则执行以下命令
  13. REM 设置下次启动时进入目标操作系统(一次性启动)
  14. bcdedit /bootsequence {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}

  15. REM 立即重启系统
  16. shutdown /r /t 0
复制代码

复制代码
在bcdedit /bootsequence {           }括号里输入对应系统的符号即可,
由于本人水平有限,需要的特殊情况的代码可以自行修改。十分感谢各位的回馈,谢谢!

                                    

更新由于上面我没有办法更新,故开了新帖子,解决了缺少Windows字样不显示的问题,请移步【新提醒】重启更换指定系统进入的快速方法(更新) - 综合讨论区 - 无忧启动论坛 - Powered by Discuz! (wuyou.net)


作者: 2012baswcss    时间: 2024-9-8 19:39
谢谢分享
作者: 1393900376    时间: 2024-9-8 19:50
好帮手,再也不愁了,谢楼主分享,非常不错 !!
作者: lyrgcy    时间: 2024-9-8 20:09
唯一就是菜单显示不全,也不能显示中文菜单,其他都正常
作者: dxdgood    时间: 2024-9-8 20:15
学习了谢谢!
作者: 2012Doan6625    时间: 2024-9-8 20:27
谢谢分享
作者: lyrgcy    时间: 2024-9-8 20:31
lyrgcy 发表于 2024-9-8 20:09
唯一就是菜单显示不全,也不能显示中文菜单,其他都正常

好的,谢谢
作者: 2012andyle113    时间: 2024-9-8 20:36
不行,获取到的完全是错误的,第一个是个boot manager但是我MBR模式启动根本不是这样的,3个10启动项根本没有显示,一个7和PE启动项倒是显示的
作者: hn2cc123456    时间: 2024-9-8 20:45
6666
作者: hn2cc123456    时间: 2024-9-8 20:45
6666
作者: newswan    时间: 2024-9-8 20:51
本帖最后由 newswan 于 2024-9-8 20:58 编辑
  1. @echo off

  2. setlocal enabledelayedexpansion


  3. set/a _idx_=0

  4. for /f "tokens=1,* delims= " %%A in ('bcdedit /enum') do (
  5.     set _str_=%%A
  6.     if "!_str_:~0,1!" == "-" (set/a _idx_+=1)
  7.     if /i "%%A" == "identifier" (set _id_!_idx_!_=%%B)
  8.     if /i "%%A" == "标识符" (set _id_!_idx_!_=%%B)
  9.     if /i "%%A" == "description" (echo !_idx_!: %%B)
  10.     set _str_=
  11. )
  12. set _
  13. endlocal
复制代码
解决 description 和 中文的问题,试试
作者: 123hope    时间: 2024-9-8 21:31
能用,显示不完整。vhd-win7干脆就有给数字序号,后面什么都没有,但使用没问题
作者: 呆萌鼠    时间: 2024-9-8 21:54
试了半天也无果,每天再看看吧。各位坛友,早点休息吧!谢谢热心的坛友!
作者: ppll2030    时间: 2024-9-8 21:55
貌似都对得上,就是头尾识别错误,再接再厉啊

作者: 呆萌鼠    时间: 2024-9-8 22:58
ppll2030 发表于 2024-9-8 21:55
貌似都对得上,就是头尾识别错误,再接再厉啊

你是改的还是原来的,效果这么好,如果是改的就分享一下呗!先谢谢了!
作者: hmaaaa    时间: 2024-9-8 23:05
謝謝大大分享~感恩 ^^ 有您真好~!辛苦了!
作者: ehan    时间: 2024-9-8 23:06
各电脑不同。由 “引导菜单.bat” 获取
作者: ppll2030    时间: 2024-9-8 23:27
呆萌鼠 发表于 2024-9-8 22:58
你是改的还是原来的,效果这么好,如果是改的就分享一下呗!先谢谢了!

就是你一楼的代码啊。
跟你的不是一样吗
我已经不折腾启动菜单了。都是vhd右键直接启动
作者: 呆萌鼠    时间: 2024-9-9 00:19
本帖最后由 呆萌鼠 于 2024-9-11 19:56 编辑

终于我弄明白了,应该是命名问题!根据22#楼的图片,与我过去存档的cmd改本地系统名称的代码,想到有可能是命名问题,于是修改了本地win11名称
管理员运行cmd
  1. BCDEdit /set {current} description "Windows 11  professional edition"
复制代码
结果一试成了,想了一下原因,标识码是最最底层的唯一识别系统的东西,别的软件都是根据它识别系统,由于过于底层也就必须全英文名称才可以识别,否则会出现乱码,我由于不会代码,所以过去搜集了不少实用的代码保存,结果今天真用上了。获取系统的标识符(identifier)通常是通过使用 bcdedit 命令来完成的,这是 Windows 系统中管理启动配置的主要工具。标识符是一个唯一的 GUID(全局唯一标识符),用于唯一标识每个操作系统或启动项。
我的过去记录里面的代码,说win10及win11系统名称的修改是上面的代码,可以用混用中英文,但是要想使用顶楼重启的代码,必须将引号里的改成正规点的英文,必须本地系统运行改名才有效!
win7系统是管理员运行cmd
  1. BCDEdit /set {3f8fcfd0-3d31-11ea-973d-8d4cb55a61a6} description "Windows 7 x64"
复制代码
XP系统的是
管理员运行cmd
  1. BCDEdit /set {ntldr} description "Windows XP x32"
复制代码

要想使用顶楼代码,必须引号里的改成正规点的英文,必须本地系统运行改名才有效!
不管什么PE都只显示PE两字,
win7 和XP系统的没验证,你们有时间试试看看吧。
暂时总结一下:上面顶楼代码没有问题,是命名的原因。
以上这些可能有误,还得请各位大佬批评指正!
谢谢各位!辛苦了!
现在发现别的改名软件也行,如Easy BCD就可以。





作者: towlzj800801    时间: 2024-9-9 00:28
谢谢分享
作者: AcidBurn    时间: 2024-9-9 05:09
谢谢分享
作者: 呵呵#1861    时间: 2024-9-9 05:25
谢谢分享
作者: wang1126    时间: 2024-9-9 06:02
谢谢楼主分享
作者: yzqmxh    时间: 2024-9-9 08:09
学习了
作者: yzw92    时间: 2024-9-9 08:35
谢谢分享
作者: Climbing    时间: 2024-9-9 08:51
呆萌鼠 发表于 2024-9-8 19:39
标识码识别制作一键重启管理员运行cmd,输入bcdedit /enum出现一次性重启直达的bat代码在bcdedit /bootsequ ...

谢谢楼主分享,学到了这个bcdedit /bootsequence,第一次听说。

windows的bootmgr一直比较弱智,没有类似grub4dos的savedefault功能。

这个命令客观上弥补了一些这方面的缺陷。
作者: sulong    时间: 2024-9-9 09:35
学到了,谢谢分享
作者: 1348852779    时间: 2024-9-9 10:04
感谢楼主提供发现
作者: zx6769    时间: 2024-9-9 13:03
谢楼主分享
作者: 进士小站    时间: 2024-9-9 13:05
下载下来学习一下
作者: guong    时间: 2024-9-9 13:10
感谢分享
作者: zqfeng01    时间: 2024-9-9 13:42
学习学习
作者: fegr    时间: 2024-9-9 13:48
谢谢分享
作者: lx5815    时间: 2024-9-9 14:43
谢谢分享
作者: zy8428    时间: 2024-9-9 14:46
感谢分享
作者: 唐峰    时间: 2024-9-9 18:07
谢谢!get到了。
作者: as8686886    时间: 2024-9-10 10:22
抱走收藏,不客气了,期待更好的作品
作者: 门口    时间: 2024-9-10 11:42
关于这个,实际我用的 iReboot 软件。
当然,手工写命令运行命令也是可行的,不过我不太愿意写这个。

这个软件是免费的(会安装服务),是开发 EasyBCD 公司出的。

作者: hilsonma    时间: 2024-9-11 01:15
@echo off
setlocal enabledelayedexpansion
set i=0
echo.
for /f "tokens=1,* delims= " %%a in ('bcdedit /enum') do (
    if "%%a"=="标识符" set id_!i!=%%b
    if "%%a"=="description" (
        if !i! GTR 0 echo !i!.%%b
        set /a i+=1
    )
)

set n=1
echo.
set /p n=请输入数字选择(默认%n%):
if not defined id_%n% goto:eof
bcdedit /bootsequence !id_%n%!
shutdown /r /t 0
作者: ehan    时间: 2024-9-11 02:07
怎么报错了
作者: 2011jia98777    时间: 2024-9-11 05:39
谢谢分享
作者: cfq001    时间: 2024-9-11 08:07
学习了,谢谢。
作者: hilsonma    时间: 2024-9-11 13:20
ehan 发表于 2024-9-11 02:07
怎么报错了

请右键以管理员身份运行




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