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

[文件操作] 批处理怎样按照修改时间来删除一周前的文件?

请问 批处理可以做到 删除存在时间大于1周的文件吗?
希望赐教!!

dir /tc可以查看文件创建时间,所以是可以做到的

TOP

:: DateDel2.bat - 删除指定路径下指定日数以前修改的文件
:: Will Sort - 2005-9-2 - CMD@WinXP
:: 注意事项:参数%1指定日数,昨天为1,前天为2,依次类推
::           参数%1指定文件路径,省略时将处理当前路径
:: 核心算法:Ritchie Lawrence, updated 2002-08-13. Version 1.1
:: 出处:http://www.cn-dos.net/forum/viewthread.php?tid=16676

@echo off & setlocal ENABLEEXTENSIONS
call ate2Day %date:~0,10% sdays
set /a sdays-=%1
call :Day2Date %sdays% difdate
echo 将删除 %cd% 下 %difdate% 前的修改的以下文件:
for /r %2 %%f in (*.*) do if "%%~tf" LEQ "%difdate%" echo "%%f"
goto :EOF

:Date2Day
setlocal ENABLEEXTENSIONS
for /f "tokens=1-3 delims=/-, " %%a in ('echo/%1') do (
  set yy=%%a & set mm=%%b & set dd=%%c
)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,j=153*m+2
set /a j=j/5+dd+y*365+y/4-y/100+y/400-2472633
endlocal&set %2=%j%&goto :EOF

:Day2Date
setlocal ENABLEEXTENSIONS
set /a i=%1,a=i+2472632,b=4*a+3,b/=146097,c=-b*146097,c/=4,c+=a
set /a d=4*c+3,d/=1461,e=-1461*d,e/=4,e+=c,m=5*e+2,m/=153,dd=153*m+2,dd/=5
set /a dd=-dd+e+1,mm=-m/10,mm*=12,mm+=m+3,yy=b*100+d-4800+m/10
(if %mm% LSS 10 set mm=0%mm%)&(if %dd% LSS 10 set dd=0%dd%)
endlocal&set %2=%yy%-%mm%-%dd%&goto :EOF

请问有人知道这怎么改吗

TOP

  1. @echo off
  2. set "filepath=d:\bat\"   &rem 路径最后一个字符必须带\
  3. set "t=7"  &rem 几天之前,不能超过28
  4. set "y=%date:~0,4%"
  5. set "m=%date:~5,2%"
  6. set "d=%date:~8,2%"
  7. if %m% lss 10 set "m=%m:~1,1%"
  8. if %d% lss 10 set "d=%d:~1,1%"
  9. set /a "nd=!!(d/t)*(d-t)|(d+30-t)*!(d/t)|!(d-t)*30"
  10. if %d% lss %t% (
  11.     set /a "d=nd+(!(m-2)|!(m-4)|!(m-6)|!(m-8)|!(m-9)|!(m-11)|!(m-1))","d=d-(!(m-3))*2","d=d+!(y%%4)"
  12.     set /a "m=!(m-1)*12|(m-1)"
  13.     set /a "y=y-!(m-1)"
  14. ) else (
  15.   set d=%nd%
  16. )
  17. if %m% lss 10 set "m=0%m%"
  18. if %d% lss 10 set "d=0%d%"
  19. set "tm=%y%%m%%d%"
  20. call :delfortime %filepath%
  21. goto :eof
  22. :delfortime
  23. set "f=%~p1"
  24. set "f=%f:\=\\%"
  25. setlocal ENABLEDELAYEDEXPANSION
  26. for /f "usebackq tokens=1,2" %%i in (`wmic datafile where "drive='%~d1' and path='%f%'" get Name^,LastModified`) do (
  27.     set "tt=%%i"
  28.     set "tt=!tt:~0,8!"
  29.     if !tm! gtr !tt! del /q /s "%%j"
  30. )
  31. endlocal
复制代码

TOP

返回列表