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

[文件操作] 批处理怎样自动删除超过7天的文件夹?

百度知道的问题:
公司有一台扫描图形电脑会自动将扫描的图形保存在c:\temp 文件夹下面. 规则是每天一个文件夹(如果当天有图形的话),文件夹下面是当天全部的图形

因为保存的期限无法设置,导致保存的图片文件过多,硬盘空间会被占满导致电脑死机,为了避免死机.现在想做一个自动删除超过7天的文件夹的批处理程序

请高手来,拒绝灌水~

我给出的答案(很费心思):
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "skip=5 tokens=1,4" %%i in ('dir  /ad c:\temp') do (set a=%%i
  4. set b=%%j
  5. if !a:~0,4!==%date:~0,4% (
  6. set /a c=!a:~5,2!*30+!a:~8,2!-!date:~5,2!*30-!date:~8,2!) else (
  7. rd /s /q c:\temp\!b!)
  8. if !c! geq 7 rd /s /q c:\temp\!b!
  9. )
  10. pause
复制代码
能帮忙检测一下语法或逻辑上的错误吗?

本帖最后由 hanyeguxing 于 2011-4-19 16:11 编辑

日期不能直接参与 set/a 运算:1,因为含前缀0;2,进制不是10
如果不包含隐藏目录,则 ('dir  /ad c:\temp') 解析可以直接使用for /d
  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 set/a M-=1,Y-=!M,M+=!M*12,"K=!(M-4)|!(M-6)|!(M-9)|!(M-11)","D+=!(M-2)*(28+((!(Y%%4)&!!(Y%%100))|!(Y%%400)))+K*30+(!!(M-2)&!K)*31"
  4. set M=0%M%&set D=0%D%
  5. setlocal enabledelayedexpansion
  6. for /d %%a in ("c:\temp\*") do (
  7.     set K=%%~ta
  8.     if "!K:~0,10!" lss "%Y%-%M:~-2%-%D:~-2%" rd /s "%%~fa"
  9. )
复制代码
1,要求 %date% 形如 2011-04-19 ......
2, for 前面的代码用于运算出7天前的日期
3,下面的 if 语句根据需要选择使用 lss 或 leq
4,如果是32位系统,可以使用下面代码:
  1. @echo off
  2. set/a D=1%date:~8,2%%%100-7,"E=!!((D>>32)+!D)",M=1%date:~5,2%%%100-E,Y=%date:~0,4%-!M*E,M+=!M*12,"K=!(M-4)|!(M-6)|!(M-9)|!(M-11)","D+=(!(M-2)*(28+((!(Y%%4)&!!(Y%%100))|!(Y%%400)))+K*30+(!!(M-2)&!K)*31)*E"
  3. set M=0%M%&set D=0%D%
  4. setlocal enabledelayedexpansion
  5. for /d %%a in ("c:\temp\*") do (
  6.     set K=%%~ta
  7.     if "!K:~0,10!" lss "%Y%-%M:~-2%-%D:~-2%" rd /s "%%~fa"
  8. )
复制代码
寒夜孤星:在没有说明的情况下,本人所有代码均运行在 XP SP3 下 (有问题请发贴,QQ临时会话已关闭)

TOP

本帖最后由 zm900612 于 2011-4-19 15:49 编辑

另类思路,用date命令判断出合法的前六天日期,将其设为变量,递归判断文件

TOP

批处理删除指定天数日期之前的文件
http://bbs.bathome.net/thread-3334-1-1.html

批处理删除指定天数日期之前的文件夹
http://bbs.bathome.net/thread-3503-1-1.html
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

我正需用这个,不过,我是想做到,先判断硬盘的空间再做这删除的操作。
批处理也是一种程序,也是一种智慧。

TOP

返回列表