文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

如何实现一个在vbs运行命令行工具后让命令窗口保持打开状态的脚本

2023-06-08 13:58

关注

这篇文章给大家分享的是有关如何实现一个在vbs运行命令行工具后让命令窗口保持打开状态的脚本的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

问:
如何在运行像 Ping 或 Ipconfig 这样的工具后让命令窗口保持打开状态?

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

感谢各位的阅读!关于“如何实现一个在vbs运行命令行工具后让命令窗口保持打开状态的脚本”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯