编辑以回应评论。还添加了测试以确保 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,而最新的日志具有最大的数字,则需要进行一些小的更改。只需要一个重命名。
@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