通过forfiles命令自动删除几天前的文件

自动删除几天前的文件

Windows 2003 2008测试通过

通过forfiles命令找到几天前的数据。

forfiles的几个参数:

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

综上所述,得出下列脚本:

@echo off
echo Del file :::::::::
echo forfiles /P D:\test\DATA /M * /S /D -200 /C "cmd /c del /F /s /q @file"
echo forfiles /P D:\test\DATA /D -200 /C "cmd /c del @file"

echo done
echo . & pase

在linux下可以用find 命令来查找:
find ./ -ctime 1 -name “*mail” -exec rm {} \;
删除一天前修改的文件。

rem 删除前一天的历史数据
forfiles /m *.fc /s /D -1 /c "cmd /c del @file"

rem 删除当前目录下及其子目录中的空文件夹
for /f "tokens=*" %a in ('dir /b /ad /s E:\FileCache^|sort /r') do rd "%a" /q 2>nul

在批处理中把%改成%%
for /f "tokens=*" %%a in ('dir /b /ad /s E:\FileCache^|sort /r') do rd "%%a" /q 2>nul

 

 

 

实例:

@echo off
title 清理7天之前的备份
echo ********************
echo 正在清除7天之前的OA备份文件,请稍后......
forfiles /p "F:\SOFT\OA_BAK\2018" /s /m * /d -7 /c "cmd /c if @ISDIR==TRUE RD /s/q @path"

 

 

 

2) 批处理删除文件夹

执行该bat文件的话,会删除D:\Apache\Log_Archives文件夹下面的7天之前的目录,包括目录下的文件。

cleanup.bat

@echo off

:: set folder path

set log_path=D:\Apache\Log_Archives

:: set min age of files and folders to delete

set max_days=7

:: remove sub directories from %log_path%

C:\Windows\System32\forfiles -p %log_path% -d -%max_days% -c "cmd /c IF @isdir == TRUE rd /S /Q @path"

 

3) 批处理删除文件

删除D:\Apache\Logs文件夹下的7天之前的所有文件。

DelFile.bat

set log_path=D:\Apache\Logs

:: remove files from %log_path%

forfiles -p %log_path% -m *.* -d -%max_days% -c "cmd /c del /q @path"

posted on 2018-03-15 18:34  xianguang  阅读(536)  评论(0编辑  收藏  举报

导航