Jak získám aktuální datum/čas v příkazovém řádku systému Windows ve formátu vhodném pro použití v názvu souboru/složky?

Aktualizace: Teď, když je rok 2016, bych pro to použil PowerShell, pokud pro to není opravdu pádný důvod, zejména kvůli problému s regionálním nastavením při použití date. Viz @npocmaka's https://stackoverflow.com/a/19799236/8479.


Jak'ý příkaz (příkazy) příkazového řádku Windows mohu použít k získání aktuálního data ve formátu, který mohu vložit do názvu souboru?

Chci mít soubor .bat, který zabalí adresář do archivu s aktuálním datem a časem jako součástí názvu, například Code_2008-10-14_2257.zip. Existuje nějaký jednoduchý způsob, jak to provést nezávisle na regionálním nastavení počítače?

Na formátu data mi opravdu nezáleží, ideální by bylo yyyy-mm-dd, ale cokoliv jednoduchého je fajn.

Zatím mám tohle, což mi na mém počítači dává út_10_14_2008_230050_91:

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

S tím se dá žít, ale zdá se mi to trochu neohrabané. Ideální by bylo, kdyby to bylo stručnější a mělo to dříve zmíněný formát.

Používám Windows Server 2003 a Windows XP Professional. Nechci kvůli tomu instalovat další nástroje (i když si uvědomuji, že existují takové, které umí pěkně formátovat data).

Jiný způsob (kredit):

@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%

Všimněte si, že obě mé odpovědi jsou stále závislé na pořadí dne a měsíce určeném regionálním nastavením - nevím, jak to obejít.

Komentáře (0)

Není to sice stručnější, ale může to být flexibilnější způsob (kredit):

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%
Komentáře (0)

Tohle jsem použil já:

::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:-=.%

Pokud chcete další nápady pro automatizaci zálohování do archivů 7-Zip, mám volně přístupný/otevřený projekt, který můžete použít nebo si ho prohlédnout a získat nápady:

Komentáře (2)