zoukankan      html  css  js  c++  java
  • 通过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: 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"

  • 相关阅读:
    C#
    数据库SQL Server
    JavaScript题目
    vscode: Visual Studio Code 常用快捷键
    jQuery教程
    JavaScript快速排序
    JS编程艺术
    JS
    linux 笔记
    积累的各种资源
  • 原文地址:https://www.cnblogs.com/xianguang/p/8575422.html
Copyright © 2011-2022 走看看