如何在批处理文件中实现删除代码?

4

我创建了一个批处理文件,用于启动和停止celery服务。

我想在批处理文件中实现代码,以便删除一周之前的文件。

celery_restart.bat

NET STOP "CeleryBeat"
NET START "CeleryBeat"
NET STOP "Celery2"
NET START "Celery2"

2
你尝试过什么?考虑过使用logrotate吗?为什么使用了python标签? - norok2
1
由于我使用的是Windows机器,无法使用logrotate,因此我创建了一个批处理文件,可以通过它重新启动celery服务并能够同时旋转日志文件。每次使用批处理文件重新启动celery服务时,Celery都会创建新的日志文件。 - Moon
2个回答

2

对于Windows系统:

ForFiles /p "your\folder\with\logs" /m *.log /d -7 /c "cmd /c del @file"

添加 /s 以删除子文件夹中的日志文件。如果您想删除文件夹中7天前的所有文件,只需删除 /m *.log 选项。


1
以上代码可以正常运行。我还想删除日志文件以及 .pid 文件,所以有没有办法在同一行中同时删除 .pid 文件,因为目前我已经使用了两行,一行是用于 .log 文件,另一行是用于 .pid 文件。 - Moon
我建议从命令行运行 ForFiles /? - 它相当易于理解。然而,要做你想做的事情并没有简单的选项 - 这个问题在这里得到了回答:https://dev59.com/FWgt5IYBdhLWcg3w7BoE (我更喜欢给出的第一个解决方案)。 - Grismar

0

或者你可以运行一些for循环:

@echo off
set comms="CeleryBeat" "Celery2"
for %%i in (*.pid *.log do del %%i /Y
for %%a in (%comms%) do (
    net stop %%a && net start %%a
)

这里的&&运算符只有在前一个命令以errorlevel 0退出时才会启动服务。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接