如何在执行期间保持 VBScript 命令窗口打开
Posted
技术标签:
【中文标题】如何在执行期间保持 VBScript 命令窗口打开【英文标题】:How to keep the VBScript command window open during execution 【发布时间】:2011-09-23 09:02:41 【问题描述】:当我执行 VBScript 时,它创建的命令窗口会在用户有机会阅读输出之前迅速关闭。如何在不修改 Windows 注册表的情况下让窗口保持打开状态?
这是代码:
Set objShell = WScript.CreateObject("WScript.shell")
objShell.Run "SyncToyCmd.exe -R", 1, True
【问题讨论】:
先前存在的命令行窗口(您从中执行脚本)关闭了吗?我从未见过这种情况。或者您的意思是,从 Windows 资源管理器执行的 VBScript?您使用的是哪个版本的 Windows? Jean-Francois Corbett 是对的,我看不到你在里面执行脚本的 cmd 窗口正在关闭,它应该只是给你一个新的 cmd 行吗? @Jean-FrancoisCorbett 我不是在谈论我执行脚本的窗口。当脚本开始执行时,会弹出一个新窗口并快速关闭。我正在使用 Windows 7。 您是否专门在脚本中打开命令行窗口?或者这只是在您运行脚本时总是自动发生的事情? (这不会发生在我身上。)请向我们展示您的代码(相关部分)。 @Jean-FrancoisCorbett Set objShell = WScript.CreateObject("WScript.shell") objShell.Run "SyncToyCmd.exe -R", 1, True 【参考方案1】:您可以通过cmd.exe
命令解释器发送您的执行命令,以及一个暂停命令,该命令将为用户提供Press any key to continue . . .
提示以关闭窗口。
objShell.run "%comspec% /c ""SyncToyCmd.exe -R & pause""", 1, True
或者要让窗口保持活动状态,请使用/k
标志而不是/c
:
objShell.run "%comspec% /k SyncToyCmd.exe -R", 1, True
但请注意,在手动关闭此 cmd 窗口之前,您的 VBScript 不会继续(或终止)。
%comspec%
环境变量是指根据您的操作系统打开命令解释器的正确命令。例如,在我的 XP 机器上,%comspec%
等于 C:\WINDOWS\system32\cmd.exe
。
在此处查看cmd.exe
文档:http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true
有关使用&
与&&
命令分隔符here 的更多信息。
【讨论】:
【参考方案2】:假设它是您想要保持打开的弹出命令窗口(而不是运行 VBScript 的那个),您可以使用CMD.exe
的Pause
命令来实现:
Set objShell = WScript.CreateObject("WScript.shell")
objShell.Run "cmd.exe /C ""SyncToyCmd.exe -R & Pause"" ", 1, True
【讨论】:
【参考方案3】:让它休眠一会儿,也许告诉用户它会在 5 秒后关闭?
Set WScript = CreateObject("WScript.Shell")
WScript.Sleep 5000
【讨论】:
为什么“这条消息将在 5 秒内自毁”让用户陷入恐慌?最好让用户选择何时关闭。 如果你给他们足够的时间,它不会让他们“恐慌”,并且通过使用像我建议的那样用户会知道它何时关闭的消息,使用消息框也可能会掩盖视图应用程序的结果意味着他们必须将其移开才能看到任何东西 哎呀,鉴于已澄清的问题,这行不通,我的原始答案也行不通...... -1 因为 WScript.Shell 对象不是 WScript 对象(因此第一条语句破坏了具有 .Sleep 方法的“真实”WScript)并且没有 .Sleep 方法。 @Bali C:发布顺序无关紧要 - 您的代码错误,应该更正。以上是关于如何在执行期间保持 VBScript 命令窗口打开的主要内容,如果未能解决你的问题,请参考以下文章