Windows命令行脚本使用YYYY-MM格式将文件夹从当前月份重命名为当前月份3?
e.g:
c:\myfiles\myFolder\
应该成为:
c:\myfiles\2009-01\
答案 0 :(得分:4)
对于我的语言环境,我需要不同的东西。
我想你也需要处理一位数的月份。
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
答案 1 :(得分:2)
不幸的是,您必须自己剖析%DATE%
的内容。 cmd中没有本地化安全的日期/时间操作工具。
对于我的语言环境(使用标准ISO 8601日期格式),我可以使用以下内容:
@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%"
但是,根据您使用的日期格式,它可能会略有不同。
答案 2 :(得分:0)
ren * -04 * -01
答案 3 :(得分:0)
英国日期格式(DD-MM-YYYY)的已回答问题的版本是:
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