Если вы хотите жестко закодировать список аббревиатур (или названий) месяца, то это не так уж сложно сделать с чистой партией.
@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
отфильтровывает нежелательную «пустую» строку.