ACCESSC#调用WINRAR高效压缩源代码

    
有的上由于工作得,移动部分源代码,把源代码打包。压缩下来还有20,30MB,但骨子里一个化解方案来成千上万项目,每个品种还见面生成BIN文件夹,还有Obj文件夹,其中含有有程序集。这些个程序集是没有必要打包,有代码就实施了。所以于减小时,把它分别。最后压缩下来就生3,4MB,功能强大的WinRAR支持此操作。可以清除不打折扣的公文夹或文件。用C#描绘一个WinForm调用命令行的RAR来兑现这些操作吧,代码如下:

ACCESS 1ACCESS 2Code
 1         const int ERROR_FILE_NOT_FOUND = 2;
 2         const int ERROR_ACCESS_DENIED = 5;
 3 
 4         /// <summary>
 5         /// Open Target Folder Select dialog 
 6         /// </summary>
 7         /// <param name=”sender”></param>
 8         /// <param name=”e”></param>
 9         /// <remarks>Author Petter Liu http://www.cnblogs.com/wintersun/ </remarks>
10         private void button1_Click(object sender, EventArgs e)
11         {
12             folderBrowserDialog2.ShowDialog();
13             txtFolderTarget.Text = folderBrowserDialog2.SelectedPath;
14             txtFolderTarget.Text = Path.Combine(txtFolderTarget.Text,Path.GetFileName(txtFolderSrc.Text));
15             if (!string.IsNullOrEmpty(txtFolderSrc.Text))
16                 this.btnGo.Enabled = true;
17         }
18 
19         /// <summary>
20         /// Open Source Folder Select dialog
21         /// </summary>
22         /// <param name=”sender”></param>
23         /// <param name=”e”></param>
24         /// <remarks>Author Petter Liu http://www.cnblogs.com/wintersun/ </remarks>
25         private void button2_Click(object sender, EventArgs e)
26         {
27             folderBrowserDialog1.ShowDialog();
28             folderBrowserDialog1.ShowNewFolderButton = false;
29             txtFolderSrc.Text=folderBrowserDialog1.SelectedPath;
30         }
31 
32         /// <summary>
33         /// Execute WinRar Packet Source code
34         /// </summary>
35         /// <param name=”sender”></param>
36         /// <param name=”e”></param>
37         /// <remarks>Author Petter Liu http://www.cnblogs.com/wintersun/ </remarks>
38         private void button3_Click(object sender, EventArgs e)
39         {
40             string strSrcPath = txtFolderSrc.Text;
41             string strTargetPath = txtFolderTarget.Text;
42             //关键的参数,具体内容参看WinRAR帮助手册。
43             //-x*\\bin\\* -x*\\bin -x*\\obj\\* -x*\\obj  排除bin,obj文件夹里所有文件,以及文件本身。
44             //注意有转义字符
45             string arg = ” a -r -ag\”-[YYYY-MM-DD-HH-MM-SS]\” -m5 -x*\\bin\\* -x*\\bin -x*\\obj\\* -x*\\obj  “;
46 
47             System.Diagnostics.Process ProcessRar = new System.Diagnostics.Process();
48             ProcessRar.StartInfo.FileName = “C:\\Program Files\\WinRAR\\Rar.exe”;
49             ProcessRar.StartInfo.CreateNoWindow = true;
50 
51             if (this.chkFileName.Checked==false)
52                 arg = ” a -r -m5 -x*\\bin\\* -x*\\bin -x*\\obj\\* -x*\\obj  “;
53 
54             //图形化界面要去掉的文本被可输入 “*\bin\*” “*\bin\”  “*\obj\*” “*\obj\” 
55             ProcessRar.StartInfo.Arguments = string.Format(“{0}{1}  {2}”,arg,strTargetPath, strSrcPath);
56             try
57             {
58                 ProcessRar.Start();    
59             }
60             catch (Win32Exception ex)
61             {
62                 if (ex.NativeErrorCode == ERROR_FILE_NOT_FOUND)
63                 {
64                     MessageBox.Show(ex.Message + “. Check the path.”);
65                 }
66 
67                 else if (ex.NativeErrorCode == ERROR_ACCESS_DENIED)
68                 {
69                     MessageBox.Show(ex.Message + “. You do not have permission to print this file.”);
70                 }
71             }
72             if (ProcessRar.HasExited)
73             {
74                 int iExitCode = ProcessRar.ExitCode;
75                 string statusstr;
76                 if (iExitCode == 0)
77                 {
78                     statusstr = iExitCode.ToString() + ” Job Complete”;
79                 }
80                 else
81                 {
82                      statusstr =iExitCode.ToString() + ” Job Fail.”;
83                 }
84                MessageBox.Show(statusstr);
85             }
86             ProcessRar.Close();
87         }

自我再爱太迅速方便的艺术就是故批处理文件,编写内容如下:

@echo off
C:
cd “C:\Program Files\WinRAR”
rar.exe a -ag”-[YYYY-MM-DD-HH-MM-SS]” -m5 -inul -x*\bin\* -x*\bin -x*\obj\* -x*\obj “H:\My Project\Work\XXX2\xx.rar” “H:\My Project\XXx\xx” 

然而上面一切的操作的前提是须设置WinRar,有趣味的同仁可以自动到界面和效应,可以举一反三实现zip,7z等格式。

http://www.cnblogs.com/wintersun/

相关文章