用批处理删除N天前或指定日期时间(前后)创建(或修改)的文件
技术  /  管理员 发布于 7年前   242
核心代码:
@echo off:: by oicu#lsxk.org:: 15:17 2011-1-13:: 如果只是删除指定日期或N天前修改的文件,用forfiles即可FORFILES /P "C:\测试目录" /S /M *.log /D -3 /C "cmd /c if @isdir==FALSE echo del @file":: 指定日期(包含)前修改的文件:/D -yyyy/mm/dd:: 以下是流水账:: 使用限制:控制面板里设定日期格式为中文(中国):: 只有dir /tc才能查看到文件创建时间,默认dir都是dir /tw:: 为了取出创建时间,只好用两次for+find,肯定很慢。cd /d 你的目录:: 如果要包含子目录,用for /r . %%a in (*):: 显示文件修改时间for %%a in (*) do echo "%%~ta":: 中文格式时相当于for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ('dir /tw "%%a" ^| find /i "%%~nxa"') do echo "%%b %%c":: 删除某个时间后修改过的文件(这个简单)for %%a in (*) do if "%%~ta" gtr "2008-04-01" echo del "%%a":: 这个才是显示文件创建时间for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ('dir /tc "%%a" ^| find /i "%%~nxa"') do echo "%%b %%c":: 删除某个时间之后创建的文件,如果要删除某个时间之前创建的,更改两:: 处gtr为lss。除了日期外,增加判断时间,可以去掉else段。for %%a in (*) do for /f "tokens=1,2* delims= " %%b in ('dir /tc "%%a" ^| find /i "%%~nxa"') do ( if "%%b" gtr "2010-12-15" ( echo del "%%a" ) else ( if "%%b" equ "2010-12-15" if "%%c" gtr "14:50" echo del "%%a" )):: 用批处理计算时间受到系统的日期格式限制,影响到用set取某一字段的值,:: 批处理计算时间方法过于复杂,要么只用vbs脚本删除文件,要么用批处理:: 配合vbs脚本删除。:: 取10天之前的日期,取回放入变量OldDateecho wscript.echo dateadd("d",-10,date)>GetOldDate.vbsfor /f %%a in ('cscript /nologo GetOldDate.vbs') do set OldDate=%%aecho %OldDate%del GetOldDate.vbs:: VBScript里没有Format函数,Year、Month、Day等函数取数值后也要处理小:: 于10的数字,只能用下面的方法整理日期格式echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbsfor /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.vbs') do ( set y=%%i set m=%%j set d=%%k)if %m% LSS 10 set m=0%m%if %d% LSS 10 set d=0%d%set OldDate=%y%-%m%-%d%echo %OldDate%del GetOldDate.vbs:: 综合上文,最后得到我们想要的结果:: 删除10天前创建的旧文件(不含子目录)echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbsfor /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.vbs') do ( set y=%%i set m=%%j set d=%%k)if %m% LSS 10 set m=0%m%if %d% LSS 10 set d=0%d%set OldDate=%y%-%m%-%d%del GetOldDate.vbsfor %%a in (*) do for /f "tokens=1,2* delims= " %%b in ('dir /tc "%%a" ^| find /i "%%~nxa"') do ( if "%%b" lss "%OldDate%" echo del "%%a"):: 删除10天前修改的旧文件(不含子目录)echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbsfor /f "tokens=1,2,3* delims=-/. " %%i in ('cscript /nologo GetOldDate.vbs') do ( set y=%%i set m=%%j set d=%%k)if %m% LSS 10 set m=0%m%if %d% LSS 10 set d=0%d%set OldDate=%y%-%m%-%d%del GetOldDate.vbsfor %%a in (*) do if "%%~ta" lss "%OldDate%" echo del "%%a":: 本文全部用echo del代替del,只是显示要删除的文件,并不实际删除。pausegoto :eof
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号