DOS批量重命名和旋转文件夹名称

问题描述:

我想用DOS批处理脚本重命名和旋转文件夹名称。DOS批量重命名和旋转文件夹名称

例子:

我有这样的:

C:\Main\Folder01 
C:\Main\Folder02 
C:\Main\Folder03 
C:\Main\Folder04 
C:\Main\Folder05 

我需要重命名FOLDER01是在列表的最后,它西港岛线成为Folder06的例子。但它可能是Folder50,具体取决于文件夹的数量。所以我想得到这个。

C:\Main\Folder02 
C:\Main\Folder03 
C:\Main\Folder04 
C:\Main\Folder05 
C:\Main\Folder06 

然后我需要重新索引所有的文件夹,并为01 02 03 04 05,所以Folder02将成为FOLDER01并以这种方式旋转的所有文件夹。

我没有线索如何批量这个,请咨询。

我会以不同的方式处理问题。它会更容易通过一个第一降低所有号码(包括01):

    ┌─────> C:\Main\Folder00 
C:\Main\Folder01 ─┘┌────> C:\Main\Folder01 
C:\Main\Folder02 ──┘┌───> C:\Main\Folder02 
C:\Main\Folder03 ───┘┌──> C:\Main\Folder03 
C:\Main\Folder04 ────┘┌─> C:\Main\Folder04 
C:\Main\Folder05 ─────┘ 

那么00文件夹重命名为前者的名字:

C:\Main\Folder00 ──┐ 
C:\Main\Folder01 │ C:\Main\Folder01 
C:\Main\Folder02 │ C:\Main\Folder02 
C:\Main\Folder03 │ C:\Main\Folder03 
C:\Main\Folder04 │ C:\Main\Folder04 
        └─> C:\Main\Folder05 

它似乎更容易这样,因为循环重命名文件夹也会将最后处理的名称存储在变量中,然后该变量将用于重命名00文件夹。下面是我在谈论的实现:

@ECHO OFF 
SET "pathtemplate=C:\Main\Folder" 
FOR /D %%I IN ("%pathtemplate%??") DO (
    SET "oldname=%%~nxI" 
    SETLOCAL EnableDelayedExpansion 
    SET /A "newsuffix=1!oldname:~-2!-1" 
    RENAME "%%I" "!oldname:~0,-2!!newsuffix:~1!" 
    ENDLOCAL 
) 
RENAME "%pathtemplate%00" "%oldname%" 

oldname变量是用来记住循环之后的最后处理的文件夹中的一个。它也被用于中的循环:首先,提取数字,第二,为新名称提供基础。

+0

真棒!它确实工作完美!即使你以不同的方式做了它,它也正是我的意思......太棒了!谢谢.. – user1804423

+0

+1 - 做得很好。十分优雅。 – dbenham

+0

@dbenham:谢谢!现在有图片! :) –