コメントに応じて編集しました。また、debug.log が存在することを確認するテストを追加しました。不必要にファイルの名前を変更したくない
この最初のソリューションでは、常に最新のログが debug.log、次が debug0001.log、次が debug0002.log などになります。最も古いログの番号が最も大きくなります。
@echo off
setlocal enableDelayedExpansion
set "base=debug"
if exist "%base%.log" for /f "eol=: delims=" %%F in (
'dir /b /o-n "%base%*.log" ^| findstr /rix /c:"%base%.log" /c:"%base%[0-9][0-9][0-9][0-9].log"'
) do (
set "name=%%~nF"
set /a "n=10000!name:*%base%=! %% 10000 + 1"
ren "%%F" "%base%!n!.log"
)
最も古いログの番号を 0001 にし、最新のログの番号を最大にするには、小さな変更が必要です。必要な名前変更は 1 つだけです。
@echo off
setlocal enableDelayedExpansion
set "base=debug"
if exist "%base%.log" for /f "eol=: delims=" %%F in (
'dir /b /o-n "%base%*.log" ^| findstr /rix /c:"%base%.log" /c:"%base%[0-9][0-9][0-9][0-9].log"'
) do (
set "name=%%~nF"
set /a "n=10000!name:*%base%=! %% 10000 + 1"
ren "%base%.log" "%base%!n!.log"
goto :break
)
:break