In Ihrer Frage erwähnen Sie:
"... es wird die Ausgabe in eine Datei einfügen, aber nicht tatsächlich ausführen. In meinem Fall müsste sie ausgeführt und dann zur späteren Bezugnahme in einer Datei angemeldet werden."
Da Sie sagen, dass das Programm ausgeführt wird und seine Ausgabe in die Datei eingefügt wird, dachte ich, dass Sie möglicherweise "angezeigt" statt "ausgeführt" gemeint haben .
Wenn Sie das nicht gemeint haben, hätte es wahrscheinlich geholfen, wenn dies besser erklärt worden wäre, vielleicht mit einer Beispielausgabe.
Auf jeden Fall poste ich diese Antwort, falls es andere gibt, die diese Frage / Antwort hilfreich finden.
Im Grunde klingt es so, als ob Sie möchten, dass die Ausgabe eines Skripts in einer Datei erfasst wird und dass die Ausgabe des Skripts auch auf dem Bildschirm angezeigt wird, während das Skript ausgeführt wird.
(tl; dr version: benutze wintee wie folgt :
script 2>&1 | wtee logfile.txt
)
Für diesen Beitrag werde ich eine kleine Test-Batch-Datei verwenden, aber Ihr Skript kann so groß und kompliziert oder so einfach sein, wie Sie es benötigen:
C:\>type a.cmd
@echo off
echo Command: "dir /b a*"
dir /b a*
echo.
echo Command: "dir /b non-existant-file"
dir /b non-existant-file
echo.
Folgendes passiert, wenn ich dieses Batch-Skript ausführe:
C:\>a.cmd
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
File Not Found
Beachten Sie, dass im Testskript die erste Ausführung des Befehls "dir" erfolgreich ist und die zweite fehlschlägt. Ich mache dies nur, um zu zeigen, was mit "Fehlermeldungen" passiert, wenn Sie Ihr Skript ausführen.
Wenn ich das Skript ausführe und die Ausgabe mit Umleitung ( ">" ) aufzeichne, wird dies angezeigt
C:\>a.cmd > log.txt
File Not Found
C:\>type log.txt
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
C:\>
Beachten Sie, dass die Fehlermeldung "Datei nicht gefunden" beim Ausführen des Skripts auf dem Bildschirm angezeigt wurde und nicht tatsächlich in der Datei erfasst wurde. Dies liegt daran, dass ">" die "normale Ausgabe " erfasst, die an den STDOUT-Stream gesendet wurde. "Fehlermeldungen" werden normalerweise an den STDERR-Stream gesendet.
Um "normale Ausgabe" und "Fehlermeldungen" zu erfassen, müssen Sie auch den STDERR-Stream erfassen, der im Befehl hier durch "2" in "2> & 1" angezeigt wird :
C:\>a.cmd > log.txt 2>&1
C:\>type log.txt
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
File Not Found
Unter Unix gibt es einen Standardbefehl: "tee"
Mit dem Befehl "tee" können Sie die Ausgabe eines Programms erfassen und gleichzeitig die Ausgabe auf dem Bildschirm anzeigen.
Der Befehl "tee" ist bei Windows nicht Standard, aber Sie können hier eine kostenlose Version von "tee" für Windows herunterladen:
wintee . Das heruntergeladene Programm heißt : "wtee.exe"
.
Sie verwenden das Programm "wtee.exe" wie unten gezeigt.
Dadurch wird die Skriptausgabe in der zuvor genannten Datei erfasst "log.txt"
und die Ausgabe auf dem Bildschirm angezeigt, während das Skript ausgeführt wird:
C:\>a.cmd 2>&1 | wtee log.txt
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
File Not Found
C:\>type log.txt
Command: "dir /b a*"
a.cmd
Command: "dir /b non-existant-file"
File Not Found