C# 启动WinRAR定时执行Web日志压缩清理

using System;   
using System.Collections.Generic;   
using System.Linq;   
using System.Text;   
using System.IO;   
using System.Timers;   
   
namespace WinCodeTest   
{   
    /// <summary>   
    /// Web日志文件备份   
    /// </summary>   
    class FileZip   
    {   
        static List<string> listFile = new List<string>();   
        public static void ZipLog()   
        {   
            //   Create   a   new   Timer   with   Interval   set   to   10   seconds.     
            System.Timers.Timer aTimer = new System.Timers.Timer(1000);   
            aTimer.Elapsed  = new ElapsedEventHandler(RunZip);   
            //   Only   raise   the   event   the   first   time   Interval   elapses.     
            aTimer.AutoReset = true;   
            aTimer.Enabled = true;   
   
            Console.WriteLine("The Task Is Running... write 'q' exit");   
            while (Console.Read() != 'q') ;   
        }   
   
        /// <summary>   
        /// 遍历文件夹将所有文件进行压缩   
        /// </summary>   
        private static void RunZip(object source, ElapsedEventArgs e)   
        {   
            //存放日志文件的目录   
            string filePath = @"D:\WebLog\";   
   
            DateTime formatDate = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));   
            DateTime startTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd 02:10:00"));   
            //定时执行时间判断   
            double ts = (formatDate - startTime).TotalSeconds;   
            if (ts == 0)   
            {   
                GetAllFiles(filePath);   
                foreach (string file in listFile)   
                {   
                    Console.WriteLine(DateTime.Now "-=|备份:"   file);   
                    ZipFile(file);   
                }   
                Console.WriteLine(DateTime.Now   "任务结束");   
            }   
        }   
        /// <summary>   
        /// 遍历目录下所有文件   
        /// </summary>   
        /// <param name="filePath"></param>   
        private static void GetAllFiles(string filePath)   
        {   
            //递归遍历所有子文件夹   
            string[] dir = Directory.GetDirectories(filePath);   
            for (int n = 0; n < dir.Length; n  )   
            {   
                GetAllFiles(dir[n]);   
            }   
   
            //保存文件夹内的文件路径 log文件   
            string[] file = Directory.GetFiles(filePath,"*.log");   
            for (int i = 0; i < file.Length; i  )   
            {   
                FileInfo fi = new FileInfo(file[i]);   
                //将两天前的日志加入压缩文件列表   
                if (fi.LastWriteTime < DateTime.Now.AddDays(-2))   
                {                       
                    listFile.Add(file[i]);   
                }                   
            }   
   
            //删除25天前的备份文件 rar文件   
            string[] fileRar = Directory.GetFiles(filePath, "*.rar");   
            for (int i = 0; i < fileRar.Length; i  )   
            {   
                FileInfo fi = new FileInfo(fileRar[i]);   
                   
                if (fi.LastWriteTime < DateTime.Now.AddDays(-25))   
                {   
                    Console.WriteLine(DateTime.Now   "-=|删除:"   fileRar[i]);   
                    fi.Delete();                       
                }   
            }   
        }   
   
        /// <summary>   
        /// 根据文件路径压缩[删除源文件(-df);不包含文件路径(-ep)]   
        /// </summary>   
        /// <param name="str">文件路径</param>   
        /// <returns></returns>   
        private static string ZipFile(string strFileName)   
        {   
            string fullFileName = strFileName;   
   
            System.IO.FileInfo fi = new System.IO.FileInfo(fullFileName);   
               
            string FileName = @"C:\Program Files\WinRAR\Rar.exe";   //Winrar软件的安装目录,也可以将'rar.exe'放在程序的运行目录,不过需要更改一下路径   
            //执行压缩的命令,可以查看winrar软件的帮助文档,里面有详细的说明   
            string command = "-df -ep -tl -or a "   fi.Directory   @"\"   fi.Name.Replace(fi.Extension, "")   ".rar "   fullFileName;   
               
            System.Diagnostics.Process p = new System.Diagnostics.Process();   
            string ResultStr;   
            p.StartInfo.FileName = FileName;   
            p.StartInfo.Arguments = " "   command;   
            p.StartInfo.UseShellExecute = false;   
            p.StartInfo.RedirectStandardInput = true;   
            p.StartInfo.RedirectStandardOutput = true;   
            p.StartInfo.RedirectStandardError = true;   
            p.StartInfo.CreateNoWindow = true;   
            p.StartInfo.ErrorDialog = false;   
            p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;   
            try   
            {   
                p.Start();   
                ResultStr = p.StandardError.ReadToEnd();   
                p.Close();   
                return ResultStr;   
            }   
            catch (Exception ex)   
            {   
                return ex.Message.ToString();   
            }   
        }   
    }   
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值