如何使用QTP将参数传递给批处理文件?

时间:2013-10-23 08:02:01

标签: batch-file vbscript parameter-passing qtp

我有一个批处理脚本,它调用vbs文件在网页上执行某些操作。从这个批处理文件中,我将4个参数(字符串)传递给vbs文件。

现在我想将它与我的QTP框架集成。

所以我需要从框架调用这个批处理文件,我将这些参数从QTP传递到Batch文件,批处理文件将进一步传递给vbs代码。

以下是我正在尝试的内容:

QTP代码:

Dim BatchRun
Set BatchRun = CreateObject ("WSCript.shell")
lob=DataTable("LOB",IntSheetNo-1)
mailto=DataTable("EmailTo",IntSheetNo-1) 
mailcc=DataTable("EmailCC",IntSheetNo-1)
BatchRun.Run "C:\invoke.bat " & lob & " " &  mailto & " " &     mailcc
Set BatchRun = Nothing

批次代码:

C:
cscript kamal.vbs %1 %2 %3

vbs代码:

Set args = Wscript.Arguments ' to accept command line arguments
xprod = args(0)
mailto=args(1)
mailcc=args(2)

我通过vbs使用了这些操作。

我确实搜索了google和stackoverflow来查找spome示例,但到目前为止还没有对我有效。

1 个答案:

答案 0 :(得分:2)

不确定QTP是什么,并假设DataTable(....)返回一个字符串,您的问题可能是数据中的空格。调用批处理文件时,参数分隔由空格决定。如果lob,mailto或mailcc中有任何空格,则无法正确解析参数。您需要将每个参数包装在引号中(并确保参数中的内部引号转义为无干扰)

所以,QTP

lob= Chr(34) + Replace(DataTable("LOB",IntSheetNo-1), Chr(34), Chr(34)+Chr(34)) + Chr(34)
mailto=Chr(34) + Replace(DataTable("EmailTo",IntSheetNo-1), Chr(34), Chr(34)+Chr(34)) + Chr(34) 
mailcc=Chr(34) + Replace(DataTable("EmailCC",IntSheetNo-1), Chr(34), Chr(34)+Chr(34)) + Chr(34)

Dim BatchRun
Set BatchRun = CreateObject ("WSCript.shell")
BatchRun.Run "C:\invoke.bat " & lob & " " &  mailto & " " & mailcc
Set BatchRun = Nothing

批代码

C:
cscript kamal.vbs "%~1" "%~2" "%~3"

VBS代码无需更改