Update: Jetzt, wo es 2016 ist, würde ich die PowerShell dafür verwenden, es sei denn, es gibt einen wirklich zwingenden, abwärtskompatiblen Grund dafür, insbesondere wegen des Problems der regionalen Einstellungen bei Verwendung von "date". Siehe @npocmaka's https://stackoverflow.com/a/19799236/8479
Welche Windows-Befehlszeilenanweisung(en) kann ich verwenden, um die aktuelle Datumszeit in einem Format zu erhalten, das ich in einen Dateinamen einfügen kann?
Ich möchte eine .bat-Datei haben, die ein Verzeichnis in ein Archiv mit dem aktuellen Datum und der Uhrzeit als Teil des Namens zippt, z.B. Code_2008-10-14_2257.zip
. Gibt es eine einfache Möglichkeit, dies zu tun, unabhängig von den regionalen Einstellungen des Rechners?
Das Datumsformat ist mir eigentlich egal, idealerweise wäre es jjjj-mm-tt, aber alles Einfache ist in Ordnung.
Bis jetzt habe ich das hier, was mir auf meinem Rechner Tue_10_14_2008_230050_91
liefert:
rem Get the datetime in a format that can go in a filename.
set _my_datetime=%date%_%time%
set _my_datetime=%_my_datetime: =_%
set _my_datetime=%_my_datetime::=%
set _my_datetime=%_my_datetime:/=_%
set _my_datetime=%_my_datetime:.=_%
rem Now use the timestamp by in a new ZIP file name.
"d:\Program Files\7-Zip\7z.exe" a -r Code_%_my_datetime%.zip Code
Ich kann damit leben, aber es scheint ein bisschen klobig zu sein. Idealerweise wäre es kürzer und hätte das bereits erwähnte Format.
Ich verwende Windows Server 2003 und Windows XP Professional. Ich möchte keine zusätzlichen Hilfsprogramme installieren, um dies zu erreichen (obwohl ich weiß, dass es einige gibt, die eine schöne Datumsformatierung vornehmen können).
Eine andere Möglichkeit (credit):
@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @(
Set Month=%%A
Set Day=%%B
Set Year=%%C
)
@echo DAY = %Day%
@echo Month = %Month%
@echo Year = %Year%
Beachten Sie, dass meine beiden Antworten hier immer noch von der Reihenfolge des Tages und des Monats abhängig sind, die durch die regionalen Einstellungen bestimmt wird - ich weiß nicht, wie man das umgehen kann.
Das ist nicht wirklich kürzer, aber vielleicht flexibler (credit):
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET CDATE=%%B
FOR /F "TOKENS=1,2 eol=/ DELIMS=/ " %%A IN ('DATE/T') DO SET mm=%%B
FOR /F "TOKENS=1,2 DELIMS=/ eol=/" %%A IN ('echo %CDATE%') DO SET dd=%%B
FOR /F "TOKENS=2,3 DELIMS=/ " %%A IN ('echo %CDATE%') DO SET yyyy=%%B
SET date=%mm%%dd%%yyyy%
Dies ist, was ich 've verwendet:
::Date Variables - replace characters that are not legal as part of filesystem file names (to produce name like "backup_04.15.08.7z")
SET DT=%date%
SET DT=%DT:/=.%
SET DT=%DT:-=.%
Wenn Sie weitere Ideen für die Automatisierung von Backups in 7-Zip-Archiven haben möchten, habe ich ein freies/offenes Projekt, das Sie verwenden oder für Ideen überprüfen können: http://wittman.org/ziparcy/