Execute a DOS command in QTP

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

Leave a comment