• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    用批处理实现的删除特定时间以前的文件

    使用for命令读取dir /tc /o-d /a的结果,可以分成4段,前两段为日期与时间,第3段为目录或文件大小,第4段为文件名或目录名。然后根据第1段和第2段与需要的时间进行比较,决定是否删除文件

    @echo off 
    rem cd /d f:\temp 
    rem mDateTime格式: yyymmddHHmm 
    set mDateTime=200608161907 
    for /f "skip=4 tokens=1,2,3,4* delims=>" %%i in ('dir /a /-c /tc /o-d') do call :proc %%i %%j %%k %%l 
    goto end 
    
    :proc 
    set aDate=%1 
    set aTime=%2 
    set aType=%3 
    set aFile=%4 
    set aDatetime=%aDate:~0,4%%aDate:~5,2%%aDate:~8,2%%aTime:~0,2%%aTime:~3,2% 
    if /i "%aDateTime%" lss "%mDateTime%" (if NOT "%aType%"=="DIR" attrib "%aFile%" -r -h -s  del "%aFile%") 
    
    :end 
    

    但上面会有点问题,主要是因为if不能做大的数字的比较,200608161907对if来说太大了。我们可以先比较日期,再比较时间,但if语句比较多,还是折中一下,采用两位年份:

    rem mDateTime格式: ymmddHHmm
    set mDateTime=0608161907
    ……
    set aDatetime=%aDate:~2,2%%aDate:~5,2%%aDate:~8,2%%aTime:~0,2%%aTime:~3,2%

    Windows2003有一个命令Forfiles,如: 
    Forfiles /D -30 /C "cmd /c echo @fname 是30天前的。2000下可以把2003的Forfiles.exe文件拷过来用。 

    另外如果保留最近n个文件,就比较简单了,如,保留最近30个bak文件: 
    for /f "skip=30" %i in ('dir *.bak /tc /o-d /b') do del %i 

    批处理中,要把%i 改为%%i

    您可能感兴趣的文章:
    • bat定时自动关机,bat自动结束任务关闭程序,dos自动结束程序后关机
    • 实现每个星期的每一天指定时间关机的dos/bat
    • Java调用DOS实现定时关机的实例
    • 用bat实现定时执行任务的批处理文件
    • 批处理 实现定时关机、注销、重启、锁定等功能
    • 可以设定的定时关机的批处理
    • 定时检查网站是否掉线的批处理
    • 在Windows主机上定时备份远程VPS(CentOS)数据的批处理
    • 如何利用DOS批处理实现定时关机操作详解
    上一篇:计算机/网络设备状态监测脚本 批处理
    下一篇:使用批处理删除HOSTS中特定内容的行的代码
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    用批处理实现的删除特定时间以前的文件 用,批处理,实现,的,删除,