快速业务通道

在vbs运行命令行工具后让命令窗口保持打开状态的脚本

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
问:
您好,脚本专家!如何在运行像Ping或Ipconfig这样的工具后让命令窗口保持打开状态?
--DB
答:
您好,DB。这个问题让我们想起了往事。有一个脚本专家刚来Microsoft,那时许多人认为WMI和ADSI对于脚本编写者来说太难使用。因此,人们建议这个脚本专家不使用WMI或ADSI,而是干脆使用VBScript作为调用命令行工具的方法。事实上,这个脚本专家编写的第一章就是一个关于事件日志管理的章节,该章后来成为MicrosoftWindows2000脚本指南的一部分。它也是不含任何脚本编写代码之类内容的章节。
您说对了:只有脚本专家才会发现自己在编写一本绝对不含任何脚本编写代码的脚本编写指南。
当然,脚本专家们使用雄辩的说服,再配合大量的哀求,最终还是能够让人们相信,如果那个叫做MicrosoftWindows2000脚本指南的东西实际包含一两个脚本,也是可以的。不过,在此过程中,脚本专家们也对在脚本内调用命令行工具略有了解,这也是为什么我们能够回答您问题的原因。
我们猜测您有与以下类似的脚本,该脚本运行命令行工具Ipconfig.exe:
SetobjShell=CreateObject("Wscript.Shell")
objShell.Run("ipconfig/all")
您必定知道该脚本非常有效:弹出命令窗口,然后Ipconfig开始运行。唯一的问题是您还未来得及阅读IPconfig返回的信息,命令窗口就关闭了(除非您读得确实快)。这确实是个问题。
那么如何解决它呢?方法如下:
SetobjShell=CreateObject("Wscript.Shell")
objShell.Run("%comspec%/kipconfig/all")
如您所看到的,这个修订的脚本保留了与原来脚本相同的基本结构:我们创建Wscript.Shell对象的一个实例,然后调用Run方法以实际运行该命令行工具。区别在于调用该命令行工具的方式。在原来的脚本中,我们只是调用工具本身:
objShell.Run("ipconfig/all")
这一次,我们使用的语法大为不同:
objShell.Run("%comspec%/kipconfig/all")
环境变量%comspec%代表Windows命令外壳;这等效于调用Cmd.exe(它当然会打开一个命令窗口)。那为什么不直接调用Cmd.exe?是这样,假设您的计算机运行Windows98。在这些计算机上,通过运行Command.com来调用命令外壳,因为没有Cmd.exe。使用%comspec%有助于确保无论该脚本是在什么版本的Windows上运行,都可以获得命令窗口。
换句话说,使用此脚本时我们并不是直接运行Ipconfig,而是运行命令外壳的实例,并向该实例传递几个参数。此类参数中的第一个是/k,它指示命令外壳执行我们要求它完成的任务,然后保持打开状态。(我们得知k是keep的简写形式,像在“keepopen”中那样,但我们不能肯定是否属实。)我们也可以使用参数/c(c代表close),它在命令窗口完成任务时自动关闭命令窗口。
传递给命令外壳的其它参数有何作用?那些参数只是运行IPconfig所需的命令:ipconfig/all。想要使用Ping.exe对IP地址192.168.1.1执行ping命令吗?以下脚本将执行该操作,并确保之后命令窗口保持打开状态:
SetobjShell=CreateObject("Wscript.Shell")
objShell.Run("%comspec%/kping192.168.1.1")
想要运行Net.exe以获取本地用户帐户列表并可以随后进行查看吗?好的,没问题:
SetobjShell=CreateObject("Wscript.Shell")
objShell.Run("%comspec%/knetuser")
想要¨C嗯,您已领会了要旨。
如果往往会在脚本中大量使用命令行工具(这并没什么不对;请尽管使用您认为最方便/最好的工具),则可能会对本专栏感兴趣,它向您介绍如何更改命令窗口标题和命令窗口颜色。过去了这么多年,脚本专家心中对调用命令行工具脚本的好感仍在,而且仍无法弄清楚为什么人们认为编写根本不含任何脚本的脚本编写指南是一个不错的想法。

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号