Oppdatering: Nå som det er 2016, vil jeg bruke PowerShell til dette med mindre det er en virkelig overbevisende bakoverkompatibel grunn til det, spesielt på grunn av problemet med regionale innstillinger ved bruk av dato
. Se @npocmaka&# 39s https://stackoverflow.com/a/19799236/8479
Hva er en Windows-kommandolinjesetning (er) jeg kan bruke for å få gjeldende datetime i et format som jeg kan sette inn i et filnavn?
Jeg vil ha en .bat-fil som komprimerer en katalog til et arkiv med gjeldende dato og klokkeslett som en del av navnet, for eksempel Kode_2008-10-14_2257.zip
. Finnes det noen enkel måte jeg kan gjøre dette på, uavhengig av maskinens regionale innstillinger?
Jeg bryr meg egentlig ikke om datoformatet, ideelt sett ville det være åååå-mm-dd, men noe enkelt er greit.
Så langt har jeg dette, som på min maskin gir meg 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
Jeg kan leve med dette, men det virker litt klumpete. Ideelt sett ville det være kortere og ha formatet nevnt tidligere.
Jeg bruker Windows Server 2003 og Windows XP Professional. Jeg ønsker ikke å installere flere verktøy for å oppnå dette (selv om jeg skjønner at det er noen som vil gjøre fin datoformatering).
En annen måte (kreditt):
@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%
Merk at begge svarene mine her fortsatt er avhengige av rekkefølgen på dagen og måneden som bestemt av regionale innstillinger - ikke sikker på hvordan du kan omgå det.
Dette er ikke egentlig kortere, men kan være en mer fleksibel måte (kreditt):
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%
Dette er hva jeg har brukt:
::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:-=.%
Hvis du vil ha flere ideer for å automatisere sikkerhetskopier til 7-Zip-arkiver, har jeg et gratis / åpent prosjekt du kan bruke eller gjennomgå for ideer: http://wittman.org/ziparcy/