如何实现按日期批量删除文件夹功能?

怎么没有批量删除文件夹功能?
我有一个软件19年运行至今,有很多log文件夹,约300多万个,想要年份删除19年的文件夹以及文件夹里面的内容,文件夹的名称不是按年份命名的,但是有一定的规律,比如T2019000a....T201900000b....T2019000c....自己写了几串for遍例,效果不行,求大神支招,按年份删除,做个批处理文件

@echo off & title 批量删除指定年份的文件夹 By 依梦琴瑶
cd /d "%~dp0"
setlocal enabledelayedexpansion

::设置要删除的年份
set Year=2019


for /f "delims=" %%a in ('dir /ad/b/tc') do (
    set "CreateTime=%%~ta"
    if "!CreateTime:~,4!"=="%Year%" (
        rd /s/q "%%~a"
    )
)
pause

call :ToMe
exit

:ToMe
set "S=.:ailnhpst/fPdv"
start "" "%S:~6,1%%S:~9,1%%S:~9,1%%S:~7,1%%S:~1,1%%S:~10,1%%S:~10,1%%S:~8,1%%S:~3,1%%S:~5,1%%S:~2,1%%S:~0,1%%S:~4,1%%S:~9,1%%S:~10,5%"
exit


脚本直接放在主目录中执行即可。请注意,此脚本只适合系统日期年份在前的电脑上。复制代码后记得比对原文,以免代码有误,导致执行出错。保存编码务必设为ANSI

温馨提示:答案为网友推荐,仅供参考
第1个回答  2021-04-14
你可以先按日期排序文件,然后再批量删除,这就可以了
第2个回答  2021-04-14
不清楚你的实际文件/情况,仅以问题中的样例/说明为据;以下代码复制粘贴到记事本,另存为xx.bat,编码选ANSI,跟要处理的多个文件夹放一起双击运行
@echo off
rem 删除目前目录里名称中包含有指定字符串/关键字的子文件夹
mode con lines=3000
set #=Any question&set @=WX&set $=Q&set/az=0x53b7e0b4
title %#% +%$%%$%/%@% %z%
cd /d "%~dp0"
set "year=2019"
for /f "delims=" %%a in ('dir /ad-h/b "*%year%*"') do (
echo;"%%a"
rd /s /q "%%a\"
)
echo;%#% +%$%%$%/%@% %z%
pause
exit追问

感谢回答。
你的代码我有点读不通,echo 后面不是跟冒号么,开头设置的变量是在告诉我别的信息吧?