CartoonDragon Posted November 26, 2012 Posted November 26, 2012 (edited) Hi everyone, I'm having issues getting the correct answer back from stdout which makes my program unstable, here is a double example because i've tried both, can someone help with a good idea to get the correct answer everytime? expandcollapse popupFor $i = 1 to 100 step +1 _Writelog($i & " " & _RunStdOutRead("hostname")) Next For $i = 1 to 100 step +1 _Writelog($i & " " & _RunStdOutRead2("hostname")) Next Exit Func _RunStdOutRead($sRunCmd) Local $iPID = Run(@ComSpec & ' /c ' & $sRunCmd, @ScriptDir, @SW_HIDE, 4 + 2) Local $sStdOutRead = "" While ProcessExists($iPID) $sStdOutRead &= StdoutRead($iPID) WEnd Return $sStdOutRead EndFunc Func _RunStdOutRead2($sRunCmd) Local $foo = Run(@ComSpec & ' /c ' & $sRunCmd, @ScriptDir, @SW_HIDE, 4 + 2) Local $line = "" While 1 $line &= StdoutRead($foo) If @error Then ExitLoop WEnd ;~ MsgBox(0, "STDOUT read:", $line) Return $line EndFunc Func _Writelog($Write) Local $file = FileOpen("MultiRuntest.txt", 1) If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf FileWriteLine($file, $Write) FileClose($file) EndFunc Edited November 26, 2012 by CartoonDragon
BrewManNH Posted November 26, 2012 Posted November 26, 2012 (edited) Here's how I'd do it. expandcollapse popupLocal $file = FileOpen("MultiRuntest.txt", 1) If $file = -1 Then MsgBox(0, "Error", "Unable to open file.") Exit EndIf For $i = 1 To 10 _Writelog($i & " " & _RunStdOutRead("hostname")) Next For $i = 1 To 10 _Writelog($i & " " & _RunStdOutRead2("hostname")) Next FileClose($file) Exit Func _RunStdOutRead($sRunCmd) Local $iPID = Run(@ComSpec & ' /c ' & $sRunCmd, @ScriptDir, @SW_HIDE, 4 + 2) Local $sStdOutRead = "" While ProcessExists($iPID) Sleep(100) WEnd Return StdoutRead($iPID) EndFunc ;==>_RunStdOutRead Func _RunStdOutRead2($sRunCmd) Local $foo = Run(@ComSpec & ' /c ' & $sRunCmd, @ScriptDir, @SW_HIDE, 4 + 2) Local $line = "" While 1 $line &= StdoutRead($foo) If @error Then ExitLoop WEnd ;~ MsgBox(0, "STDOUT read:", $line) Return $line EndFunc ;==>_RunStdOutRead2 Func _Writelog($Write) FileWriteLine($file, $Write) EndFunc ;==>_Writelog Edited November 26, 2012 by BrewManNH If I posted any code, assume that code was written using the latest release version unless stated otherwise. Also, if it doesn't work on XP I can't help with that because I don't have access to XP, and I'm not going to.Give a programmer the correct code and he can do his work for a day. Teach a programmer to debug and he can do his work for a lifetime - by Chirag GudeHow to ask questions the smart way! I hereby grant any person the right to use any code I post, that I am the original author of, on the autoitscript.com forums, unless I've specifically stated otherwise in the code or the thread post. If you do use my code all I ask, as a courtesy, is to make note of where you got it from. Back up and restore Windows user files _Array.au3 - Modified array functions that include support for 2D arrays. - ColorChooser - An add-on for SciTE that pops up a color dialog so you can select and paste a color code into a script. - Customizable Splashscreen GUI w/Progress Bar - Create a custom "splash screen" GUI with a progress bar and custom label. - _FileGetProperty - Retrieve the properties of a file - SciTE Toolbar - A toolbar demo for use with the SciTE editor - GUIRegisterMsg demo - Demo script to show how to use the Windows messages to interact with controls and your GUI. - Latin Square password generator
hannes08 Posted November 26, 2012 Posted November 26, 2012 In this very special example you might use the macro @ComputerName to get the local hostname. Anyway I don't see where your script might fail. Regards,Hannes[spoiler]If you can't convince them, confuse them![/spoiler]
CartoonDragon Posted November 26, 2012 Author Posted November 26, 2012 Thanks a lot BrewmanNH that worked perfectly!
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now