命令行方式调用winrar对文件夹进行zip压缩示例代码

调用C#自带的API进行压缩

                //zip
                destFullPath = destFullPath + "\\" + _myConfig.zipFileName;
                if (File.Exists(destFullPath))
                    File.Delete(destFullPath);
                ZipFile.CreateFromDirectory(_myConfig.tempFileFolder, destFullPath);


调用winRAR进行压缩

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace testZIPEXE
{
    class Program
    {
        static void Main(string[] args)
        {
            String exePath = "C:\\Program Files (x86)\\WinRAR\\winrar.exe";
            /*
             * a      添加文档,必须要有,否则不会输出压缩文件。
             * -k     锁定压缩文件
             * -r     包括子目录
             * -m1    使用最快方式(低压缩)
             * -ep1   排除基准文件夹,不然压缩包会包含待压缩文件夹所在的完整路径
             * -o+    覆盖已经存在的文件
             * -afzip 指定压缩格式为zip方式
             * 目标文件(全路径)
             * 源文件夹
             * */
            String parameters = String.Format("a -k -m1 -ep1 -afzip -r -o+  D:\\workspace\\cat8637_brand_20150211\\trunk\\cat8637_brand\\dest\\brand.zip D:\\workspace\\cat8637_brand_20150211\\trunk\\cat8637_brand\\temp\\brand");

            exec(exePath, parameters);

            Console.WriteLine("end");
        }

        static public void exec(string exePath, string parameters)
        {
            System.Diagnostics.ProcessStartInfo psi =
                new System.Diagnostics.ProcessStartInfo();
            psi.RedirectStandardOutput = true;
            psi.RedirectStandardError = true;
            psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden;
            psi.UseShellExecute = false;
            psi.FileName = exePath;
            psi.Arguments = parameters;
            System.Diagnostics.Process process = System.Diagnostics.Process.Start(psi);
            //System.IO.StreamReader outputStreamReader = process.StandardOutput;
            //System.IO.StreamReader errStreamReader = process.StandardError;

            int i = 0;
            do
            {
                process.WaitForExit(2000);
                i++;
            } while (process.HasExited == false && i < 15);


            //if (process.HasExited)
            //{
            //    string output = outputStreamReader.ReadToEnd();
            //    string error = errStreamReader.ReadToEnd();
            //    MessageBox.Show(output);
            //    MessageBox.Show(error);
            //}
        }
    }
}



你可能感兴趣的:(命令行方式调用winrar对文件夹进行zip压缩示例代码)