Qualcosa di simile al comando linux tee
che registra su file mentre stampa STDOUT.
Redirecting STDOUT rende la parte ricevente (lo script) responsabile della visualizzazione e della registrazione. Come da documentation:
StdoutRead()
non blocca, verrà restituito immediatamente. Per ottenere tutti i dati, deve essere chiamato in un ciclo.
Esempio:
#AutoIt3Wrapper_Change2CUI=Y
#include <Constants.au3>
#include <MsgBoxConstants.au3>
Global Enum $EXIT_OK, _
$EXIT_NOCOMPILE, _
$EXIT_ABORT
Global Const $g_sPromptError = 'Compile this script and run resulting executable instead.', _
$g_sPromptInput = 'Enter a command:', _
$g_sInputDefault = 'ping localhost -n 10'
Global $g_sCMD = '', _
$g_sSTD = ''
Main()
Func Main()
If Not @Compiled Then
MsgBox($MB_OK + $MB_ICONERROR, @ScriptName, $g_sPromptError)
Exit $EXIT_NOCOMPILE
EndIf
$g_sCMD = InputBox(@ScriptName, $g_sPromptInput, $g_sInputDefault)
If @error Then Exit $EXIT_ABORT
$g_sSTD = _getCmdStd($g_sCMD)
MsgBox($MB_OK + $MB_ICONINFORMATION, $g_sCMD, $g_sSTD)
Exit $EXIT_OK
EndFunc
Func _getCmdStd(Const $sCMD, Const $sDir = '', Const $iType = $STDERR_MERGED, Const $bShow = False, Const $iDelay = 100)
Local $sTMP = ''
Local $sSTD = ''
Local $sCOM = @ComSpec & ' /c ' & $sCMD
Local Const $iWin = $bShow ? @SW_SHOW : @SW_HIDE
Local Const $iPID = Run($sCOM, $sDir, $iWin, $iType)
While True
$sTMP = StdoutRead($iPID, False, False)
If @error Then
ExitLoop 1
ElseIf $sTMP Then
$sTMP = StringReplace($sTMP, @CR & @CR, '')
$sSTD &= $sTMP
ConsoleWrite($sTMP)
EndIf
Sleep($iDelay)
WEnd
Return SetError(@error, @extended, $sSTD)
EndFunc
Restituisce STDOUT (e STDERR) dopo l'esecuzione viene completata, durante la scrittura di consolare durante esecuzione. Sostituire MsgBox()
come richiesto (funzione di registrazione).
In realtà ho bisogno che il testo da stampare sulla finestra in aggiunta al reindirizzamento ... sia possibile allo stesso tempo possibile? – Siva
Cosa intendi con questo? – Xenobiologist
Desidero che il testo sia stampato sullo schermo e che venga rediretto in modo che l'autoit possa leggere e analizzare. fondamentalmente quando sono sul monitor voglio vedere cosa sta succedendo all'istante (con lo sviluppo degli script) piuttosto che aspettare alla fine che l'autoit lanci un errore se non del tutto! – Siva