一个批量替换压缩文件工具的生产过程——打杂程序员的闲暇时光
因为需要,去寻找?还是自己做?
作为一个公司的打杂人员,总是需要做一些没有多大实效的琐事,这其实就是我的一个学习机会。哪里需要我,我就出现在哪里,现在需要批量处理200多个压缩文件,需要将现有的程序文件更新到这些压缩包中替换掉原有的,手动操作不免麻烦了一些,在这之前我的确是手动操作来着,无奈,为了偷懒有时间来写随笔,只好想办法自己写一个适合我自己使用的桌面程序了。
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
准备工作
选择自己做一个可以批量处理的工具,并且在以后的打杂生活中可以继续丰富这个小工具
①安装VS。因为只是写桌面程序,我就下载了VS deskTop版本
②分析思路流程。将D:\work\src下的文件夹的中的内容去替换掉D:\test\580下的200个文件夹中
③手动批量解压,批量压缩RAR工具支持,程序中暂且不加入批量解压
④程序中加入浏览选择文件,开始操作后显示当前操作记录的提示,替换完成一个文件后自动压缩该文件
①安装VS。因为只是写桌面程序,我就下载了VS deskTop版本
②分析思路流程。将D:\work\src下的文件夹的中的内容去替换掉D:\test\580下的200个文件夹中
③手动批量解压,批量压缩RAR工具支持,程序中暂且不加入批量解压
④程序中加入浏览选择文件,开始操作后显示当前操作记录的提示,替换完成一个文件后自动压缩该文件
界面献丑

movefile之浏览
最开始直接选择的是默认文本框,需要手动输入才能上地址,后来看了其它软件用一个浏览功能,我就想方设法也想来添加一下这个功能。搜索之后发现需要用到的是FolderBrowserDialog类
提示用户选择文件夹代码:
写到这里我想吐槽一下这个代码格式,之前我从写hello world开始就养成了一个习惯,括号{写在末尾,如:
提示用户选择文件夹代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | private string browseFolder( string where ) { FolderBrowserDialog fb = new FolderBrowserDialog(); if (fb.ShowDialog() == DialogResult.OK) { string wherePathValue = fb.SelectedPath; switch ( where ) { case "from" : fromPathValue = wherePathValue; break ; case "to" : toPathValue = wherePathValue; break ; default : break ; } return wherePathValue; } return null ; } |
1 2 3 4 | private function sayHello() { $str = "my name is unofficial,www.pushself.com是可以直接访问的,我只是想说一句'hello world!'" ; return $str; } |
参考资料:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.folderbrowserdialog(VS.80).aspx
movefile之替换操作
需要使用到DirectoryInfo 类,命名空间:System.IO,公开用于创建、移动和枚举目录和子目录的实例方法。
遍历文件b中的文件夹:
上面调用的是copyFiles方法,这个方法就是遍历文件夹复制文件至对应的文件夹中替换掉文件。这中间用到的知识之前在无限级分类中可以使用到,程序思路基本上都是一样的,会一次就会下一次了,只是习惯了弱语言的方式后再来写这个,难免过程中有些不习惯。
参考资料:http://msdn.microsoft.com/zh-cn/library/system.io.directoryinfo(VS.80).aspx
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
遍历文件b中的文件夹:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | try { DirectoryInfo Dir = new DirectoryInfo(toPathValue); foreach (DirectoryInfo d in Dir.GetDirectories()) { string toPathValueNew = toPathValue + "\\" + d.Name; current_explain.Text = "正在操作" + toPathValueNew; copyFiles(fromPathValue, toPathValueNew); rarFile(toPathValueNew); } } catch (Exception ex) { MessageBox.Show(ex.ToString()); return ; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | private void copyFiles( string varFromDirectory, string varToDirectory) { try { Directory.CreateDirectory(varToDirectory); if (!Directory.Exists(varFromDirectory)) return ; string [] directories = Directory.GetDirectories(varFromDirectory); if (directories.Length > 0) { foreach ( string d in directories) { copyFiles(d, varToDirectory + d.Substring(d.LastIndexOf( "\\" ))); } } string [] files = Directory.GetFiles(varFromDirectory); if (files.Length > 0) { foreach ( string s in files) { File.Copy(s, varToDirectory + s.Substring(s.LastIndexOf( "\\" )), true ); } } } catch (Exception ex) { MessageBox.Show(ex.ToString()); } } |
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
movefile之压缩操作
文件压缩需要调用本地的rar程序来操作,需要用到的using System.Diagnostics;(//using System.Threading;)压缩文件有很多命令,具体的可以百度谷歌一下。
文件压缩操作:
上面调用的是rarFile方法,这个方法就是压缩b文件夹下的文件夹,按照原来的路径压缩完成,压缩文件直接留在b文件夹下。
参考资料:http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.aspx
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
文件压缩操作:
1 2 3 4 5 6 7 8 9 10 11 12 13 | private void rarFile( string dirName) { Process process = new Process(); process.StartInfo.FileName = "D:\\Program Files (x86)\\winrar\\WinRAR.exe" ; //这是你安装Winrar的路径 process.StartInfo.Arguments = "a -ep1 -r " + dirName + ".rar " + dirName; // process.Start(); //while (!process.HasExited) //{ // Thread.Sleep(1); //} process.WaitForExit(); process.Close(); } |
参考资料:http://msdn.microsoft.com/zh-cn/library/system.diagnostics.process.aspx
本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
交流学习
项目代码在:https://github.com/sfanr/movefile
希望能够与大家多多交流学习。
应用程序试用地址:http://download.csdn.net/download/w1016908017/7902901
末尾留言:直到现在程序还在执行中,有一个问题就是压缩文件的窗口老是弹出影响我写文字,我觉得后面版本可以把这个优化进去,具体的更新内容会根据我后面的需要更新。 本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
希望能够与大家多多交流学习。
应用程序试用地址:http://download.csdn.net/download/w1016908017/7902901
末尾留言:直到现在程序还在执行中,有一个问题就是压缩文件的窗口老是弹出影响我写文字,我觉得后面版本可以把这个优化进去,具体的更新内容会根据我后面的需要更新。 本文原创博客地址:http://www.cnblogs.com/unofficial官网地址:www.pushself.com)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?