bat脚本,制作删除指定文件夹里面的n天前的文件夹

现在只能删除n天前的指定文件夹。但是不能实现删除指定文件内n天前的文件夹。求个解决方法

外部循环用于遍历目标文件夹中的所有子文件夹。内部循环使用WMIC命令获取当前日期和时间,并与文件夹的创建日期进行比较,以确定其是否要删除。如果文件夹的创建日期早于n天前的日期,则会删除该文件夹。正式使用前一定要充分测试,避免误删:

@echo off
setlocal

rem 目标文件夹
set "targetFolder=X:\TargetFolder"
rem n天前
set /A "daysAgo=7"

for /F "delims=" %%F in ('dir /B /A:D "%targetFolder%"') do (
    set "folderPath=%targetFolder%\%%F"
    for /F %%A in ('WMIC OS GET LocalDateTime ^| findstr /B [0-9]') do set "dateTime=%%A"
    set "folderDateTime=%%~tF"
    setlocal enabledelayedexpansion
    if "!folderDateTime:~0,10!" lss "!dateTime:~0,8!" (
        set /A "dateDiff=(!dateTime:~0,4!-!folderDateTime:~0,4!)*365+(1!dateTime:~4,2!-1!folderDateTime:~4,2!)*30+1!dateTime:~6,2!-1!folderDateTime:~6,2!"
        if !dateDiff! gtr %daysAgo% (
            echo Deleting folder: !folderPath!
            rd /S /Q "!folderPath!"
        )
    )
    endlocal
)
endlocal

以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:

可以使用for循环来遍历指定文件夹内的所有文件夹,然后判断每个文件夹的创建时间是否在n天之前,如果是则删除该文件夹。具体代码如下:

@echo off
set folder_path=C:\test_folder
set days_to_keep=7

for /D %%i in ("%folder_path%\*") do (
    forfiles /P "%%i" /C "cmd /c if @isdir==TRUE echo @path @fdate && if @isdir==TRUE if @fdate < %days_to_keep% echo rd /s /q @path" /D -%days_to_keep%
)

上述代码中,folder_path变量指定要删除文件夹的路径,days_to_keep变量指定保留多少天内的文件夹,可以根据实际需要修改。

for循环遍历指定文件夹内的所有文件夹,/D参数表示只处理目录,%%i是循环变量,表示每个文件夹的路径。

forfiles命令用于处理每个文件夹内的文件,/P参数指定要处理的文件夹路径,/C参数指定要执行的命令,@isdir表示当前文件是否是文件夹,@path表示当前文件的完整路径,@fdate表示当前文件的创建时间。

如果当前文件是文件夹,就打印出其路径和创建时间,方便调试。如果当前文件是文件夹且创建时间在n天前,就执行删除命令。注意,删除命令是通过打印输出来实现的,可以先运行脚本检查输出是否正确,然后再把echo去掉执行真正的删除操作。

希望以上代码对您有所帮助。