
Ich habe ein Batch-Skript erstellt, das eine ausführbare Datei neu startet. Ich versuche, es dazu zu bringen, alle Fehler in einer Protokolldatei auszugeben.
Mein Skript ist
@echo on
timeout /t 03
set logfile=c:\users\administrator\desktop\C4W\Logs\status.log
echo starting system.exe at %date% %time% >> %logfile%
"./system.exe" -connection "sql instance" -model "model number" -username "admin" -password "" -id 2 >> %logfile%
Pause
Exit 0
Wie Sie sehen, stellt meine ausführbare Datei eine Verbindung zu einer SQL-Instanz und einem Modell innerhalb der SQL-Datenbank her. Wenn ich die Batchdatei ausführe, wird auf dem Bildschirm die Fehlermeldung „Die Eingabe ist keine gültige Base-64-Zeichenfolge, da sie ein Nicht-Base-64-Zeichen, mehr als zwei Füllzeichen oder ein anderes als ein Leerzeichen unter den Füllzeichen enthält“ angezeigt. In meiner Protokolldatei wird dieser Fehler jedoch nicht angezeigt. Sie zeigt lediglich, dass meine ausführbare Datei mit angezeigtem Datum und Uhrzeit ausgeführt wurde. Ich habe versucht, das Symbol & in >>& %logfile% einzufügen, aber dann wird die Fehlermeldung nicht im Befehlsfenster angezeigt und auch in meinem Protokoll wird sie nicht angezeigt.
Kann irgendjemand erkennen, wo ich einen Fehler mache?
Antwort1
Um die Fehlerausgabe des Befehls zusammen mit der Standardausgabe in Ihre Protokolldatei umzuleiten, hängen Sie >>logfile.txt 2>>&1
Folgendes an Ihren Befehl an:
yourcommand.exe >>logfile.txt 2>>&1
Die 2>>&1
Syntax ist erforderlich, um die StdOut- und SteErr-Streams für die Umleitung in die Protokolldatei zu „kombinieren“.