使用日期对文件/文件夹进行增量重命名的批处理文件

时间:2015-08-05 11:15:51

标签: batch-file cmd rename

我有一个名为Output的文件夹。我想使用批处理文件将其重命名为Output_old05Aug15,其中05Aug15是今天的日期。但是,如果Output_old05Aug15已存在,则Output将重命名为Output_old05Aug15_2nd,依此类推。我只需要一个批处理文件,相应地重命名文件夹。

编辑: 必须逐步重命名已存在的文件夹。这就是我所做的:

@ECHO OFF
SETLOCAL
for /D %%f in (.\Output) do (
 IF EXIST "Output_old*" (
  SET reqren=Y
  FOR /l %%x IN (2,1,999) DO IF DEFINED reqren IF NOT EXIST "Output_old_%%x" (rename "%%f" "Output_old_%%x"&SET "reqren=")
 ) ELSE (rename "%%f" "Output_old")
)
GOTO :EOF

我提到了这篇文章BATCH File - Rename and Incremental folder number?

1 个答案:

答案 0 :(得分:1)

@echo off
setlocal EnableDelayedExpansion

rem US locale, ie: 'Thu 08/06/2015'    
for /F "tokens=2 delims=/ " %%m in ("%date%") do set /A "n=(3*((1%%m)%%100-1))"
set month=JanFebMarAprMayJunJulAugSepOctNovDec
set monthName=!month:~%n%,3!
set dt=%date:~7,2%%monthName%%date:~-2%

if exist Output (
  for /l %%x in (1,1,999) do (
    if %%x EQU 1 set new=Output_old%dt%
    if %%x GEQ 2 set new=Output_old%dt%v%%x
    if not exist !new! (
        echo !new!
        rename output !new!
        goto fin
    )
  )
)

:fin

我会留下适当的序数指标给你。请注意,%date%格式取决于区域设置,因此如果是美国,您将在tokens=1 delims=/

中使用for