batch-file - 如何使用QTP将参数传递到批处理文件?

标签 batch-file vbscript parameter-passing qtp

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

现在我希望将其与我的 QTP 框架集成。

所以我需要从框架调用这个批处理文件,并将这些参数从 QTP 传递到批处理文件,该批处理文件将进一步传递给 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 使用这些进行一些操作。

我确实在谷歌和 stackoverflow 上搜索了 spome 示例,但到目前为止没有一个对我有用。

最佳答案

不确定 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代码

关于batch-file - 如何使用QTP将参数传递到批处理文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19536056/

相关文章:

Javascript - 将参数添加到作为参数传递的函数

algorithm - 在批处理脚本中实现的蛮力算法的优化

session - 如何在代码中检测 session 是否已启用而不是仅仅收到错误

javascript - 如何从 JScript 执行 VBScript 代码?

object - 克隆VBScript Err对象

python - 编写函数以传递参数或参数元组的大多数 pythonic 方式

batch-file - 从批处理文件检索变量的输出/状态到 Jenkins 管道

windows - 文件名通配 Windows 与 Unix

if-statement - 计划的批处理文件备份

在 Sublime Text 2 中使用参数构建和运行