0

本质上,我们有 2 个批处理文件,如果您愿意,一个是“包装器”,它调用另一个批处理文件,因此它以/min(最小化)开头。一旦启动了第二个批处理文件,该批处理文件就会结束。

这包含一个循环,它在关闭后不断产生一个 RDP 会话。

问题是,如果用户 ALT-TABs 并关闭批处理,他们只剩下一个空桌面(因为我们的任务是 kill explorer)。如果批处理循环结束,有没有办法强制重启机器?

谢谢!

4

2 回答 2

0

有一个标准的 cmd 命令:

shutdown /r
用法:关机[/i | /l | /s | /r | /g | /一个 | /p | /h | /e | /o] [/混合] [/f]
    [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]

    无 args 显示帮助。这与输入 /? 相同。
    /?显示帮助。这与不键入任何选项相同。
    /i 显示图形用户界面 (GUI)。
               这必须是第一个选项。
    /l 注销。这不能与 /m 或 /d 选项一起使用。
    /s 关闭计算机。
    /r 完全关闭并重新启动计算机。
    /g 完全关闭并重新启动计算机。系统完成后
               重新启动,重新启动所有已注册的应用程序。
    /a 中止系统关闭。
               这只能在超时期间使用。
    /p 在没有超时或警告的情况下关闭本地计算机。
               可以与 /d 和 /f 选项一起使用。
    /h 休眠本地计算机。
               可以与 /f 选项一起使用。
    /hybrid 关闭计算机并为快速启动做好准备。
               必须与 /s 选项一起使用。
    /e 记录计算机意外关闭的原因。
    /o 进入高级启动选项菜单并重新启动计算机。
               必须与 /r 选项一起使用。
    /m \\computer 指定目标计算机。
    /t xxx 将关机前的超时时间设置为 xxx 秒。
               有效范围为 0-315360000(10 年),默认值为 30。
               如果超时时间大于 0,则 /f 参数为
               默示。
    /c "comment" 对重新启动或关闭的原因进行注释。
               最多允许 512 个字符。
    /f 强制关闭正在运行的应用程序而不预先警告用户。
               当值大于 0 时,隐含 /f 参数
               为 /t 参数指定。
    /d [p|u:]xx:yy 提供重新启动或关闭的原因。
               p 表示计划重启或关闭。
               u 表示原因是用户定义的。
               如果既没有指定 p 也没有指定 u,则重新启动或关闭
               计划外。
               xx 是主要原因号(小于 256 的正整数)。
               yy 是次要原因号(小于 65536 的正整数)。
于 2013-09-04T21:37:12.170 回答
0

我的建议:

您真的需要批次可见(最小化)还是可以隐藏?

如果可以隐藏,只需使用 VBScript 将其隐藏:

With CreateObject("W"&"Script.Shell")
    .Run "LongRun.bat", 0
End With

如果您确实需要显示批处理,您可以制作一个隐藏脚本,等待批处理终止并重新启动。

第 1 步:启动隐藏脚本 ( Start.vbs):

Set WsShell = CreateObject("W"&"Script.Shell")
WsShell.Run "Hidden.vbs", 0

第 2 步:Hidden.vbs将启动批处理并等待它返回:

'This script is supposed to start hidden!
Set WsShell = CreateObject("W"&"Script.Shell")
WsShell.Run "LongRun.bat", 7, True
'WsShell.Run "REBOOT.EXE ..." 'Must remove comment and complete command line
MsgBox "Rebooting..."

现在也在LongRun.bat运行Hidden.vbs(但不可见)。

如果以某种方式LongRun.bat终止,Hidden.vbs将继续执行并重新启动。

WScript.Shell.Run文档)

编辑:注意"W"&"Script.Shell"是一样的,"WScript.Shell"但 StackOverflow 不允许我写它!

于 2013-09-26T12:42:07.653 回答