• bat脚本、vbs脚本和perl脚本删除日志文件


    脚本这个东东还是非常实用的,可以简化手动操作。下面这个脚本是删除前七天的日志文件。

    bat脚本:

    @echo off
    echo ------------Delete log file,develop by terry-------------
    echo Today date::%date%
    ::Year
    set yy=%date:~0,4%
    ::Month
    set mms=%date:~5,2%
    if %mms% GTR 10 (set mm=%mms%) else (set mm=%mms:~1,2%)
    ::Day
    set dds=%date:~8,2%
    if %dds% GTR 10 (set dd=%dds%) else (set dd=%dds:~1,2%)
    ::Caluation
    set /a dt=%yy%*365+%mm%*31+%dd%
    
    echo Begin to delete the log file before seven days...
    echo ----------------------------------------------------------
    setlocal enabledelayedexpansion
    for /f "tokens=* delims=" %%i in ('dir /s/b "D:\Exception\*txt"') do (        
        set ff=%%~ti    
        ::Year    
        set yf=!ff:~0,4!
        ::Month
        set mfs=!ff:~5,2!    
        if !mfs! GTR 10 (set mf=!mfs!) else (set mf=!mfs:~1,2!)
        ::Day
        set dfs=!ff:~8,2!
        if !dfs! GTR 10 (set df=!dfs!) else (set df=!dfs:~1,2!)
        ::Caluation
        set /a ft=!yf!*365+!mf!*31+!df!
        set /a res=%dt%-!ft!
        ::Delete log file
        if !res! GTR 7 (echo Delete log file %%i)&&(del %%i /f /q)
    )
    Endlocal
    echo ----------------------------------------------------------
    echo Delete Completed.
    pause

    vbs脚本:

    Dim fso, startFolder, OlderThanDate
    Set fso = CreateObject("Scripting.FileSystemObject")
    startFolder = "D:\Exception\" 'File Path
    OlderThanDate = DateAdd("d",-7, Now)  'Delete files before sevens day,you can change the span day what you want
    
    
    Sub DeleteOldFiles(folderName, BeforeDate)
       Dim folder, file, fileCollection, folderCollection, subFolder
       Set folder = fso.GetFolder(folderName)
       Set fileCollection = folder.Files
       For Each file In fileCollection
          If file.DateLastModified < BeforeDate Then   
             fso.DeleteFile(file.Path)
          End If
       Next
        Set folderCollection = folder.SubFolders
        For Each subFolder In folderCollection
           DeleteOldFiles subFolder.Path, BeforeDate 
        Next
    End Sub
    
    'Use function
    DeleteOldFiles startFolder, OlderThanDate

     

    perl脚本:

    #!/usr/bin/perl
    use strict;
    use warnings;
     
    my $path = "D:/Exception";    #path
    my $filecount = 0;            #delete file count
    my $timeday=7*24*60*60;     #delete files before senven days
    my $timenow=time();         #timenow
    
    sub parse_env {
         my $path = $_[0];
         my $subpath;
         my $handle;
    
         if (-d $path) {
             if (opendir($handle, $path)) {
                 while ($subpath = readdir($handle)) {
                     if (!($subpath =~ m/^\.$/) and !($subpath =~ m/^(\.\.)$/)) {
                         my $p = $path."/$subpath";
                         
                         my $filetime = (stat($p))[9];      #file modify time
                         my $timespan=$timenow-$filetime;    #span time
        
                         if (-d $p) {
                             parse_env($p);
                 rmdir $p; }
    elsif ($timespan > $timeday) { ++$filecount; print "Delete the file:".$p."\n"; unlink($p) or warn "failed on $subpath:$!"; } } } closedir($handle); } } return $filecount; } #use function parse_env my $count = parse_env $path; my $str = "Delete files count:".$count; print $str;

     

    作者: ForEvErNoME
    出处: http://www.cnblogs.com/ForEvErNoME/
    欢迎转载或分享,但请务必声明文章出处。如果文章对您有帮助,希望你能 推荐关注
     
     
     
     
     
  • 相关阅读:
    Dialog源码分析
    PopupWindow源码分析
    Snackbar源码分析
    DialogFragment源码分析
    Toast源码深度分析
    Android 经典笔记之七:CountDownTimer解读
    [置顶] mybatis分页插件实现分页
    maven下配置ssm框架
    eclipse下集成tomcat+maven框架搭建
    maven开发ssm框架所遇到的问题:
  • 原文地址:https://www.cnblogs.com/ForEvErNoME/p/2757359.html
Copyright © 2020-2023  润新知