2013-10-23 34 views
2

我有一個批處理腳本,它調用一個vbs文件在網頁上執行一些操作。從這個批處理文件中,我將4個參數(字符串)傳遞給vbs文件。如何使用QTP將參數傳遞給批處理文件?

現在我正在考慮將其與我的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進行一些操作。

我在google和stackoverflow上搜索了一些spome的例子,但是目前爲止還沒有爲我工作。

回答

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代碼,而無需更改

+0

謝謝MC ND .. :) –

相關問題