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.
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%
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: http://wittman.org/ziparcy/