Verwenden Sie den cmd.exe
Befehlsprozessor, um einen Dateinamen mit Zeitstempel zu erstellen, um die Ausgabe Ihrer geplanten Aufgabe zu protokollieren
Um auf den Antworten anderer hier aufzubauen, möchten Sie möglicherweise eine Ausgabedatei erstellen, in die Datum und / oder Uhrzeit im Namen der Datei eingebettet sind. Sie können den cmd.exe
Befehlsprozessor verwenden, um dies für Sie zu tun.
Hinweis: Diese Technik verwendet die Zeichenfolgenausgabe interner Windows-Umgebungsvariablen und schneidet sie basierend auf der Zeichenposition auf. Aus diesem Grund sind die genauen Werte in den folgenden Beispielen möglicherweise nicht für die von Ihnen verwendete Windows-Region korrekt. Bei einigen regionalen Einstellungen können einige Komponenten des Datums oder der Uhrzeit ein Leerzeichen in den erstellten Dateinamen einfügen, wenn ihr Wert kleiner als 10 ist. Um dieses Problem zu beheben, umgeben Sie Ihren Dateinamen mit Anführungszeichen, sodass unbeabsichtigte Leerzeichen in der Datei vorhanden sind Der Name wird die von Ihnen erstellte Befehlszeile nicht beschädigen. Experimentieren Sie und finden Sie heraus, was für Ihre Situation am besten geeignet ist.
Sei dir bewusst, dass PowerShell
das mächtiger ist als cmd.exe
. Eine Möglichkeit, die leistungsfähiger ist, besteht darin, dass sie mit verschiedenen Windows-Regionen umgehen kann. Bei dieser Antwort geht es jedoch darum, dieses Problem cmd.exe
nicht zu lösen PowerShell
, also fahren wir fort.
Verwenden von cmd.exe
Sie können auf verschiedene Komponenten von Datum und Uhrzeit zugreifen, indem Sie die internen Umgebungsvariablen aufteilen %date%
und %time%
wie folgt (die genauen Aufteilungswerte hängen wiederum von der in Windows konfigurierten Region ab):
- Jahr (4 Ziffern):
%date:~10,4%
- Monat (2 Ziffern):
%date:~4,2%
- Tag (2 Ziffern):
%date:~7,2%
- Stunde (2 Ziffern):
%time:~0,2%
- Minute (2 Ziffern):
%time:~3,2%
- Zweitens (2 Ziffern):
%time:~6,2%
Angenommen, Sie möchten, dass Ihre Protokolldatei in diesem Datums- / Zeitformat benannt wird: " Log_[yyyyMMdd]_[hhmmss].txt
". Sie würden Folgendes verwenden:
Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
Führen Sie zum Testen die folgende Befehlszeile aus:
cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"
Wenn Sie alles zusammenfügen, um beide stdout
und stderr
Ihr Skript in eine Protokolldatei mit dem aktuellen Datum und der aktuellen Uhrzeit umzuleiten , verwenden Sie möglicherweise Folgendes als Befehlszeile:
cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1
Beachten Sie die Verwendung von Anführungszeichen um den Dateinamen, um Instanzen zu behandeln, bei denen eine Datums- oder Zeitkomponente möglicherweise ein Leerzeichen einführt.
In meinem Fall würde die obige Befehlszeile Folgendes erzeugen, wenn das aktuelle Datum / die aktuelle Uhrzeit 10/05/2017 9:05:34 AM wäre:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1