Ich habe Sicherungsskript eingeplant, das den Datenbankspeicherauszug macht. Wie kann ich den Datums- und Zeitstempel zum Dateinamen hinzufügen?
Ich spreche von Windows und CMD.
Ich habe Sicherungsskript eingeplant, das den Datenbankspeicherauszug macht. Wie kann ich den Datums- und Zeitstempel zum Dateinamen hinzufügen?
Ich spreche von Windows und CMD.
Antworten:
In der Eingabeaufforderung und in den Batchdateien können Sie mit %date%
und %time%
Datum und Uhrzeit zurückgeben. Das Datum funktioniert einwandfrei, aber der zurückgegebene Zeitwert enthält Doppelpunkte, die für die Verwendung in Dateinamen unzulässig sind, aber es gibt eine Möglichkeit, diese zu entfernen.
Verwenden Sie etwas wie:
COPY file.txt file_%time:~0,2%%time:~3,2%%time:~6,2%_%date:~-10,2%%date:~-7,2%%date:~-4,4%.txt
Dies erzeugt einen Dateinamen wie file_172215_01062009.txt
Update: Die folgenden Kommentare enthalten interessante Änderungen an diesem Befehl sowie einige potenzielle Probleme, die Sie vermeiden können.
%DATE%
und %TIME%
Gebietsschema bewusst sind! Es bedeutet, dass Sie auf einer europäischen Maschine erhalten DD.MM.YYYY
. Arrgh.
Verwenden Sie die Umgebungsvariablen %DATE%
und / oder %TIME
, und ersetzen Sie optional die Zeichen, die in Dateinamen nicht zulässig sind. Verwenden Sie dazu %name:from=to%
( %TIME::=%
würde alle Doppelpunkte entfernen).
Theorie »echo% date% 2009-06-01 Theorie »Echo% Zeit% 16: 30: 41,46 Theorie »Echo% Zeit :: =% 163052,17 Theorie »Echo% Zeit :: =,% 16,30,58,68 Theorie »Echosicherung-% Datum% -% Uhrzeit :: = -%. zip backup-2009-06-01-16-31-18,82.zip
set tmp=%tmp:x=y%
usw.
Die einzige zuverlässige Möglichkeit, ein geeignetes Datum zu erhalten, unabhängig von den regionalen Einstellungen, ist die Lösung von foxidrive @ /programming/11037831/filename-timestamp-in-windows-cmd-batch-script
@echo off
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "datestamp=%YYYY%%MM%%DD%" & set "timestamp=%HH%%Min%%Sec%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
echo datestamp: "%datestamp%"
echo timestamp: "%timestamp%"
echo fullstamp: "%fullstamp%"
pause
Verwenden Sie die Variable% DATE% im Dateinamen.
Es gibt auch eine Variable% TIME%, die jedoch Zeichen enthält, die in einem Dateinamen nicht zulässig sind.
Hier ist ein Beispiel für das Schreiben einer Textzeile in eine neue Datei, in der die erstellte Datei ein Datum und eine Uhrzeit enthält.
echo "testfile" >> backup-%DATE%.txt