[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理怎样读一个配置文件,然后删除指定时间之前的文件?

小弟想实现读一个配置文件(获取要删除文件的路径),然后删除指定时间之前的文件,请大侠们指点一下,感谢感谢!

配置文件内容?

TOP

谢谢版主,配置文件内容就是类似如下的路径,读取后符合7天之前的文件就删除
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\*

TOP

  1. ::取7天之前的日期.
  2. >deldata.vbs echo wscript.echo dateadd("d",-7,date)
  3. for /f "tokens=1,2,3* delims=-" %%i in ('cscript /nologo deldata.vbs') do (
  4. set y=%%i
  5. set m=%%j
  6. set d=%%k
  7. )
  8. if %m% LSS 10 set m=0%m%
  9. if %d% LSS 10 set d=0%d%
  10. set rq=%y%-%m%-%d%
  11. echo 注意:即将删除 %rq% 以前建立的文件
  12. pause
  13. setlocal EnableDelayedExpansion
  14. ::读取配置文件里的路径及文件,内容里可能只有:路径+目录,或路径+目录+文件,文件中可能含有通配符*
  15. for /f "tokens=1* delims= " %%a in (config.ini) do (
  16. ::读取含有空格的路径放在path里
  17. set path=%%a %%b
  18. ::通过call进行传参
  19. call :y %%a %%b
  20. :y
  21. ::dir/tc 读取到的路径,skip前面非文件展示的内容,由于路径里可能含有多个空格,所以用%1 %2 %3 %4 %5
  22. ::来代替,用" "扩起来,使dir可以接受空格的命令
  23. for /f "skip=5 delims=" %%i in ('dir/tc "%1 %2 %3 %4 %5"') do (
  24. set pa=%%i
  25. ::将上面dir展示的内容通过!pa!放在in中,进行查找文件和日期 (不知道!pa!放在in中是否能这样实现)
  26. for /f "tokens=1,4 delims= " %%x in ("!pa!") do (
  27. ::x为获取到的dir命令后的日期
  28. set str=%%x
  29. ::y为获取到的dir命令后的文件
  30. set sts=%%y
  31. if %str% lss %rq% (
  32. ::不知道下面可否实现:以上面获取到的文件名sts作为delims分割符进行路径和文件的分割,!path!为最外层for获取到的路
  33. 径及文件
  34. for /f "tokens=1,2 delims=!sts!" %%w in ("!path!") do (
  35. ::%%w为以sts分割后前面的内容(路径),%%w!sts!连着不知道可否实现路径和文件的整合,是将要删除的满足条件的文件
  36.     set tail=%%w!sts!
  37.     del /q %tail%    
  38. )
  39.     )
  40. )
  41. )
  42. )
  43. 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操作接触不久,运行时总有错误,望各位达人帮助修改一下

TOP

返回列表