远程桌面下使用批处理在系统内进行多系统切换[bat]

关于多系统切换,在进入系统前就能用键盘选择并切换,这个脚本是用于已经进入系统后再进行系统切换,适用于服务器环境,也就是你需要多系统,但你只能远程桌面连接服务器,不能跑到机房给服务器插个键盘显示器来切换系统,这个批处理就能解决这个问题。
脚本内容如下:

@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,它会自动判断并读出标识符,无需手动去查系统标识符,只需要改一改脚本中的系统粗略描述即可。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

搜索
«   2019年11月   »
123
45678910
11121314151617
18192021222324
252627282930
最新留言
    标签列表

      Powered By Z-BlogPHP 1.5.2 Zero