At times in our QTP testcases we may have a need to execute a command using the DOS command window. This could be anything from a simple DIR command to a complex SSH command that can be execute using a tool called plink.exe. I’ll talk about using plink.exe to execute ssh commands on a remote system in another post. Here is how you call the function to execute a command in command window..
SysExecute("dir")
Below is the actual function that you could put in a function library and reference in the QTP test.
Function SysExecute(ByVal strCmdtoExecute)
Dim Output ‘Variant
SystemUtil.CloseProcessByName(“cmd.exe”)
Wait 2
SystemUtil.Run “cmd”, “/K cd c:\ & cls”, “”, “”, 1
Wait 3
sPrompt = window(“CommandWindow”).GetVisibleText
if(sPrompt <> ” “) then
myarray = split(sPrompt,vbCRLF)
if(ubound(myarray)>0) Then
lastline = ubound(myarray)
sPrompt = myarray(lastline)
else
sPrompt = “c:\>”
end if
else
sPrompt = “c:\>”
end if
with window(“CommandWindow”)
.activate
.type strCmdtoExecute
.type micreturn
end with
i=1
Do While True
cmdOutput = window(“CommandWindow”).GetVisibleText
myarray = split(cmdOutput,vbCRLF)
if(ubound(myarray)>0) Then
lastline = ubound(myarray)
sNewPrompt = myarray(lastline)
if(StrComp(sPrompt,sNewPrompt,0) = 0) then
For j = 1 to lastline -1
Output = Output & vbcrlf & myarray(j)
Next
Exit do
end if
else
lastline = ubound(myarray)
end if
if(i>15) then ‘Exit condition
if(lastline > 3) then
For j = 2 to lastline -1
Output = Output & vbcrlf & myarray(j)
Next
else
Output = ” ”
end if
Exit do
end if
i=i+1
Loop
SysExecute = Output
window(“CommandWindow”).Close
Wait 2
Exit function
End Function