我试图在使用日期的Windows 7批处理文件(尤其是月份)中零填充月份。我无法成功将“ 0”连接到7。有任何想法吗?
ECHO off
SETLOCAL
FOR /f %%I in ('wmic os get localdatetime /FORMAT:list ^| FIND "="') do SET "%%I"
SET "YYYY=%localdatetime:~0,4%"
SET /a "MM=1%localdatetime:~4,2% - 100"
SET "DD=%localdatetime:~6,2%"
FOR /f "tokens=%MM%" %%I in ("Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec") do SET "month=%%I"
IF %MM% LSS 10 (ECHO %MM%
:: SET "%MM%=0%MM%" no dice
SET %MM%=%MM%
ECHO %MM%)
:: KLUDGE FOR TIMES UP TILL OCTOBER!
:: SET USdate=%YYYY%0%MM%%DD%
SET USdate=%YYYY%%MM%%DD%
:: US FORMAT 20180720
ECHO %USdate%
我可以弄乱字符串,但是到十月,它将不起作用:) 我已经包括了从here
获得的日期答案 0 :(得分:3)
您遇到了delayed expansion问题。
还有另一个问题:从零开始的数字被视为八进制(08
和09
没有定义)。
您可以使用不同的方法来克服这两个问题(根本不需要if
)
set /a mm+=100
set mm=%mm:~-2%
其中第一行将100
添加到月份(8
变成108
),第二行提取最后两个字符(108
变成08
)。而对于12月:12
变成112
,而112
变成12
(是的,这是多余的,但是这使得用相同的方式处理所有月份变得容易得多)