rudi Posted February 5, 2013 Share Posted February 5, 2013 Hi. I'm just wondering, if it might be possible, to open a CMDline Program and to use StdOutRead() / StdErrRead() to "tee" the output to one log file? I want to still be able to interact with the CMDline Program (type in commands, read the StdOut StdErr Output). Is "tee-ing" possible with StdOutRead() / StdErrRead() expandcollapse popup#include <date.au3> #include <Constants.au3> ; 0x2 ($STDOUT_CHILD) = Provide a handle to the child's STDOUT stream ; 0x4 ($STDERR_CHILD) = Provide a handle to the child's STDERR stream $Log = "C:\temp\Std-out-err-read.txt" $hLog = FileOpen($Log, 2 + 8) FileWriteLine($hLog, _NowCalc()) FileWriteLine($hLog, "--------------------------------------------------------------------------------------------") $ExitReason = "" ; when I specify $stdout_child / $stdout_child + $stderr_child, the process dies immediately. ; When I truncate the line, so that it ends " ...,@sw_show)", the cmd box remains open as expected. $pid = Run(@ComSpec & " /k echo this is a first line...", @TempDir, @SW_SHOW, $STDOUT_CHILD + $STDERR_CHILD) While ProcessExists($pid) $StdOut = StdoutRead($pid) If @error Then $ExitReason &= "StdOutRead Error " & @error & @CRLF ExitLoop EndIf If $StdOut <> "" Then FileWrite($hLog, $StdOut) $StdErr = StderrRead($pid) If @error Then $ExitReason &= "StdErrRead Error " & @error & @CRLF ExitLoop EndIf If $StdErr <> "" Then FileWriteLine($hLog, $StdErr) WEnd FileWriteLine($hLog, @CRLF & "--------------------------------------------------------------------------------------------") FileWriteLine($hLog,_NowCalc()) ConsoleWrite($ExitReason & @LF) FileWriteLine($hLog,$ExitReason) FileClose($hLog) Run ("notepad.exe " & $Log) the CMD box just "blinks" once and disappears. Output to file is this: 2013/02/05 13:54:16 -------------------------------------------------------------------------------------------- this is a first line... C:\Users\admin\AppData\Local\Temp> -------------------------------------------------------------------------------------------- 2013/02/05 13:54:16 Propably simply WAD? Regards, Rudi. Earth is flat, pigs can fly, and Nuclear Power is SAFE! Link to comment Share on other sites More sharing options...
guinness Posted February 5, 2013 Share Posted February 5, 2013 What's wrong with what you have now? UDF List: _AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples... Updated: 22/04/2018 Link to comment Share on other sites More sharing options...
rudi Posted February 5, 2013 Author Share Posted February 5, 2013 (edited) Hi."cmd.exe /k echo something" should *NOT* close, after the command was executed. But the CMD box opens, and instantly closes again. So I cannot type further commands into that box. When you alter the script above, so that the *_child values are *NOT* specified, the box remains open, as needed. But then, obviously, the printable output is not logged to file.So...StdIn shall remain connected to the keyboardStdOut + StdErr shall display to the box *AND* at the same time be logged to file.Finally I want to use this for the IBM TSM Backup Server Command Line Tools ("dsmadmc.exe" / "dsmadmc.exe -console") to log all visible output to a text file, to be able to get all commands typed into the box and all system responses for documentation purposes.Basically like that "PUTTY.EXE" option "log all printable output to file".Any other approach to achive this would be fine. Edited February 5, 2013 by rudi Earth is flat, pigs can fly, and Nuclear Power is SAFE! Link to comment Share on other sites More sharing options...
water Posted February 5, 2013 Share Posted February 5, 2013 Replace $STDOUT_CHILD + $STDERR_CHILDwithBitAnd($STDOUT_CHILD, $STDERR_CHILD)Here it works now. My UDFs and Tutorials: Spoiler UDFs:Active Directory (NEW 2022-02-19 - Version 1.6.1.0) - Download - General Help & Support - Example Scripts - WikiExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example ScriptsOutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - WikiOutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - DownloadOutlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - WikiPowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - WikiTask Scheduler (NEW 2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs:Excel - Example Scripts - WikiWord - Wiki Tutorials:ADO - WikiWebDriver - Wiki Link to comment Share on other sites More sharing options...
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