批处理文件中字符串的连接
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
得到的日期
您遇到了 问题。
另一个问题:以零开头的数字被视为八进制(08
和 09
未定义)。
您可以使用不同的方法来解决这两个问题(根本不需要 if
):
set /a mm+=100
set mm=%mm:~-2%
第一行将 100
添加到月份(8
变为 108
),第二行提取最后两个字符(108
变为 08
).对于 12 月:12
变为 112
并且 112
变为 12
(是的,这是多余的,但它使以相同方式处理所有月份的事情变得容易得多)
我试图在使用日期(特别是月份)的 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
得到的日期您遇到了
另一个问题:以零开头的数字被视为八进制(08
和 09
未定义)。
您可以使用不同的方法来解决这两个问题(根本不需要 if
):
set /a mm+=100
set mm=%mm:~-2%
第一行将 100
添加到月份(8
变为 108
),第二行提取最后两个字符(108
变为 08
).对于 12 月:12
变为 112
并且 112
变为 12
(是的,这是多余的,但它使以相同方式处理所有月份的事情变得容易得多)