Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 批处理文件中字符串的串联_Windows_Date_Batch File_String Concatenation - Fatal编程技术网

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

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

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