51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2910|回复: 4
打印 上一主题 下一主题

[原创] 如何给SystemUtil.Run传递一个包含空格的字符串参数

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-1-26 10:07:05 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SystemUtil的Run方法的定义是这样的:
object.Run file, [params], [dir], [op], [mode]

其中params的解释:
Optional. A String value.
If the specified file argument is an executable file, use the params argument to specify any parameters to be passed to the application.

也就是说可以给作为可执行文件的file传递一组参数, 我现在file为一个vbscript脚本,我需要给这个脚本传递一个参数,这个参数是一个命令行的命令,比如net user newuser /add.
我直接在DOS命令行下执行这个脚本时是这样的:
D:\Script>cscript //e:vbscript telnet.vbs "net user newuser /add"
这样可以执行我的脚本

但是在QTP里使用
SystemUtil.Run "telnet.vbs","net user newuser /add","D:\Script"
运行脚本时,它会把net  user newuser /add解释成4个参数,这样参数1就仅仅是一个net, 而不是我要的net user newuser /add

如何给它传递这种包含空格的字符串参数
我尝试过通过转义再加一对双引号,或者加一对单引号,都不行。

[ 本帖最后由 aries1979 于 2006-1-26 14:38 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-1-26 13:13:28 | 只看该作者
如果能看见你的"telnet.vbs"的话,就比较容易理解你的问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-1-26 13:19:56 | 只看该作者
QTP本身不会把你传递过去的引号内的参数解析成多个参数。
估计是你的vbs有问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-1-26 13:40:30 | 只看该作者
从你"telnet.vbs"的接受参数的方面考虑下问题吧。
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-1-26 14:36:23 | 只看该作者
telnet.vbs里面就是用了一个
args1=WScript.Arguments(0)来接收命令行的第一个参数, 然后通过SendKey输入执行,所以在命令行使用的时候用双引号把net user newUser /add整个括起来了,运行也是没有问题的

在QTP里,我也需要把整个命令作为一个参数传递过去,但是QTP会把空格间隔的params解析成多个参数,因为它的解释里面就是“any parameters”。

当然这个问题也有简单的处理,就是我在脚本里把命令行的所有参数合并成一个字符串再SendKey,但是这样就失去了灵活性,假设我还有其他参数项的话。我想知道QTP里对这个问题是如何处理的。

[ 本帖最后由 aries1979 于 2006-1-26 14:38 编辑 ]
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-9-20 17:00 , Processed in 0.069001 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表