Atnaujinimas: Dabar, kai 2016 m., aš norėčiau naudoti "PowerShell", nebent tam būtų tikrai įtikinama atgalinio suderinamumo priežastis, ypač dėl regioninių nustatymų problemos naudojant date
. Žr. @npocmaka's https://stackoverflow.com/a/19799236/8479
Kokį (-ius) "Windows" komandinės eilutės teiginį (-ius) galiu naudoti, norėdamas gauti dabartinę datą tokiu formatu, kurį galėčiau įrašyti į failo pavadinimą?
Noriu sukurti .bat failą, kuris supakuotų katalogą į archyvą, kurio pavadinime būtų dabartinė data ir laikas, pavyzdžiui, Code_2008-10-14_2257.zip
. Ar yra koks nors paprastas būdas tai padaryti, nepriklausomai nuo kompiuterio regioninių nustatymų?
Man nelabai rūpi datos formatas, geriausia, kad jis būtų yyyy-mm-dd, bet tinka bet koks paprastas formatas.
Kol kas turiu šį variantą, kuris mano kompiuteryje duoda Tue_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
Galiu su tuo susitaikyti, bet atrodo šiek tiek nepatogiai. Geriausia būtų, jei jis būtų trumpesnis ir turėtų anksčiau minėtą formatą.
Naudoju Windows Server 2003 ir Windows XP Professional. Nenoriu diegti papildomų programų, kad tai pasiekčiau (nors suprantu, kad yra tokių, kurios atlieka gražų datos formatavimą).
Kitas būdas (kreditas):
@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%
Atkreipkite dėmesį, kad abu mano atsakymai vis dar priklauso nuo dienos ir mėnesio eiliškumo, kurį lemia regioniniai nustatymai - nežinau, kaip tai apeiti.
Tai nėra trumpesnis būdas, bet gali būti lankstesnis (kreditas):
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%
Tai yra tai, ką aš naudoju:
::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:-=.%
Jei norite daugiau idėjų, kaip automatizuoti atsarginių kopijų darymą į "7-Zip" archyvus, turiu nemokamą/atvirą projektą, kuriuo galite naudotis arba peržiūrėti idėjų: http://wittman.org/ziparcy/