Board logo

标题: [文件操作] 利用Bat每日删除几G的文件 [打印本页]

作者: beshe    时间: 2011-1-18 10:24     标题: 利用Bat每日删除几G的文件

请问各位大牛如何高效率利用bat每日删除大概有4,5G(数量大概在40W个)的文件,目前我的想法是用一下代码,但发现效率很低,有没有好的方法,请大家多多出谋划策, 提前谢谢了。。。

  1. for /r "%StrPath%" %%i in (*) do (
  2. set ft=%%~ti
  3. set fdt=!ft:~0,10%!
  4. if !fdt! lss %tt% (                                ‘’‘’ 判断是否早于7天
  5.   @echo "%%~ti"  del /a /f /s /q  "%%i"
  6.    del /a /f /s /q  "%%i"
  7.   )
  8. )
复制代码

[ 本帖最后由 beshe 于 2011-1-18 12:53 编辑 ]
作者: ithinkican    时间: 2011-1-18 10:48     标题: 不知道虚拟磁盘行不行、

也就把你经常要删除的文件夹虚拟到一个磁盘、然后快速格式化……
作者: hanyeguxing    时间: 2011-1-18 11:58

早于7天的比较时间是什么时间?创建、修改还是最近访问?
作者: hanyeguxing    时间: 2011-1-18 12:39

按修改日期判断,要求%date%和%%~ta均为2011-01-18 ...格式,时间为7天前:
  1. @echo off
  2. set/a D=1%date:~8,2%%%100-7,M=1%date:~5,2%%%100,Y=%date:~0,4%
  3. if %D% leq 0 call:c_
  4. set M=0%M%&set D=0%D%
  5. setlocal enabledelayedexpansion
  6. for /r "指定路径" %%a in (*) do (
  7.         set t=%%~ta
  8.         if !t:~0,10! lss %Y%-%M:~-2%-%D:~-2% del /a/f "%%~fa"
  9. )
  10. exit
  11. :c_
  12. set/a M-=1,Y-=!M,M+=!M*12,"K=!(M-4)|!(M-6)|!(M-9)|!(M-11)","D+=!(M-2)*(28+!(Y%%4))+K*30+(!!(M-2)&!K)*31"
复制代码

[ 本帖最后由 hanyeguxing 于 2011-1-18 12:45 编辑 ]
作者: beshe    时间: 2011-1-18 12:41

不好意思,是最近修改时间
作者: beshe    时间: 2011-1-18 12:44     标题: 回复 4楼 的帖子

如何取得7天前的时间问题已经搞定,主要是现在效率不高,不知道有没有什么办法改进,实在不行就要考虑java了。。。

  1. set TimeInterval=-7
  2. set d=%date:~0,10%
  3. mshta vbscript:createobject("scripting.filesystemobject").opentextfile("wind.txt",2,true).writeline(dateadd("d","%TimeInterval%","%d%"))(window.close)
  4. for /f "tokens=1,2,3 delims=-" %%m in (wind.txt) do (
  5. set "year=%%m"&set "mon=%%n"&set "day=%%o"
  6. )
  7. if %mon% LSS 10 (set "mon=0%mon%" )
  8. if %day% LSS 10 (set "day=0%day%" )
  9. set tt=%year%-%mon%-%day%
复制代码

[ 本帖最后由 beshe 于 2011-1-18 12:52 编辑 ]




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2