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

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    用批处理删除N天前或指定日期时间(前后)创建(或修改)的文件

    核心代码:

    @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

    您可能感兴趣的文章:
    • 用批处理文件自动备份文件及文件夹,并自动删除n天前的文件
    • cmd forfiles 从文件夹或树中选择要进行批处理的文件(方便批量删除n天前的文件)
    上一篇:使用forfiles命令批量删除N天前文件
    下一篇:批处理处理文本文件去重复实现代码
  • 相关文章
  • 

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

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

    用批处理删除N天前或指定日期时间(前后)创建(或修改)的文件 用,批处理,删除,天前,或,