代码之家  ›  专栏  ›  技术社区  ›  Ghoul Fool

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

  •  0
  • Ghoul Fool  · 技术社区  · 6 年前

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

    我可以把绳子弄乱,但到了10月,它就坏了。) 我已经包括了我的日期 here

    1 回复  |  直到 6 年前
        1
  •  3
  •   Stephan    6 年前

    你有一个 delayed expansion 问题。
    另一个问题是:以零开始的数字被视为八进制( 08 09 未定义)。

    你可以用不同的方法解决这两个问题(不 if 完全需要):

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

    第一行添加的位置 100 到本月( 8 变成 108 )第二行提取最后两个字符( 一百零八 变成 08 )12月: 12 变成 112 一百一十二 变成 十二 (是的,这是多余的,但它使处理所有月份的事情变得更加容易)