Актуализация: Сега, когато е 2016 г., бих използвал PowerShell за това, освен ако няма наистина убедителна причина за обратна съвместимост, особено поради проблема с регионалните настройки при използването на date
. Вижте @npocmaka's https://stackoverflow.com/a/19799236/8479
Каква'е командата(ите) от командния ред на Windows, която(ито) мога да използвам, за да получа текущата дата във формат, който мога да сложа в име на файл?
Искам да имам .bat файл, който пакетира директория в архив с текущата дата и час като част от името, например Code_2008-10-14_2257.zip
. Има ли някакъв лесен начин да направя това, независимо от регионалните настройки на машината?
Не ме интересува форматът на датата, в идеалния случай би било yyyy-mm-dd, но всичко просто е добре.
Засега имам това, което на моята машина ми дава 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
Мога да живея с това, но изглежда малко тромаво. В идеалния случай би било по-кратко и във формата, споменат по-рано.
Използвам Windows Server 2003 и Windows XP Professional. Не искам да инсталирам допълнителни помощни програми, за да постигна това (въпреки че осъзнавам, че има такива, които ще направят хубаво форматиране на датата).
Друг начин (кредит):
@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%
Обърнете внимание, че и двата ми отговора тук все още зависят от реда на деня и месеца, определен от регионалните настройки - не съм сигурен как да заобиколя това.
Това всъщност не е по-кратко, но може би е по-гъвкав начин (кредит):
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%
Това е, което използвах:
::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:-=.%
Ако искате допълнителни идеи за автоматизиране на архивирането на архиви на 7-Zip, имам безплатен/отворен проект, който можете да използвате или да прегледате за идеи: http://wittman.org/ziparcy/