В системе Microsoft Windows текущую дату можно получить с помощью команды date /t
(параметр /t
запрещает команде запрашивать изменение даты) или с помощью echo %date%
для отображения содержимого даты переменная окружения. Тем не менее, оба из них отображают дату в виде DDD mm/dd/yyyy
, если система использует формат даты США для отображения дат, где ДДД - это день недели, представленный трехбуквенным сокращением, например, «Чт ", mm - двузначное представление месяца, например," 08 "для августа, dd - день, а yyyy - год.
C:\>date /t
Thu 08/06/2015
C:\>echo %date%
Thu 08/06/2015
Вы можете переформатировать представление даты, которая хранится в переменной среды %date%
. Например, если вы хотите указать дату в виде ггггммдд, вы можете использовать команду, подобную приведенной ниже, где переменная YYYYMMDD
установлена для хранения переформатированной даты; имя переменной может быть любым, например mydate и т. д.
C:\>set YYYYMMDD=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%
C:\>echo %YYYYMMDD%
20150806
Аргументы подстроки для извлечения элементов строки даты находятся в переменной формата %variable:~startposition,numberofchars%
, поэтому, если "T" в четверг в строке "чт 08/06/2015" находится в позиции 0, 10-е число символ "2" 2015 года, и я хочу 4 символа, то есть "2015", поэтому %DATE:10,4%
дадут мне эти символы. Или же вы можете думать о первом числе как о количестве пропускаемых символов, т. %variable:~num_chars_to_skip,numberofchars%
. Затем я могу добавить %DATE:~4,2%
чтобы получить "08" для месяца, за которым следует %DATE:~7,2%
чтобы извлечь день, т. Е. "06", если дата - 6 августа 2015 г., представленная в переменная %DATE%
как «чт 08/06/2015». Ссылка с дополнительными ссылками
Если ваш пакетный файл может использоваться в системах других стран, вам может потребоваться внести изменения в другой стиль отображения даты, отличный от месяца / дня / года, если вы переформатируете дату, а не просто отображаете ее в каком-либо формате. по умолчанию для системы. Если вы выполните команду reg query
, вы увидите формат по умолчанию для системы. Например:
C:\>reg query "HKCU\Control Panel\International" /v sShortDate
HKEY_CURRENT_USER\Control Panel\International
sShortDate REG_SZ M/d/yyyy
В приведенном выше примере я вижу, что система использует формат месяц / день / год. Настройки для страны можно увидеть с помощью reg query "HKCU\Control Panel\International" /v sCountry
, но это может быть не то, о чем вам следует беспокоиться, если вы знаете, что локальные системы используют представление даты по умолчанию.
Для получения способов получения вчерашней даты существует несколько сообщений о переполнении стека, в том числе упомянутое DavidPostill:
Как получить вчерашнюю дату в командном файле?
как получить вчерашнюю дату в DOS
Пакетное программирование DOS: как получить и отобразить вчерашнюю дату