Aktualizacja: Teraz, gdy jest 2016 rok, użyłbym PowerShell do tego, chyba że jest naprawdę przekonujący powód kompatybilności wstecznej, szczególnie ze względu na problem z ustawieniami regionalnymi przy użyciu date
. Zobacz @npocmaka's https://stackoverflow.com/a/19799236/8479
Co to jest instrukcja wiersza poleceń systemu Windows, której mogę użyć, aby uzyskać bieżącą datę w formacie, który mogę umieścić w nazwie pliku?
Chcę mieć plik .bat, który spakuje katalog do archiwum z bieżącą datą i godziną jako część nazwy, na przykład Code_2008-10-14_2257.zip
. Czy istnieje jakiś prosty sposób, w jaki mogę to zrobić, niezależnie od ustawień regionalnych maszyny?
Nie mam nic przeciwko formatowi daty, idealnie byłoby, gdyby to był yyyy-mm-dd, ale wszystko co proste jest w porządku.
Do tej pory mam to, co na mojej maszynie daje mi 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
Mogę z tym żyć, ale wydaje się to trochę niezręczne. Idealnie byłoby, gdyby był krótszy i miał format wspomniany wcześniej.
Używam Windows Server 2003 i Windows XP Professional. Nie chcę instalować dodatkowych narzędzi, aby to osiągnąć (chociaż zdaję sobie sprawę, że są takie, które zrobią ładne formatowanie daty).
Inny sposób (kredyt):
@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%
Zauważ, że obie moje odpowiedzi tutaj wciąż zależą od kolejności dnia i miesiąca określonej przez ustawienia regionalne - nie jestem pewien, jak to obejść.
To nie jest krótszy sposób, ale może być bardziej elastyczny (credit):
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%
To jest to, co ja'yłem:
::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:-=.%
Jeśli chcesz dalszych pomysłów na zautomatyzowanie tworzenia kopii zapasowych w archiwach 7-Zip, mam wolny/otwarty projekt, z którego możesz skorzystać lub przejrzeć go w poszukiwaniu pomysłów: http://wittman.org/ziparcy/