rudi Posted February 5, 2013 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!
guinness Posted February 5, 2013 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
rudi Posted February 5, 2013 Author 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!
water Posted February 5, 2013 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 2024-07-28 - Version 1.6.3.0) - Download - General Help & Support - Example Scripts - Wiki ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts OutlookEX (2021-11-16 - Version 1.7.0.0) - Download - General Help & Support - Example Scripts - Wiki OutlookEX_GUI (2021-04-13 - Version 1.4.0.0) - Download Outlook Tools (2019-07-22 - Version 0.6.0.0) - Download - General Help & Support - Wiki PowerPoint (2021-08-31 - Version 1.5.0.0) - Download - General Help & Support - Example Scripts - Wiki Task Scheduler (2022-07-28 - Version 1.6.0.1) - Download - General Help & Support - Wiki Standard UDFs: Excel - Example Scripts - Wiki Word - Wiki Tutorials: ADO - Wiki WebDriver - Wiki
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