Sign in to follow this  
Followers 0
new2this

How to capture StdoutRead value

3 posts in this topic

I have a script that runs several different command line executables where I capture the response with this loop:

$commandline = "command exe with arguments"

$foo = Run($commandline, Working Dir, @sw_hide,$STDERR_CHILD + $STDOUT_CHILD)

While 1

___$line = StdoutRead($foo)

___If @error Then ExitLoop

___MsgBox(0,"",$line)

Wend

While 1

___$line = StderrRead($foo)

___If @error Then ExitLoop

___MsgBox(0,"","Unable to run exe")

Wend

The problem with this is that the output of my command is 200+ lines and I would like to capture the output line by line. It appears that it gives it to me in multiple lines, delimited only when the maximum character count for that line has been reached. I have tried a StringSplit(StdoutRead($foo),@LF) which gives me close to what I need, but since the split occurs after the StdoutRead, the array is not populated with EVERY line being a separate entry.

The only way that I have been able to successfully capture the output is to pipe it to a text file, then read it back in line by line.

Is there another way to capture the command line return value that will allow me to obtain it line by line or delimited with @LF? Any help would be greatly appreciated.

Share this post


Link to post
Share on other sites



#2 ·  Posted (edited)

Something line this ?

#include<constants.au3>
Global $StdOutTot, $StdErrTot
$commandline = "Dir * /S"
$foo = Run(@ComSpec & " /c " & $commandline, @WorkingDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
While 1
    $StdOutTot &= StdoutRead($foo)
    If @error Then ExitLoop
;~  MsgBox(0, "", $line)
WEnd
While 1
    $StdErrTot &= StderrRead($foo)
    If @error Then ExitLoop
;~  MsgBox(0, "", "Unable to run exe")
WEnd
$StdOutRecs = StringSplit($StdOutTot, @CRLF, 1)
$StdErrRecs = StringSplit($StdErrTot, @CRLF, 1)
ConsoleWrite(" StdOutLines=" & $StdOutRecs[0] & @CRLF)
ConsoleWrite(" StdErrLines=" & $StdErrRecs[0] & @CRLF)
Edited by Jos

Visit the SciTE4AutoIt3 Download page for the latest versions  - Beta files                                How to post scriptsource        Forum Rules
 
Live for the present,
Dream of the future,
Learn from the past.
  :)

Share this post


Link to post
Share on other sites

Brilliant...! I never knew that you could "&=". It seems that this is the key. You have made life so much easier for me, thanks!

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0