私は問題に少し違ったアプローチをします。01最初にすべての数値 ( を含む)を 1 減らす方が簡単です。
┌─────> 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ループ後に最後に処理されたフォルダーを記憶するために使用されるものです。これはループでも使用されます。最初は番号を抽出するため、2 番目は新しい名前のベースを提供するためです。