Päivitys: Nyt kun se on 2016, käytän PowerShelliä tähän, ellei ole todella pakottavaa taaksepäin yhteensopivaa syytä siihen, erityisesti alueellisten asetusten ongelman vuoksi, kun käytät date
. Katso @npocmaka's https://stackoverflow.com/a/19799236/8479.
Mitä Windows-komentorivin lauseketta (lausekkeita) voin käyttää saadakseni nykyisen päivämäärän muodossa, jonka voin laittaa tiedostonimeen?
Haluan .bat-tiedoston, joka pakkaa hakemiston arkistoksi, jonka nimessä on nykyinen päivämäärä ja kellonaika, esimerkiksi Code_2008-10-14_2257.zip
. Onko olemassa mitään helppoa tapaa, jolla voin tehdä tämän koneen alueellisista asetuksista riippumatta?
Minua ei oikeastaan haittaa päivämäärän muoto, mieluiten se olisi vvvv-kk-kk-tv, mutta mikä tahansa yksinkertainen sopii.
Toistaiseksi olen saanut tämän, joka koneessani antaa minulle 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
Voin elää tämän kanssa, mutta se vaikuttaa hieman kömpelöltä. Ihannetapauksessa se olisi lyhyempi ja edellä mainitussa muodossa.
Käytän Windows Server 2003:a ja Windows XP Professionalia. En halua asentaa ylimääräisiä apuohjelmia tämän saavuttamiseksi (vaikka tiedänkin, että on olemassa sellaisia, jotka tekevät mukavan päivämäärän muotoilun).
Toinen tapa (luotto):
@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%
Huomaa, että molemmat vastaukseni ovat edelleen riippuvaisia päivän ja kuukauden järjestyksestä, joka määräytyy alueellisten asetusten mukaan - en ole varma, miten se voidaan kiertää.
Tämä ei ole oikeastaan lyhyempi, mutta saattaa olla joustavampi tapa (luotto):
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%
Tätä olen käyttänyt:
::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:-=.%
Jos haluat lisää ideoita varmuuskopioiden automatisoimiseksi 7-Zip-arkistoihin, minulla on ilmainen/avoin projekti, jota voit käyttää tai tarkastella ideoita varten: http://wittman.org/ziparcy/