批处理删除同一目录下的30天前的文件夹
set n=30
for /f "skip=%n% tokens=*" %%i in ('dir/b/ad/o-d') do rd "%%i" /s /q
这样没效果。
::删除与批处理在同一目录里的30天前的文件夹,日期的判断以文件夹的创建日期为准。
>dstdate.vbs echo LastDate=date()-30
>>dstdate.vbs echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>dstdate.vbs echo wscript.echo FmtDate
::获取30天前的日期
for /f %%a in ('cscript /nologo dstdate.vbs') do set "dstdate=%%a"
::格式化日期为年/月/日
set dstdate=%dstdate:~0,4%^/%dstdate:~4,2%^/%dstdate:~6,2%
del dstdate.vbs /f /q >nul
for /f "skip=1 tokens=1-4 delims= " %%a in ('dir /tc /ad ^| find ":"') do (
if %%a lss %dstdate% rd "%%d" /s /q
)
pause
>dstdate.vbs echo LastDate=date()-30
>>dstdate.vbs echo FmtDate=right(year(LastDate),4) ^& right("0" ^& month(LastDate),2) ^& right("0" ^& day(LastDate),2)
>>dstdate.vbs echo wscript.echo FmtDate
::获取30天前的日期
for /f %%a in ('cscript /nologo dstdate.vbs') do set "dstdate=%%a"
::格式化日期为年/月/日
set dstdate=%dstdate:~0,4%^/%dstdate:~4,2%^/%dstdate:~6,2%
del dstdate.vbs /f /q >nul
for /f "skip=1 tokens=1-4 delims= " %%a in ('dir /tc /ad ^| find ":"') do (
if %%a lss %dstdate% rd "%%d" /s /q
)
pause
温馨提示:答案为网友推荐,仅供参考
第1个回答 2015-02-28
FORFILES /S /D -30 /C "cmd /c IF @isdir == TRUE rd /S /Q @path"本回答被提问者和网友采纳
第2个回答 2018-01-18
FORFILES /S /D -1 /C "cmd /c IF @isdir == TRUE rmdir /S /Q @path"
可以删除非空文件夹
可以删除非空文件夹
第3个回答 2015-02-28
建议用rd命令
第4个回答 2015-02-28
可以用forfiles命令啊追问
forfiles 只能删文件吧,我想删文件夹