批处理删除任意天之前的文件

背景:最近有新的项目,每天都生成大量的落地数据,几天下来磁盘就快满了,赶快删除,就想有没有可以自动删除的脚本呢?  于是找到如下的脚本结合计划任务,完美解决需求。

备注:本脚本只适合windows平台。  经测试windows2003/2008/8/8.1/10可以执行.

forfiles /p "F:\110\20150613" /d -30 /c "cmd /c echo deleting @file ...&& del /f @path"

/p 指文件路径

/d  -30 表示30天之前

/c 表示为文件执行的命令,命令字符串应该用双引号

例子:

删除temp目录以子目录7天之前的以log为扩展名的文件。
forfiles /p c:\temp /s /m *.log /d -7 /c "cmd /c del @FILE"

列出某个目录的文件
forfiles /p c:\ /c "cmd /c if @isdir==FALSE echo @FILE"

把在C盘根目录下最后修改日期大于或等于2010年8月8日的文件复制到D盘根目录下

forfiles /p "c:" /d"2007-7-1" /c "cmd /c copy @path d:\"

如果不希望批处理有输出到屏幕,可以 ,命令后面加1>nul 2>nul

forfiles /p E:\Logs /m *.log -d -7 /c "cmd /c del /f @path" 1>nul 2>nul

详细说明:

FORFILES [/P pathname] [/M searchmask] [/S]
         [/C command] [/D [+ | -] {yyyy-MM-dd | dd}]

描述:
    选择一个文件(或一组文件)并在那个文件上
    执行一个命令。这有助于批处理作业。

参数列表:
    /P    pathname      表示开始搜索的路径。默认文件夹是当前工作的
                        目录 (.)。

/M    searchmask    根据搜索掩码搜索文件。默认搜索掩码是 ‘*‘。

/S                  指导 forfiles 递归到子目录。像 "DIR /S"。

/C    command       表示为每个文件执行的命令。命令字符串应该
                        用双引号括起来。

默认命令是 "cmd /c echo @file"。下列变量
                        可以用在命令字符串中:
                        @file    - 返回文件名。
                        @fname   - 返回不带扩展名的文件名。
                        @ext     - 只返回文件的扩展。
                        @path    - 返回文件的完整路径。
                        @relpath - 返回文件的相对路径。
                        @isdir   - 如果文件类型是目录,返回 "TRUE";
                                   如果是文件,返回 "FALSE"。
                        @fsize   - 以字节为单位返回文件大小。
                        @fdate   - 返回文件上一次修改的日期。
                        @ftime   - 返回文件上一次修改的时间。

要在命令行包括特殊字符,字符请以 0xHH
                        形式使用十六进制代码(例如,0x09 为 tab)。
                        内部 CMD.exe 命令前面应以 "cmd /c" 开始。

/D    date          选择文件,其上一次修改日期大于或等于 (+),
                        或者小于或等于 (-) 用 "yyyy-MM-dd" 格式指定的日期;
                        或选择文件,其上一次修改日期大于或等于 (+)
                        当前日期加 "dd" 天,或者小于或等于 (-) 当前
                        日期减 "dd" 天。有效的 "dd" 天数可以是
                        0 - 32768 范围内的任何数字。如果没有指定,
                        "+" 被当作默认符号。

/?                  显示帮助消息。

例如:
    FORFILES /?
    FORFILES
    FORFILES /P C:\WINDOWS /S /M DNS*.*
    FORFILES /S /M *.txt /C "cmd /c type @file | more"
    FORFILES /P C:\ /S /M *.bat
    FORFILES /D -30 /M *.exe
             /C "cmd /c echo @path 0x09 在 30 前就被更改。"
    FORFILES /D 2001-01-01
             /C "cmd /c echo @fname 在 2001年1月1日就是新的。"
    FORFILES /D +2015-8-21 /C "cmd /c echo @fname 今天是新的。"
    FORFILES /M *.exe /D +1
    FORFILES /S /M *.doc /C "cmd /c echo @fsize"
    FORFILES /M *.txt /C "cmd /c if @isdir==FALSE notepad.exe @file"

时间: 2024-07-28 12:39:11

批处理删除任意天之前的文件的相关文章

批处理删除7天以上的文件

windowns cmd :# 批处理删除7天以上的文件 :# 路径.天数.文件后缀 @echo off set lj="G:\test" set sj=-7 set wj=*.txt forfiles /p %lj% /s /m %wj% /d %sj% /c "cmd /c del @path"

批处理删除今天以前的同文件下的TXT文件

@echo off set CUR_DATE=%date:~0,10% set CUR_DATE="%CUR_DATE% 00:00" echo 今日%cur_date% for %%a in ("%cd%\*.txt") do ( if "%%~ta" lss %CUR_DATE% ( del /f /q "%%a" ) ) pause 版权声明:本文为博主原创文章,未经博主允许不得转载.

Windows自动删除n天前的文件的批处理脚本

数据库每天备份文件,然而只需要保留七天的备份即可,编写一个批处理脚本文件自动删除七天前的文件并设置定时任务 自动删除文件需要用到forfiles命令 forfiles参数:/p 指定的路径/s 包括子目录/m 查找的文件名掩码/d 指定日期,有绝对日期和相对日期, 此处-7指当前日期 的7天前   /c 运行的命令行   表示为每个文件执行的命令.命令字符串应该用双引号括起来. 默认命令是 "cmd /c echo @file".下列变量 可以用在命令字符串中: @file    -

批处理删除文件或列出文件用

自动删除几天前的文件 Windows 2003 2008测试通过 通过forfiles命令找到几天前的数据. forfiles的几个参数: /P 可是搜索的路径.在我们这里就是要在哪个目录寻找要删除的文件/M 根据搜索掩码搜索文件.默认为*,我们要删除某时间以前的文件.我们只关心时间./D 文件修改时间在某个时间之前或者之后.-200 表示200天之前的文件./C 表示为每个文件执行的命令,这里是要删除该文件所以为"cmd /c del /F /s /q @file".其中变量@fil

bat 批处理切换到当前脚本所在文件夹

切换到当前脚本所在的文件夹 1 cd  %~dp0 另外附上一些bat基本内容 —————————————————————————————— 批处理常用命令总结 - 批处理命令简介 目录 echo 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo 命令将显示当前回显设置. echo [{on|off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >> ^

无法删除 NTFS 盘上的文件或文件夹(对Windows文件的各种情况有比较详细的描述)

简介 本文介绍您可能无法删除 NTFS 文件系统卷上的文件或文件夹的原因,以及如何分析造成此问题的不同原因从而解决此问题. 更多信息 注意:在内部,NTFS 将文件夹作为特殊类型的文件进行处理.因此,本文中的“文件”一词可能指文件,也可能指文件夹. 原因 1:文件使用了 ACL 如果某个文件使用了访问控制列表 (ACL),您可能无法删除该文件.要解决此问题,请更改该文件上的权限.您可能需要拥有这些文件的所有权才能更改权限. 管理员具有取得任何文件所有权的隐含能力,即使未明确向他们授予针对此文件的

用批处理文件自动备份文件及文件夹,并自动删除n天前的文件

---恢复内容开始--- 下是备份的批处理,添加到"计划任务"中,设定时间自动运行 复制代码 代码如下:@echo off rem 格式化日期 rem date出来的日期是"2006-02-22 星期三",不能直接拿来使用,所以应该先格式化一下 rem 变成我们想要的.date:~0,4的意思是从0开始截取4个字符 set d=%date:~0,4%%date:~5,2%%date:~8,2% rem 设定压缩程序路径,这里用的是WINRAR的rar.exe进行打包

bat批处理设置Java JDK系统环境变量文件

原文:bat批处理设置Java JDK系统环境变量文件 自己修改第3行的Java安装目录就可以设置JAVA_HOME, classPath,追加到PATH的最前面 JAVA_HOME=C:\Program Files\Java\jdk1.6.0_10 classPath=%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;. PATH=%JAVA_HOME%\bin;............     追加到PATH的最前面(解决最后该不该有分号的问题

windows2003下自动删除n天前的文件

使用windows2003下的内置命令forfiles配合计划任务可以实现自动删除n天前的文件. windows2003中设定自动执行的计划任务很简单. forfiles命令用法: Forfiles 从文件夹或树中选择要进行批处理的文件. 语法 forfiles [/p Path] [/m SearchMask] [/s] [/c Command] [/d[{+ | -}] [{MM/DD/YYYY | DD}]] 参数 /p Path 指定 Path,表明要从哪里开始搜索.默认的文件夹是当前工