代码驿站移动版
频道导航
HTML/Xhtml
CSS
JavaScript
HTML5
PHP教程
ASP.NET
正则表达式
AJAX
ThinkPHP
Yii
MySQL
MariaDB
Oracle
MongoDB
Redis
DedeCMS
PHPCMS
帝国CMS
WordPress
Discuz
其它CMS
Zend Studio
Sublime
Notepad
Dreamweaver
Windows
Linux
Nginx
Apache
IIS
CentOS
Ubuntu
Debian
网站优化
工具资源
PHP源码
ASP.NET源码
其它源码
图标素材
按钮素材
字体素材
DedeCMS模板
帝国CMS模板
PHPCMS模板
WordPress模板
Discuz!模板
单页模板
开发软件下载
服务器软件下载
广告投放
联系我们
版权申明
软件编程
网页前端
移动开发
数据库
服务器
脚本语言
PHP代码
JAVA代码
Python代码
Android代码
当前位置:
主页
>
脚本语言
>
VBS
>
在vbs运行命令行工具后让命令窗口保持打开状态的脚本
时间:2020-11-15 14:21:23 | 栏目:
VBS
| 点击:次
问:
您好,脚本专家!如何在运行像 Ping 或 Ipconfig 这样的工具后让命令窗口保持打开状态?
-- DB
答:
您好,DB。这个问题让我们想起了往事。有一个脚本专家刚来 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 嗯,您已领会了要旨。
如果往往会在脚本中大量使用命令行工具(这并没什么不对;请尽管使用您认为最方便/最好的工具),则可能会对本专栏感兴趣,它向您介绍如何更改命令窗口标题和命令窗口颜色。过去了这么多年,脚本专家心中对调用命令行工具脚本的好感仍在,而且仍无法弄清楚为什么人们认为编写根本不含任何脚本的脚本编写指南是一个不错的想法。
您可能感兴趣的文章:
用VBSCRIPT控制ONSUBMIT事件
VBS教程:属性-ShortPath 属性
VBS教程:VBScript 语句-ReDim 语句
VBS教程:运算符-减运算符 (-)
用vbs实现cmd功能
相关文章
11-25
VBS For Next循环的一些细节
01-05
VBS教程:函数-Space 函数
12-23
VBS教程:VBScript 语句-Property Let 语句
12-03
VBS教程:正则表达式简介 -字符匹配
10-24
VBS 脚本中的字典、动态数组、队列和堆栈实现代码
JQuery
VUE
AngularJS
MSSql
MySQL
MongoDB
Redis
Linux
Tomcat
Nginx
网站首页
广告投放
联系我们
版权申明
联系站长