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

[文件操作] 利用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 编辑 ]

不知道虚拟磁盘行不行、

也就把你经常要删除的文件夹虚拟到一个磁盘、然后快速格式化……

TOP

早于7天的比较时间是什么时间?创建、修改还是最近访问?
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

按修改日期判断,要求%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 编辑 ]
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

不好意思,是最近修改时间

TOP

回复 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 编辑 ]

TOP

返回列表