【问题标题】:Restart computer in Safe Mode - Optimize code以安全模式重新启动计算机 - 优化代码
【发布时间】:2012-12-19 20:21:20
【问题描述】:

我有一个脚本可以在安全模式下重新启动 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

更新:我按照建议更新了脚本,并在用户选择 no 时添加了一个 Operation Canceled 弹出窗口

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)

标签: batch-file vbscript restart safe-mode


【解决方案1】:

似乎不需要 Set objShell 行,因为您的 objShell 变量从未使用过,并且与 oShell 是多余的。

当到达文件末尾时,VBScripts 将在没有 wscript.quit(ExitCode) 调用的情况下退出,但如果您从其他地方调用它,则 1 退出代码将让您知道用户说他们做了不想重新启动(到达文件末尾且无错误时的默认退出代码为 0)。

我不会使用 case 语句 - 如果您从一系列选项中进行选择,通常只会在样式方面使用它。我更有可能像这样编写最后一部分,但这根本不会改变功能。

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

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 1970-01-01
    • 2019-03-17
    • 2012-10-27
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    相关资源
    最近更新 更多