批处理文件中字符串的串联

时间:2018-07-22 11:25:42

标签: windows date batch-file string-concatenation

我试图在使用日期的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

获得的日期

1 个答案:

答案 0 :(得分:3)

您遇到了delayed expansion问题。
还有另一个问题:从零开始的数字被视为八进制(0809没有定义)。

您可以使用不同的方法来克服这两个问题(根本不需要if

set /a mm+=100
set mm=%mm:~-2%

其中第一行将100添加到月份(8变成108),第二行提取最后两个字符(108变成08 )。而对于12月:12变成112,而112变成12(是的,这是多余的,但是这使得用相同的方式处理所有月份变得容易得多)