我会以不同的方式处理这个问题。首先将所有数字(包括 )减一会更容易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
变量是用于记住循环后最后处理的文件夹的变量。它也用于循环中:首先,用于提取数字,其次,用于为新名称提供基础。