VBS中run和exec的区别

Set ws = CreateObject("WScript.Shell") '这里创建一个对象引用,以便在以下示例代码中使用。

语法:(常识:作为过程使用时,不要加括号,否则出现编译器错误(参数唯一或没有时加括号不会出错,但建议不要加))
ws.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
[Set objExec =] ws.Exec(strCommand)

WScript.Shell对象的这两个方法都可以用来运行程序,且可以带参数。
都可以在程序路径中使用环境变量。
都不能为程序指定工作目录、不能设置优先级。start命令可以。
要指定工作目录,只能通过改变脚本宿主(WScript.exe/CScript.exe)的当前工作目录:ws.CurrentDirectory = "工作目录"
(常识:工作目录有何意义:1、有些程序需要相应目录下的dll等相关文件支持 2、相对路径问题)


1、run可以直接运行文件(包括协议文件),会启动相关联的程序打开该文件(没有关联则出错)。start有此功能(更高级,没有关联时会打开“打开方式”对话框)。
exec只能运行程序。
ws.run "c:\boot.ini"
ws.exec "notepad c:\boot.ini"

2、run不仅可以直接运行位于path环境变量目录中的程序,还能运行在注册表App Paths中设置的程序“别名”。start有此功能。
exec不行,只能直接运行位于path环境变量目录中的程序。
ws.run "iexplore"    'iexplore 在 App Paths 中登记了别名。
ws.exec "calc"

3、run可以等待程序运行结束再执行下面的命令。start有此功能。
exec不行。
ws.run "notepad", , true

4、exec运行的程序路径中即使含有空格,也可以不加引号(参数如需引号,它的引号不能省略)。
run、start没有这个本领。
(常识:vbs中一个引号字符"本身要用两个引号表示,即写成""。也可以用Chr函数得到引号:chr(34))
ws.exec "C:\Program Files\Internet Explorer\IEXPLORE.EXE"
ws.exec """C:\Program Files\Internet Explorer\IEXPLORE.EXE"""
ws.run """C:\Program Files\Internet Explorer\IEXPLORE.EXE"""

5、最大的区别是:
run着重于启动控制(设置窗口形式)。(start听名字知道是为了启动,也可以简单设置窗口最大化、最小化。)
exec着重于后续控制,并着重于控制命令行程序。
run可以设置程序运行时的运行模式(前台后台:是否隐藏窗口)、窗口大小、激活状态(是否获取“焦点”),具体参数请参考手册《Windows 脚本技术》(Script56.chm)中关于run方法的说明。
exec在启动程序后还能对其进行控制:获取运行状态、获取PID、强行中止进程。如果运行的是命令行程序,还能提供对 StdIn/StdOut/StdErr 流的访问:写入执行命令、获取命令输出等。运行命令行程序后只能通过StdIn写入命令,控制台窗口不再接受用户输入。

ws.run "notepad", 0   '隐藏窗口
ws.run "notepad", 4   '运行后不激活,不打扰原来的活动窗口

注意,手册上明确指出,run不能约束所有程序都按它指定的窗口形式运行,有些程序不听它的话,比如iexplore、calc等。运行ieplore时,它会夺取焦点成为活动窗口。run无法以最小化运行calc。

Set oExec = ws.Exec("mspaint")
WScript.Echo oExec.ProcessId
oExec.Terminate
WScript.Echo oExec.Status '0为运行,1为结束

Set oExec = ws.Exec("ipconfig")
WScript.Echo oExec.StdOut.ReadAll

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值