summarylogtreecommitdiffstats
path: root/sk-boot-to-windows.sh
diff options
context:
space:
mode:
Diffstat (limited to 'sk-boot-to-windows.sh')
-rw-r--r--sk-boot-to-windows.sh50
1 files changed, 20 insertions, 30 deletions
diff --git a/sk-boot-to-windows.sh b/sk-boot-to-windows.sh
index 0c101b4e0d59..e1b20ec2c3c7 100644
--- a/sk-boot-to-windows.sh
+++ b/sk-boot-to-windows.sh
@@ -1,35 +1,25 @@
#!/bin/bash
-systemctl reboot --boot-loader-entry=auto-windows
-# 获取上一个命令的退出状态码
-exit_status=$?
+# 使用 efibootmgr 列出当前的 EFI 启动项,并将输出保存到变量 boot_list 中
+boot_list=$(efibootmgr)
-# 检查退出状态码是否为0(正常)
-if [ $exit_status -ne 0 ]; then
- # 如果不正常,执行下一层逻辑
- echo "命令执行不正常,状态码: $exit_status"
-
- # 使用 efibootmgr 列出当前的 EFI 启动项,并将输出保存到变量 boot_list 中
- boot_list=$(efibootmgr)
+# 使用 grep 命令查找包含 "Windows Boot Manager" 的启动项行,并提取其编号
+boot_entry=$(echo "$boot_list" | grep -i "Windows Boot Manager" | grep -i "bootmgfw.efi" | awk '{print $1}')
- # 使用 grep 命令查找包含 "Windows Boot Manager" 的启动项行,并提取其编号
- boot_entry=$(echo "$boot_list" | grep -i "Windows Boot Manager" | awk '{print $1}')
+# 去掉启动项编号中的前缀 "Boot" 和后面的星号 "*",只保留编号部分
+boot_entry=${boot_entry#Boot}
+boot_entry=${boot_entry%\*}
+echo "找到的 'Windows Boot Manager' 启动项编号为: $boot_entry"
- # 去掉启动项编号中的前缀 "Boot" 和后面的星号 "*",只保留编号部分
- boot_entry=${boot_entry#Boot}
- boot_entry=${boot_entry%\*}
- echo "找到的 'Windows Boot Manager' 启动项编号为: $boot_entry"
-
- # 检查是否找到了 "Windows Boot Manager" 启动项
- if [ -n "$boot_entry" ]; then
- # 找到了,使用 efibootmgr 将其设置为下一次启动项
- sudo efibootmgr -n "$boot_entry"
- echo "已将 'Windows Boot Manager' 设置为下一次启动项。"
- # 在这里添加重启系统的命令,例如 sudo reboot
- sudo reboot
- else
- # 没找到,报错并退出
- echo "找不到 'Windows Boot Manager' 启动项。无法设置下一次启动项。"
- exit 1
- fi
-fi
+# 检查是否找到了 "Windows Boot Manager" 启动项
+if [ -n "$boot_entry" ]; then
+ # 找到了,使用 efibootmgr 将其设置为下一次启动项
+ sudo efibootmgr -n "$boot_entry"
+ echo "已将 'Windows Boot Manager' 设置为下一次启动项。"
+ # 在这里添加重启系统的命令,例如 sudo reboot
+ sudo reboot
+else
+ # 没找到,报错并退出
+ echo "找不到 'Windows Boot Manager' 启动项。无法设置下一次启动项。" >&2
+ exit 1
+fi \ No newline at end of file