Board logo

标题: 关于文件夹中有日期的文件夹删除问题 [打印本页]

作者: jaceyxp     时间: 2010-3-30 09:34    标题: 关于文件夹中有日期的文件夹删除问题

我现在有很多文件夹,比如:
文件夹如下:
data星期一 2010-01-29
data星期二 2010-01-30
data星期三 2010-01-31
data星期四 2010-02-01
data星期五 2010-02-02
……
文件夹下还有很多文件夹和文件(不包含日期)

现在我想用批处理删除指定日期的文件夹以及下面的所有文件。
比如我想删除2010-02-01日以前所有的文件夹及文件
执行后应该只剩下
data星期四 2010-02-01
data星期五 2010-02-02
这2个目录和目录内的所有文件
该怎么编呢?

注意:上面“data星期一 2010-01-29”是一个目录

[ Last edited by jaceyxp on 2010-5-15 at 14:50 ]
作者: Hanyeguxing     时间: 2010-3-30 12:51

@echo off&setlocal enabledelayedexpansion
for /f "delims=" %%i in ('dir /a:d /b') do set i=%%i&if "!i:~0,5!"=="data " (
echo !i:~5!|findstr /i "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$">nul
if !ERRORLEVEL!==0 if "!i:~5,4!!i:~10,2!!i:~13,2!" lss "20100201" (
attrib -r -s -h "%%i" /s
del "%%i" /a /s /q /f
rd "%%i" /s /q
))
说明:
如果目录中不存在其他命名方式的目录,则if "!i:~0,5!"=="data " (
echo !i:~5!|findstr /i "^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$">nul
if !ERRORLEVEL!==0 部分可以省略
如果目录及其子目录不存在系统或隐藏属性的问题,则attrib -r -s -h "%%i" /s可以省略
作者: jaceyxp     时间: 2010-5-15 14:48
不行啊,目录都没动
作者: Hanyeguxing     时间: 2010-5-15 16:30

@echo off&setlocal enabledelayedexpansion
set/p p=日期如2010-02-01
for /f "tokens=1*" %%a in ('dir /ad /b^|findstr /e [0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]') do set a=%%a&if "!a:~0,6!"=="data星期" if "%%b" lss "%p%" echo.rd /s /q "%%a %%b"