以安全模式重新启动计算机 - 优化代码

时间:2012-12-19 20:21:21

标签: batch-file vbscript restart safe-mode

我有一个脚本,它将以安全模式重新启动Windows计算机。

此vbscript调用提示UAC提升的BAT文件,并以安全模式重新启动计算机。

有关如何优化此脚本的任何建议? 这可以在Windows 8中使用吗?

[code]Dim oShell, retCode
Set oShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Wscript.Shell")

retCode = oShell.Popup("Do you want to restart your computer in Safe Mode", 0, "Restart In SafeMode", 4 + 48)

Select Case retCode
case 6, -1
objShell.Run "elevaterestart.bat"
case 7
WScript.quit(1) 'No was chosen
End Select

更新:我按照建议更新了脚本,并在用户选择Operation Canceled

时添加了no弹出窗口
Dim oShell, retCode, MsgBox
Set oShell = WScript.CreateObject("WScript.Shell")
Set objShell = CreateObject("Wscript.Shell")

retCode = oShell.popup("Do you want to restart your computer in Safe Mode", 0, "Restart                In Safe Mode", 4 + 48 + 256)


If retCode = 6 Or retCode = -1 Then
objShell.Run "elevaterestart.bat"
Else
oShell.popup "Operation Canceled", 0, "Restart In Safe Mode", 0 + 64 + 0
End If`

1 个答案:

答案 0 :(得分:0)

似乎不需要Set objShell行,因为你的objShell变量从未被使用过,并且对oShell来说是多余的。

当文件结束时,VBScripts将在没有wscript.quit(ExitCode)调用的情况下退出,但是如果你从其他地方调用它,那么1退出代码将允许你知道用户说他们做了不想重启(当没有错误到达文件末尾时,默认退出代码为0)。

我不会使用案例陈述 - 如果您从一系列选项中进行选择,通常只会使用样式。我更有可能将最后一部分编码为这样,但这根本不会改变功能。

If retCode = 6 Or retCode = -1 Then
    objShell.Run "elevaterestart.bat"
Else
    WScript.quit(1)
End If