批处理文件中字符串的连接

Concatenation of string in batch file

我试图在使用日期(特别是月份)的 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%

我可以拼凑字符串,但到了 10 月,它就不行了:) 我已经包括了我从 here

得到的日期

您遇到了 问题。
另一个问题:以零开头的数字被视为八进制(0809 未定义)。

您可以使用不同的方法来解决这两个问题(根本不需要 if):

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

第一行将 100 添加到月份(8 变为 108),第二行提取最后两个字符(108 变为 08).对于 12 月:12 变为 112 并且 112 变为 12(是的,这是多余的,但它使以相同方式处理所有月份的事情变得容易得多)