从批处理文件中的日期中提取月份和年份

时间:2019-06-10 07:40:09

标签: batch-file

我需要使用批处理文件获取存储在两个不同变量中的当前系统日期的月份和年份。月格式应为MMM,年格式应为yyyy。例如。今天的日期是2019年6月10日。因此月份变量应具有6月,年份变量应具有2019。 有人可以帮我吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

cmd具有no easy way来获取月份名称,但是如果您愿意(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%

documetation咨询可用的格式。

答案 1 :(得分:0)

如果您愿意对您的Month缩写(或名称)列表进行硬编码,那么使用纯批处理就不太困难了。

@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语句过滤掉不需要的“空”行。