自动删除几天前的文件
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: estDATA /M * /S /D -200 /C "cmd /c del /F /s /q @file"
echo forfiles /P D: estDATA /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:SOFTOA_BAK2018" /s /m * /d -7 /c "cmd /c if @ISDIR==TRUE RD /s/q @path"
2) 批处理删除文件夹
执行该bat文件的话,会删除D:ApacheLog_Archives文件夹下面的7天之前的目录,包括目录下的文件。
cleanup.bat
@echo off
:: set folder path
set log_path=D:ApacheLog_Archives
:: set min age of files and folders to delete
set max_days=7
:: remove sub directories from %log_path%
C:WindowsSystem32forfiles -p %log_path% -d -%max_days% -c "cmd /c IF @isdir == TRUE rd /S /Q @path"
3) 批处理删除文件
删除D:ApacheLogs文件夹下的7天之前的所有文件。
DelFile.bat
set log_path=D:ApacheLogs
:: remove files from %log_path%
forfiles -p %log_path% -m *.* -d -%max_days% -c "cmd /c del /q @path"