Windows 批处理文件中字符串的串联
我试图在使用日期的Windows7批处理文件中对月份进行零填充,特别是月份。我无法成功地将“0”加入到7。有什么想法吗Windows 批处理文件中字符串的串联,windows,date,batch-file,string-concatenation,Windows,Date,Batch File,String Concatenation,我试图在使用日期的Windows7批处理文件中对月份进行零填充,特别是月份。我无法成功地将“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=%localdat
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%
我可以把绳子弄乱,但到了十月,它就不行了:)
我已经包括了日期,这是我从得到的。你有问题。另一个问题是:以零开头的数字被视为八进制(
08
和09
未定义)
您可以使用不同的方法克服这两个问题(如果根本不需要,则不需要):
其中第一行将100
添加到月份(8
变为108
),第二行提取最后两个字符(108
变为08
)。12月:12
变成112
,112
变成12
(是的,这是多余的,但它使事情更容易以同样的方式处理所有月份)你遇到了问题。另一个问题是:以零开头的数字被视为八进制(
08
和09
未定义)
您可以使用不同的方法克服这两个问题(如果根本不需要,则不需要):
其中第一行将
100
添加到月份(8
变为108
),第二行提取最后两个字符(108
变为08
)。12月:12
变成112
和112
变成12
(是的,这是多余的,但它使事情更容易以同样的方式处理所有月份)除了提供的答案之外,还有一种方法可以获取YYYYMMDD
格式的日期(以及上面的注释),通常建议使用一种确定日期的方法,该方法与机器和地区/地区一致。中的示例使用RoboCopy
而不是WMIC
。或者在('powershell-nop-c Get Date-f yyyyymmdd')中为/f%A使用设置USDate=%A
成批将%A
设置%MM%=%MM%
的语法错误,它必须读取设置MM=%MM%
,我实际上认为应该是设置MM=0%MM%
。要在所需的相同代码块中回显结果,应包括用于获取日期的代码。如上所述,有两种方法可以以您需要的特定格式获取日期,这样您就不需要任何额外的代码来将日期重新格式化为您需要的格式。除了提供的答案(以及上面的注释)之外,还有一种方法可以以YYYYMMDD
格式获取日期,通常建议使用一种确定日期的方法,该方法与机器和地区/地区一致。中的示例使用RoboCopy
而不是WMIC
。或者在('powershell-nop-c Get Date-f yyyyymmdd')中为/f%A使用设置USDate=%A
成批将%A
设置%MM%=%MM%
的语法错误,它必须读取设置MM=%MM%
,我实际上认为应该是设置MM=0%MM%
。要在所需的相同代码块中回显结果,应包括用于获取日期的代码。如上所述,有两种方法可以获得所需的特定格式的日期,这样就不需要任何额外的代码来将日期重新格式化为所需的格式。
set /a mm+=100
set mm=%mm:~-2%