-
- ::取7天之前的日期.
- >deldata.vbs echo wscript.echo dateadd("d",-7,date)
- for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo deldata.vbs') do (
- set y=%%i
- set m=%%j
- set d=%%k
- )
- if %m% LSS 10 set m=0%m%
- if %d% LSS 10 set d=0%d%
- set rq=%y%-%m%-%d%
- echo 注意:即将删除 %rq% 以前建立的文件
- pause
-
- setlocal EnableDelayedExpansion
- ::读取配置文件里的路径及文件,内容里可能只有:路径+目录,或路径+目录+文件,文件中可能含有通配符*
- for /f "tokens=1* delims= " %%a in (config.ini) do (
- ::读取含有空格的路径放在path里
- set path=%%a %%b
- ::通过call进行传参
- call :y %%a %%b
-
- :y
- ::dir/tc 读取到的路径,skip前面非文件展示的内容,由于路径里可能含有多个空格,所以用%1 %2 %3 %4 %5
- ::来代替,用" "扩起来,使dir可以接受空格的命令
- for /f "skip=5 delims=" %%i in ('dir/tc "%1 %2 %3 %4 %5"') do (
- set pa=%%i
- ::将上面dir展示的内容通过!pa!放在in中,进行查找文件和日期 (不知道!pa!放在in中是否能这样实现)
- for /f "tokens=1,4 delims= " %%x in ("!pa!") do (
- ::x为获取到的dir命令后的日期
- set str=%%x
- ::y为获取到的dir命令后的文件
- set sts=%%y
- if %str% lss %rq% (
- ::不知道下面可否实现:以上面获取到的文件名sts作为delims分割符进行路径和文件的分割,!path!为最外层for获取到的路
-
- 径及文件
- for /f "tokens=1,2 delims=!sts!" %%w in ("!path!") do (
- ::%%w为以sts分割后前面的内容(路径),%%w!sts!连着不知道可否实现路径和文件的整合,是将要删除的满足条件的文件
- set tail=%%w!sts!
- del /q %tail%
- )
- )
- )
- )
- )
-
- pause
复制代码 配置文件config.ini内容为:
D:\admini_desk\*.txt
C:\Program Files\alipay\alieditplus\
C:\Documents and Settings\All Users\*.dat
D:\gis soft\*.txt
C:\Program Files\alipay\alieditplus\*
以上是我写的代码,由于对bat操作接触不久,运行时总有错误,望各位达人帮助修改一下 |