用批处理删除N天前或指定日期时间(前后)创建(或修改)的文件
来源:本站原创|时间:2020-01-10|栏目:DOS/BAT|点击: 次
核心代码:
@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天之前的日期,取回放入变量OldDate echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs for /f %%a in ('cscript /nologo GetOldDate.vbs') do set OldDate=%%a echo %OldDate% del GetOldDate.vbs :: VBScript里没有Format函数,Year、Month、Day等函数取数值后也要处理小 :: 于10的数字,只能用下面的方法整理日期格式 echo wscript.echo dateadd("d",-10,date)>GetOldDate.vbs for /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.vbs for /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.vbs for %%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.vbs for /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.vbs for %%a in (*) do if "%%~ta" lss "%OldDate%" echo del "%%a" :: 本文全部用echo del代替del,只是显示要删除的文件,并不实际删除。 pause goto :eof
上一篇:没有了
栏 目:DOS/BAT
本文标题:用批处理删除N天前或指定日期时间(前后)创建(或修改)的文件
本文地址:https://www.xiuzhanwang.com/a1/DOS_BAT/10032.html
您可能感兴趣的文章
- 01-10DOS下查看硬盘分区该使用什么命令
- 01-10使用批处理实现软件的自动安装以安装搜狗拼音为例
- 01-10通过批处理修改DNS的代码(推荐)
- 01-10windows使用批处理发布web到tomcat并启动tomcat脚本分享
- 01-10再谈DOS批处理下格式化日期字符串的三种方法(详解)
- 01-10win7怎么设定关闭显示器时间
- 01-10用批处理一键安装两种扩展名的Windows系统补丁
- 01-10ip地址切换批处理脚本分享
- 01-10批处理杨辉三角效果实现代码
- 01-10Windows下写一个文件备份脚本(专用备份的)
阅读排行
本栏相关
- 01-10DOS下查看硬盘分区该使用什么命令
- 01-10使用批处理实现软件的自动安装以安
- 01-10后台运行bat定时器程序示例分享
- 01-10通过批处理修改DNS的代码(推荐)
- 01-10dota2服务器ping测试脚本分享
- 01-10再谈DOS批处理下格式化日期字符串的
- 01-10windows使用批处理发布web到tomcat并启动
- 01-10win7怎么设定关闭显示器时间
- 01-10屏蔽up键禁止游戏运行脚本分享
- 01-10win7创建wifi热点脚本分享
随机阅读
- 01-10C#中split用法实例总结
- 01-10SublimeText编译C开发环境设置
- 08-05织梦dedecms什么时候用栏目交叉功能?
- 04-02jquery与jsp,用jquery
- 01-11Mac OSX 打开原生自带读写NTFS功能(图文
- 08-05dedecms(织梦)副栏目数量限制代码修改
- 01-10delphi制作wav文件的方法
- 08-05DEDE织梦data目录下的sessions文件夹有什
- 01-10使用C语言求解扑克牌的顺子及n个骰子
- 01-11ajax实现页面的局部加载