代码之家  ›  专栏  ›  技术社区  ›  Techboy

将文件夹重命名为当前月份-3的Windows命令行脚本(例如2009-04到2009-01)

  •  3
  • Techboy  · 技术社区  · 17 年前

    例如。:

    c:\myfiles\myFolder\
    

    c:\myfiles\2009-01\
    
    4 回复  |  直到 13 年前
        1
  •  4
  •   Cheeso    17 年前

    对于我所在的地区,我需要一些不同的东西。

    setlocal
    @REM example:  Thu 06-11-2009
    set stamp=%DATE%
    
    @REM get the year
    set year=%stamp:~10,4%
    @REM example: 2009
    
    @REM get the month
    set month=%stamp:~4,2%
    @REM example:  06
    
    @REM subtract 3 months
    set /a month=%month%-3
    @REM example:  3
    
    @REM test if negative (we rolled back beyond January 1st)
    if %month% LSS 1  (
      set /a month=%month%+12
      @REM example: 8
      set /a year=%year%-1
      @REM example: 2008
    )
    
    @REM prepend with zero for single-digit month numbers
    set month=0%month%
    
    @REM take last 2 digits of THAT
    set month=%month:~-2%
    
    set newFolder=%year%-%month%
    
    @REM move %1 %newFolder%
    endlocal
    
        2
  •  2
  •   Joey Gumbo    17 年前

    你必须剖析 %DATE% 不幸的是,你一个人。cmd中没有本地化安全的日期/时间操作工具。

    @echo off
    rem %DATE% comes back in ISO 8601 format here, that is, YYYY-MM-DD
    set Y=%DATE:~0,4%
    set /a M=%DATE:~5,2% - 3
    if %M% LSS 1 (
        set /a Y-=1
        set /a M+=12
    )
    ren myFolder "%Y%-%M%"
    

        3
  •  0
  •   S.P    17 年前

    仁*-04*-01

        4
  •  0
  •   Fenton    13 年前

    setlocal
    
    @REM example:  11-06-2009
    set stamp=%DATE%
    @REM get the year
    
    set year=%stamp:~6,4%
    @REM example: 2009
    @REM get the month
    
    set month=%stamp:~3,2%
    @REM example:  06
    
    @REM subtract 3 months
    set /a month=%month%-3
    @REM example:  3
    
    @REM test if negative (we rolled back beyond 1st January)
    if %month% LSS 1  (
      set /a month=%month%+12
      @REM example: 8
    
      set /a year=%year%-1
      @REM example: 2008
    )
    
    @REM prepend with zero for single-digit month numbers
    set month=0%month%
    
    @REM take last 2 digits of THAT
    set month=%month:~-2%
    
    set newFolder=%year%-%month%
    
    move c:\myfiles\myFolder\ %newFolder%
    
    endlocal