DOS删除某目录中几天前的文件

  最近某个用到的第三方程序会产生很多日志文件在logs目录中,每天一个log文件,类似
2014-05-07001.log。日积月累这个目录文件数量非常多,手动清除还是比较麻烦的。

  由于这个软件不是自己开发的,无法改变log产生机制,于是想到找个BAT放到计划任务中定时删除这些文件。

  网上找到几个BAT都无法正确运行,估计是别人转载的时候也没真正使用过,于是我在别人代码的基础上略加修改现在可以正常运行了:


@echo off&setlocal enabledelayedexpansion
set ds=7
set di=d:\Soft\logs
set "dy=%date:~,4%"
set "dm=%date:~5,2%"
set "dd=%date:~8,2%"
echo 当前日期为:%dy%年%dm%月%dd%日
echo.
if %dm:~,1%==0 set "dm=%dm:~1%"
if %dd:~,1%==0 set "dd=%dd:~1%"
set/a "dd-=ds"
if !dd! gtr 0 goto ok
echo 正在计算%ds%天前的日期...
:ry
set /a "feb=^!(!dy!&3)+28"
if "%dy:~2,2%" equ "00" set/a "feb=feb-1+^!(dy:~,2&3)"
if %feb%==29 echo %dy%年是闰年
echo.
:tyt
set n=0
set/a "dm-=1"
if %dm% equ 0 (
set/a "dy-=1,dm=12,dd+=31"
if %dd% gtr 0 (goto ok )else goto ry )
for %%a in (31 %feb% 31 30 31 30 31 31 30 31 30 31) do (
set/a n+=1
if !n! equ %dm% set/a "dd+=%%a")
if %dd% leq 0 goto tyt
:ok
set/a "ymd=dy*10000+dm*100+dd"
echo.
echo 前%ds%天的日期是%ymd:~,4%年%ymd:~4,2%月%ymd:~6,2%日
echo 正在获取文件日期再进行比较
echo 并删除%ds%天前创建并且%ds%天内未修改过的文件...
cd/d "%di%"
for /f "delims=" %%i in (‘dir/a/a-d/b‘)do (

Set "strymdx=%%~ti%"
Set "xdy=!strymdx:~,4!"
Set "xdm=!strymdx:~5,2!"
Set "xdd=!strymdx:~8,2!"
Set "ymdx=!xdy!!xdm!!xdd!"

Rem set ymdx=!ymdx~,4!!ymdx~5,2!!ymdx~8,2!
echo %%i,ymd=%ymd%,ymdx=!ymdx!,ti=%%~ti
if !ymdx! lss %ymd% (
if "%%i" neq "%~nx0" del/f "%%i"))
echo.
echo 处理完毕!即将退出...
@pause

自动运行的时候请将最后一行的@pause 去掉,这样cmd窗口就可以自动关闭了

DOS删除某目录中几天前的文件,布布扣,bubuko.com

时间: 2024-10-22 11:36:32

DOS删除某目录中几天前的文件的相关文章

dos命令删除代码目录中的.svn文件

当需要删除代码目录中的.svn文件时,可以用一句dos命令轻松搞定 for /r "删除.svn的目录" %i in (.svn) do rd /s /q %i

Linux rm(删除一个目录中的一个或多个文件或目录或删除非空目录)

rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除.对于链接文件,只是删除了链接,原有文件均保持不变. rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf).所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑. 命令格式: rm [选项] 文件- 命令功能: 删除一个目录中的一个或多个文件或目录,如

删除指定目录下的指定后缀的文件

1 import java.io.*; 2 import javax.swing.*; 3 public class Delete{ 4 public static void main(String[] args)throws Exception{ 5 String target = JOptionPane.showInputDialog(null,"请输入您要清理垃圾的目录:"); 6 File[] fs = new File(target).listFiles(new Filena

通过java递归思想实现以树形方式展现出该目录中的所有子目录和文件

当初在开始接触Java时  学习File部分的一个小练习  挺有意思 一开始是通过看 北京圣思园 张龙老师的视频开始学校java的,必须强烈推荐,真很棒. 功能实现:主要实现以树形方式展现出该目录中的所有子目录和文件. 另外, 在展现的时候将目录排在上面,文件排在下面.每一层要加上缩进. 文件是jre6文件夹,我想这文件夹就不用我说什么了.换上自己的文件路径就可以了. [java] view plain copy import java.io.File; public class FileTes

gradle 删除指定目录中的文件和目录

// 删除bakAPk下的所有非母包文件 task deleTask(type: Delete){ FileTree tree = fileTree(dir: bakPath) tree.each {File file -> if(!file.toString().contains(oldFileName)){ delete file } } } deleTask // 删除bakAPk目录下的所有非母包的目录和文件 task clearBacApkDir(type: Delete) { fil

Linux中定时清除指定目录中30分钟前生成的特定文件

1,在/root/deltts目录下,创建脚本 vi clearBigtrc03.sh,输入以下脚本.保存并退出 #!/bin/sh find /root/uploadFiles -mmin +30 -name *.mp3 -exec rm {} \; 2,给文件赋予执行权限 chmod 755 clearBigtrc03.sh 3,添加Linux中的定时任务 输入crontab -e打开定时任务编辑,在最后增加一行如下,然后保存退出 表示每3分钟执行一次脚本 */3 * * * * /root

python之删除指定目录指定日期下的日志文件

#=======================================================================================20190521以下脚本是通过读取excle路径删除应路进下的日志==============================================================# -*- coding:utf-8 -*-# ! /usr/bin/python# defaultencoding = 'utf-8

python工具程序一、复制目录中指定扩展名的文件

#!/usr/bin/env python # coding:utf-8 # xcopy Lib directory and rename all files to *d.lib import os from os.path import join,exists import shutil from win32com.shell import shell, shellcon from msvcrt import getch root_path = r"E:\workspace\Src"

新建以自己学号为名字的目录,并在此目录中生成(学号%1000)个文件,并证明生成了相应个文件。

#!/bin/bash #by tuzinum=3120210424let n=$num%1000mkdir `echo $num`for ((i=1;i<=$n;i++))do touch $num/"file$i"done ls -l $num/ |grep "^-" |wc -l