Ich verwende ein Befehlszeilenskript, um mehrere Einstellungen auf einem Computer anzupassen. Ich möchte jedoch, dass die gesamte Ausgabe auch in einer TXT- oder Protokolldatei protokolliert wird.
Wenn ich meine Grundkenntnisse des Protokollierungssystems verwende, wird die Ausgabe in eine Datei eingefügt, aber nicht tatsächlich ausgeführt. In meinem Fall müsste es ausgeführt und dann zur späteren Bezugnahme in eine Datei eingeloggt werden.
Würde mir jemand sagen können, wie das geht?
Danke im Voraus! Dempsey
command-line
logging
cmd.exe
Dempsey FoxDie Van Assche
quelle
quelle
Antworten:
Wenn die Frage die "Ausführung" eines Skripts und die Ausgabe der gesamten Batchdatei in eine Protokolldatei in Windows 8.1 erfordert, lautet die einfache Antwort:
Fügen Sie dies am Anfang Ihrer Batch-Datei ein ...
quelle
In Ihrer Frage erwähnen Sie:
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:
Folgendes passiert, wenn ich dieses Batch-Skript ausführe:
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
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 :
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:quelle
Dieses Skript führt ls aus und protokolliert seine Ausgabe in einer Datei namens log.txt:
Das Protokoll wird nicht ausgeführt.
quelle