📜  批处理脚本删除超过 30 天的文件 (1)

📅  最后修改于: 2023-12-03 15:39:43.549000             🧑  作者: Mango

批处理脚本删除超过 30 天的文件

在计算机中,经常会遇到需要定时清理一些临时文件或日志文件的情况。这时就可以使用批处理脚本来实现自动清理。

本篇文章将介绍如何使用批处理脚本删除超过 30 天的文件。

1. 创建一个批处理脚本

首先,我们需要创建一个批处理脚本。打开文本编辑器,输入以下内容:

@echo off
setlocal

set "folder=%~1"
if not defined folder set "folder=%cd%"

for /f "delims=" %%i in ('dir /b /a-d "%folder%" ^| findstr /r /c:"^[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*.\{3\}$" 2^>nul') do (
    for /f "usebackq delims=" %%d in (`echo prompt $D ^| cmd`) do set "defaultdate=%%d"
    for /f "usebackq delims=" %%d in (`echo %defaultdate%`) do set "timestamp=%%d"
    set "filedatetime=%%~ti"
    set "filedatetime=!filedatetime: =_!"
    setlocal enabledelayedexpansion
    set "filedatetime=!filedatetime:,=!"
    set "filedatetime=!filedatetime:~0,14!"
    if "!timestamp:~0,14!" gtr "!filedatetime!" (
        set "filename=%folder%\%%i"
        echo del /q "!filename!"
    )
    endlocal
)

endlocal
2. 设置要删除的文件夹

在第 4 行,我们设置了要清理的文件夹。如果没有指定文件夹,则默认为当前目录。

set "folder=%~1"
if not defined folder set "folder=%cd%"
3. 配置要删除的文件类型和保留时间

在第 6 行,我们使用 dir 命令列出了指定目录下的所有文件名(排除目录名),然后使用 findstr 命令筛选出符合条件的文件。

for /f "delims=" %%i in ('dir /b /a-d "%folder%" ^| findstr /r /c:"^[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*_[0-9][0-9]*.\{3\}$" 2^>nul') do (

这里我们使用了一个正则表达式,来匹配指定格式的文件名,例如:20190526_080000.log。

我们可以根据实际需求来修改这个正则表达式。

在第 12 行,我们设置了文件的最长保留时间,这里是 30 天。

if "!timestamp:~0,14!" gtr "!filedatetime!" (
4. 运行脚本

保存文件时,将其命名为 cleanup.bat 或者其他你喜欢的名字。

打开命令行窗口,进入包含脚本的目录,然后运行:

cleanup.bat <要删除的目录>

例如:

cleanup.bat "C:\Users\user\Desktop\log"

在命令行窗口中,你将看到脚本输出清理的文件名,例如:

C:\Users\user\Desktop\log\20190526_080000.log
C:\Users\user\Desktop\log\20190525_080000.log
C:\Users\user\Desktop\log\20190524_080000.log

如果你确认脚本操作的正确性,可以将第 19 行中的 echo 命令删除,脚本将真正删除文件。

echo del /q "!filename!"
5. 总结

使用批处理脚本删除超过 30 天的文件非常简单,只需要几步操作就可以完成。你可以根据实际需求来修改脚本,例如修改保留时间、修改文件格式等。祝你使用愉快!