利用批处理脚本删除指定日期前文件

删除指定日期前文件
根据需求可分为两种情况:
一、 以修改时间为准,删除N天之前数据
以修改时间为准删除数据脚本很简单,DOS自有命令即可实现:
forfiles /p “c:\test” /s /m . /d -7 /c “cmd /c del @path”
需删除的目录 多少天之前
二、 以创建时间为准,删除N天之前数据(无需修改本机时间格式)
以创建时间为准删除数据较为麻烦,因为没有命令可以直接获取到创建时间,需要通过多个命令结合处理方可实现
@echo off
::get date 获取当前时间
set mm=%date:~0,2%
set dd=%date:~3,2%
set yy=%date:~6,4%
::上述需根据本机时间格式自行确定对应关系
::(yy为年,mm为月,dd为日,变量名可自己修改)
::例:本机时间格式为2021/03/02(在cmd通过date命令得到),
::则yy=%date:~0,4% mm=%date:~5,2% dd=%date:~8,2%
::date后数字解释:第一位—开始的位数,第二位—获取的位数
::yy—从第0位开始,获取四位字符赋值给yy,则yy=2021
if %mm:~0,1%==0 (set mm=%mm:~1,1%)
if %dd:~0,1%==0 (set dd=%dd:~1,1%)
::上方代码为去0,方便后续进行比较

::get parameters
set /a pastdays=7
set /a sm=mm
set /a sy=yy
set /a sd=dd
::设置指定天数

::get days in mounth
call :getdays %sm%

if %dd% GTR %pastdays% (set /a sd=dd-pastdays)&(goto :sj)

if %dd% LEQ %pastdays% (set /a overdays=pastdays-dd,sm=mm-1)
if %sm% EQU 0 (set /a sy=yy-1, sm=12)
if %days% GEQ %overdays% (set /a sd=days-overdays)&(goto :sj)

:getoverdays
::echo %sm%
::echo %sy%
if %sm% EQU 0 (set /a sy=yy-1, sm=12)
if %days% LSS %overdays% (set /a overdays=overdays-days)&(call :getdays %sm%)&(set /a sm=sm-1)&(goto :getoverdays)
if %days% GTR %overdays% (set /a sd=days-overdays)
if %days% EQU %overdays% (call :getdays %sm%)&(set /a sm=sm-1)&(set /a sd=days)
if %sm% EQU 0 (set /a sy=yy-1, sm=12)

:sj
if %sm% LSS 10 (set sm=0%sm:~-1%)
if %sd% LSS 10 (set sd=0%sd:~-1%)
set DstDate=%sy%%sm%%sd%
::echo %DstDate%
::echo.&pause

::delete files
set SrcDir=E:\临时文件
::设置要删除文件的文件夹路径(绝对路径)
::echo.&pause
for /f “delims=/” %%a in (‘dir /s /b /a-d “%SrcDir%”’) do (
call :CompareTime “%%a” %DstDate%
)
::echo.&pause

:CompareTime
setlocal enabledelayedexpansion
for /f “skip=5 tokens=1-2 delims= " %%h in (‘dir /a-d /tc %1’) do (
for /f “tokens=1-3 delims=/” %%i in (”%%h") do (
set /a redu=%%i%%j%%k
::上方代码也需根据本机时间格式调整(i、j、k获取以/分割的三段字符)
::例:本机格式02/03/2021,则i=02 j=03 k=2021 redu=%%k%%j%%i
::确保redu为年月日格式
::echo !redu!
if !redu! LEQ %2 (
if exist %1 (
del /a /f /q %1

)

)
goto :eof
)
)

:getdays
set /a leap="!(yy %% 4) & !(!(yy %% 100)) | !(yy %% 400)"
::echo %leap%
set /a max=28+leap
set /a lm=%1-1
if %lm% EQU 0 (set /a lm=12)
for /f “tokens=%lm%” %%i in (“31 %max% 31 30 31 30 31 31 30 31 30 31”) do (set /a days=%%i)
::echo %days%

利用批处理脚本删除指定日期前文件相关推荐

  1. Crontab 自动删除指定日期前文件或者文件夹

    编写自动定时删除的脚本 vim deletem.sh 添加如下内容,记得给脚本deletem.sh设置权限. #!/bin/bash starttime=$(date +%Y-%m-%d\ %H:%M ...

  2. mysql数据库ftp备份_Linux下自动备份MySQL数据库并上传到远程FTP服务器且删除指定日期前的备份Shell脚本...

    说明: 1.备份MySQL数据库存放目录/var/lib/mysql下面的vos3000db数据库到/home/mysql_data里面,并且保存为vos3000db_bak_2012_06_30.t ...

  3. python删除指定日期前的备份文件

    这个脚本还有待完善,没有加入迭代子目录,后期完善. #!/bin/env python #coding=utf-8 import time,datetime,os,sysdir='/usr/local ...

  4. linux shell脚本 删除指定目录下文件夹(可指定文件夹名、时间)

    情景:需要删除以201812开头的.6天前修改的文件夹(文件夹里包含文件).鼓捣了好一会,开始用find /home/users/niu/test/log/ -name '201812*' -type ...

  5. 命令行删除目录下指定日期前文件

    显示文件 FORFILES /P D:\backupseed /S /M *.blf /D -3 /C "cmd /c echo @path" 删除文件 FORFILES /P D ...

  6. Windows定时删除某天前文件的批处理脚本

    备注: 1.如XP下因为没有forfiles.exe,拷贝windows2003下的forfiles.exe文件到XP的system32目录即可使用forfiles命令. 2.该文档适用于window ...

  7. bat递归查找指定文件_批处理脚本遍历指定文件夹下的文件

    批处理脚本 1. 遍历指定文件夹下的文件 1.1 命令解释 命令: for [参数] %%变量名 in (匹配符) do (执行的命令) 切记:每个指令之间必须以空格隔开,in 与 ( 之间有空格,d ...

  8. forfiles命令批量删除N天前文件

    在整理手上几台SQL SERVER 2000的数据库备份时,一方面为了方便快速还原数据库,另外一方面为了备份冗余.备份方式统一(先备份到本地,然后收上磁带),将以前通过Symantec Backup ...

  9. Linux下自动备份Oracle数据库并删除指定天数前的备份

    说明: Oracle数据库服务器 操作系统:CentOS IP:192.168.0.198 端口:1521 SID:orcl Oracle数据库版本:Oracle11gR2 具体操作: 1.root用 ...

最新文章

  1. 能源局再出新招 拟推光伏电站竞价上网
  2. Windows下在后台运行jar包
  3. Android移动开发之【Android实战项目】记一次app开发过程!
  4. 网易笔试——混合颜料
  5. 微软系统工具套件SysinternalsSuite各个工具功能说明
  6. python代码性能分析_使用memory_profiler对代码进行性能分析会增加执行时间
  7. JSF和Facelets的lifecircle
  8. html元素中的click属性,从HTML中的onClick属性调用jQuery方法
  9. kafka sqs 与_RabbitMQ和Kafka的比较
  10. 虚拟打印机 android版,虚拟打印机(SmartPrinter)
  11. DIRECTSHOW中的视频捕捉
  12. 梯度消失和梯度爆炸原因及其解决方案
  13. MybatisPlusException: This is impossible to happen
  14. 比亚迪元EV汽车拆解报告
  15. Springboot导出excel,合并单元格示例
  16. 获取svg和svg内容的方法
  17. 银河麒麟项目经验记录2
  18. 每日词根——morph(形状)
  19. 安泰:线束测试仪如何快速判断汽车线束的故障情况
  20. Linux MTD架构下的nand flash驱动详解

热门文章

  1. 网站SEO关键词排名优化经验分享-建站后的推广细节
  2. 深度学习算法相关岗-校招、社招、实习-面试知识要点及答案分享
  3. js怎么判断是否是数组的六种方法
  4. c语言两位共阴数码管00,两位数码管动态显示C语言程序
  5. 【单片机仿真项目】外部中断0和1控制两位数码管进行计数
  6. 大整数运算(高精度运算)C/C++
  7. ananconda离线安装.tar.bz2包
  8. dta文件 mysql_MySql创建数据库。
  9. Niuke 练习赛19 托米航空公司 搜索
  10. Unity自定义字体 包括中文