使用批处理在系统内进行多系统切换
关于多系统切换,在进入系统前就能用键盘选择并切换,再写一个批处理来解决这个问题你可能觉得我是多此一举。其实这个批处理解决方案源于我的实习工作,适用于服务器环境,也就是你需要多系统,但你只能远程桌面连接服务器,不能跑到机房给服务器插个键盘显示器来切换系统,这个批处理就能解决这个问题。(虽然在系统高级设置里可以选择默认系统然后重启,但相比较,批处理更方便一些。)
脚本语言:Batch 批处理(.bat)
适用系统:PC系统Windows Vista及以后的版本、服务器系统Windows Server 2008及以后的版本。
脚本内容如下:
@echo off
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 请求管理员权限...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
cls
bcdedit /default {d9fad1d5-a16d-11e6-84a0-f06a95fa7099}
shutdown -r -t 0
解释:
cls之前的内容是用来提权的,因为之后的bcdedit需要管理员权限。用了这段内容可以免去右键再以管理员权限运行,直接双击批处理即可。
bcdedit是专门由于修改NT6.x+系列操作系统引导菜单的工具。在以管理员权限打开的CMD下执行bcdedit /?
可以看到详细的帮助信息。这里的/default
参数是设定默认引导项目。后面跟着的{xxxx}是硬盘分区标识符,不同硬盘不同分区的标识符都不同,需要自己查看自己分区的信息确定。在以管理员权限打开的CMD下直接执行bcdedit
即可看到“标识符”。(只能看到非当前系统所在分区的标识符)
shutdown是关机/重启/注销指令,-r为重启参数,-t为时间参数(-t 0即为立即执行)。
提供另外一个才写的全自动脚本
@echo off
setlocal enabledelayedexpansion
>nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
if '%errorlevel%' NEQ '0' (
echo 请求管理员权限...
goto UACPrompt
) else ( goto gotAdmin )
:UACPrompt
echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
"%temp%\getadmin.vbs"
exit /B
:gotAdmin
if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
pushd "%CD%"
CD /D "%~dp0"
cls
del /q %temp%\bcdlist.txt
bcdedit > %temp%\bcdlist.txt
set "strID="
for /f "tokens=1,2* delims=: " %%i in ('findstr /n /r "Win.*7" %temp%\bcdlist.txt') do (
set /a "desLine=%%i"
echo,&echo,
set /a "desLine-=4"
if !desLine! LSS 0 set /a "desLine=0"
for /f "tokens=1,*" %%a in ('more +!desLine! %temp%\bcdlist.txt^|findstr /i /r "标识符"') do (
set "strID=%%b"
goto :next
)
)
:next
bcdedit /default !strID!
bcdedit /timeout 3
shutdown -r -t 0
把本脚本中的Win.*7
改成其他的如Win.*10
,它会自动判断并读出标识符,无需手动去查系统标识符,只需要改一改脚本中的系统粗略描述即可。
扫描二维码,在手机上阅读!
最后由Hazx修改于2017-11-10 12:54