Ich schreibe ein C-Programm in Windows, meine printf-Aufrufe drucken in die Befehlszeile und ich weiß, dass ich all diese Ausgaben in eine Textdatei umleiten kann, indem ich Folgendes verwende:
myProgram.exe > mylog.txt
Ich möchte jedoch auch die Ausgabe sehen, die auf der Konsole gedruckt worden wäre, und alles in einer Textdatei protokollieren.
Gibt es eine Möglichkeit, dies zu tun? Ich dachte daran, die Protokolldatei mit tail zu überwachen.
windows
command-line
stdout
user79397
quelle
quelle
Antworten:
Die Windows PowerShell verfügt über ein Tool, das dies ermöglicht, benannt
tee
nach dem Unix-Tool, das dasselbe tut.Alternativ gibt es Ports des Unix
tee
für Windows:quelle
Unter Windows kann ich mir nur Folgendes vorstellen:
Dies basiert auf dem folgenden Befehl in Ihrer Frage - wenn in der Tat Sie die Ausgabe anhängen wollte
mylog.txt
dann Sie würde verwenden>>
statt>
, sonderntype
die gesamte Protokolldatei ausdrucken würde, nicht nur , was angehängt worden war.Wenn Sie die GnuWin32-CoreUtils herunterladen , können Sie dazu die Unix-Methode (
tee
Befehl) verwenden:Dies schreibt die Ausgabe von myProgram.exe
mylog.txt
in die Konsole, zeigt sie jedoch gleichzeitig an. Wenn Sie nur anfügen möchten,mylog.txt
können Sie den-a
Parameter an tee übergeben.quelle
Ich verwende Visual Studio Code und öffne die Protokolldatei von dort aus. Dadurch wird die Ansicht nahezu in Echtzeit aktualisiert, wenn sich die Protokolldatei ändert
quelle
Ich hatte gerade ein ähnliches Bedürfnis und benutzte Tail, wie es das OP vorschlug:
Die Datei "> C: \ Temp \ Commands_Log.txt" erstellt die Protokolldatei und fügt die Ausgabe aller Befehle in (Klammern) hinzu.
Der erste Befehl in den Klammern sollte sein, den Schwanz zu starten, der in einem neuen Befehlsfenster geöffnet wird.
Die Echos am Ende sind für unbekannte Benutzer gedacht, um sie zu informieren, wenn alles vollständig ist.
quelle