Jump to content

StdOutRead(): is it possible to "Attach" to a lauched CMD.EXE?


rudi
 Share

Recommended Posts

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()

#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

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 parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

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 keyboard
  • StdOut + 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 by rudi

Earth is flat, pigs can fly, and Nuclear Power is SAFE!

Link to comment
Share on other sites

Replace

$STDOUT_CHILD + $STDERR_CHILD
with
BitAnd($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 - 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 (NEW 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

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...