Извлечь месяц и год от даты в пакетном файле - PullRequest
0 голосов
/ 10 июня 2019

Мне нужно, чтобы месяц и год текущей системной даты сохранялись в двух разных переменных с помощью командного файла. Формат месяца должен быть МММ, а год - гггг. Например, Сегодняшняя дата - 10 июня 2019 года. Поэтому переменная месяца должна иметь июнь, а переменная года - 2019. Может кто-нибудь помочь мне с этим?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 11 июня 2019

Если вы хотите жестко закодировать список аббревиатур (или названий) месяца, то это не так уж сложно сделать с чистой партией.

@echo off
setlocal enableDelayedExpansion

set "months= 1:Jan 2:Feb 3:Mar 4:Apr 5:May 6:Jun 7:Jul 8:Aug 9:Sep 10:Oct 11:Nov 12:Dec"

for /f "skip=1 tokens=1,2" %%X in (
  '"wmic path win32_localtime get month, year"'
) do if "%%Y" neq "" for /f %%M in ("!months:* %%X:=!") do (
  set "month=%%M"
  set "year=%%Y"
)

echo month=!month! year=!year!

Важным является пробел в значении months.

Оператор IF необходим, потому что WMIC создает вывод UTF-16, и при преобразовании в FOR /F имеется ошибка в преобразовании в ANSI, что приводит к дополнительной строке, состоящей только из возврата каретки (0x0D) , Оператор IF отфильтровывает нежелательную «пустую» строку.

0 голосов
/ 10 июня 2019

cmd имеет простой способ , чтобы получить название месяца, но если вы желаете (ab) использовать Powershell:

for /f "tokens=1,2 delims=_" %%a in ('powershell get-date -UFormat "%%Y_%%B"') do set "y=%%a" & set "m=%%b"
echo Year is %y% and month is %m%

Обратитесь к документации о доступных форматах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...