创建最多生成 10 个日志文件并删除最旧的批处理文件

Creating a Batch file that produces max 10 log files and deletes the oldest

嘿,我有一个批处理脚本,我想记录它。 我想生成 10 个日志文件。

x1.log x2.log ... x10.log

文件夹中最多只能有 10 个日志文件,x1.log 始终是最新创建的日志。 这意味着日志文件会在脚本运行时更改名称。

当脚本运行时

x1.log 变为 x2.log 并创建新的 x1.log 并删除 x10.log 因为 x9.log 变为 x10.log

我希望我说得通俗易懂。

祝大家有美好的一天

IF EXIST N:\projects\Trainee\work\st\M1_Infrastructure_Basics\log\x1.log (
    ren "N:\projects\Trainee\work\st\M1_Infrastructure_Basics\log\x1.log" "x2.log"
    break
    ren "N:\projects\Trainee\work\st\M1_Infrastructure_Basics\log\x2.log" "x3.log"
    ) else (
    echo "file nicht gefunden"
    )

一些代码,但我发现这不是解决它的正确方法

您犯了一个典型的错误:假设您有五个文件,x1.log、x2.log、...、x5.log,然后您重命名您的方式:

REN x1.log x2.log  => x1 will not exist anymore and its contents are in x2
REN x2.log x3.log  => x2 will not exist anymore and its content:
                      in fact the content of x1) will be in x3
...

=> 您最终只会得到一个文件 x5.log,其中包含 x1.log.

的内容

因此,我建议您以相反的方式工作:

REN x9.log x10.log
REN x8.log  x9.log
...

祝你好运:-)

这是一种方法。按降序进行。

@echo off
setlocal enabledelayedexpansion
for /l %%i in (9,-1,1) do (
    set /a num=%%i+1
    if exist x%%i.log move /Y "x%%i.log" "x!num!.log" >nul 2>&1
)
call "%cd%\run.bat" .pdf,"C:\Program Files (x86)\Notepad++" >> 'C:\projects\Traine\work\ad\log\x1.log"