说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

C#实现文件批量改名工具

HTML文档下载 WORD文档下载 PDF文档下载
我经常需要修改一大批文件的文件名,需要一个一个手工命名非常累,因此我写了这个批量改名程序,本文介绍一下这个程序的实现方法。

 

作者:Steppenwolfe

 

下载源代码

 

我经常需要修改一大批文件的文件名,需要一个一个手工命名非常累,因此我写了这个批量改名程序,情况从此改变。

这个程序的接口是简单灵活的,如果你想使用正则表达式处理,提供LINQ支持,自定义查询等功能,就自个去实现吧,

如今它已经够用了!

 

 

代码实现片段

 

将文件扩展名放入combobox中

 

private Array EnumKeys(RegistryKey root, string subkey){    RegistryKey key = root.OpenSubKey(subkey);    string[] keys = key.GetSubKeyNames();    key.Close();    return keys;}private Array EnumValues(RegistryKey root, string subkey){    RegistryKey key = root.OpenSubKey(subkey);    string[] values = key.GetValueNames();    key.Close();    return values;}private ArrayList GetFileTypes(){    // get supported media types, missing from hkcr    // Applications\wmplayer.exe\SupportedTypes    Array media = EnumValues(Registry.ClassesRoot, MEDIATYPES);    Array list = EnumKeys(Registry.ClassesRoot, "");    ArrayList res = new ArrayList();    foreach (string s in media)    {        if (s.StartsWith("."))        {            res.Add(s);        }    }    foreach (string s in list)    {        if (s.StartsWith("."))        {            if (!res.Contains(s))            {                res.Add(s);            }        }    }    return res;}

下面是如何进行文件名收集,不需递归调用

 

private ArrayList GetFiles(string dir){    ArrayList list = new ArrayList();    string pattern = "*" + cbFileType.Text;    SearchOption option = chkSubfolder.Checked ? 	SearchOption.AllDirectories : SearchOption.TopDirectoryOnly;    if (Directory.Exists(dir))    {        if (chkSubfolder.Checked)        {            list = GetFiles(dir, pattern);        }        else        {            try            {                string[] files = Directory.GetFiles		(dir, pattern, SearchOption.TopDirectoryOnly);                foreach (string s in files)                {                    list.Add(s);                }            }            catch { }        }    }    return list;}private ArrayList GetFiles(string root, string pattern){    Stack<string> dirs = new Stack<string>(20);    ArrayList list = new ArrayList();    string[] subDirs = new string[0];    string[] files = null;    dirs.Push(root);    while (dirs.Count > 0)    {        string currentDir = dirs.Pop();        try        {            subDirs = Directory.GetDirectories(currentDir);        }        catch (UnauthorizedAccessException e) { continue; }        catch (DirectoryNotFoundException e) { continue; }        catch { }        try        {            files = Directory.GetFiles(currentDir, pattern);        }        catch (UnauthorizedAccessException e) { continue; }        catch (DirectoryNotFoundException e) { continue; }        catch { }        foreach (string file in files)        {            list.Add(file);        }        foreach (string str in subDirs)        {            dirs.Push(str);        }    }    return list;}
你可能会疑惑,为什么我不用Directory.GetFiles得到了所有文件,这是因为如果文件被
其它正在处理的应用程序删除或占用,该调用会失败。
特点
撤消更改
添加/删除或替换不同序列中的字符串
改变预览
单词的大小写控制
删除现有的数字序列
有序规则为基础的处理
编号前缀/后缀和格式选项

 

 

《近匠》小鱼天气,中国风与细粒度空气质量检测 Xcode 7 beta发布,Swift 2.0带来哪些新变化? 【有奖征集】MDCC 2015演讲议题征集全面启动 Swift语言那些鲜为人知的特性 《开源者说》08期:聊聊Java那些事儿 专访唐成:从小工到专家,PostgreSQL的修炼之道 《瞬间之美》作者Robert Hoekman Jr:如何成长为UX领袖人物? TIOBE 2015年6月编程语言排行榜:Swift份额上升,Objective-C成自由落体 【CTO讲堂】Box首位华人核心工程师的回国创业之路 【探秘ES6】系列专栏:ES6简介 专访《Javascript设计模式与开发实践》作者曾探:爱编程 爱生活 【探秘ES6】系列专栏:迭代器和for-of循环 【CTO讲堂】UCloud联合创始人兼CTO莫显峰:如何成长为技术合伙人? 【探秘ES6】系列专栏:生成器 iKair转型传感器及SaaS厂商,发布Maxense平台与9款“云传感器” 免费jQuery幻灯片图片轮播插件Galleriffic的使用方法 专访IBM中国研究院院长沈晓卫博士:全新的物联网来了 《近匠》GYENNO CEO任康:用“勺子”敲开一片新市场 Horde3D——基于C++编写的3D渲染引擎 Maker Faire 2015在深圳正式开幕,关注创客生态系统 Arduino与Seeed Studio达成战略合作——专访Arduino联合创始人Massimo Banzi 免费开源的Bootstrap富文本编辑器bootstrap-wysiwyg使用方法 CCAI2015:首届中国人工智能大会将于7月26-27日在京举行 拥抱互联网+ 用友NC6助力集团企业蜕变数据驱动型公司 《近匠》融云,自主研发真正“不丢消息”的IM云服务 【CTO讲堂】听云CTO Wood:APM实现原理及对IT和产品运营的价值 从7个维度浅析虚拟现实Alpha年 Maker Faire上的微软:将技术与工具带给Maker才是关键 友盟2015年Q1移动互联网报告:车联网App崛起 多面编程语言Scala NEC高可用集群软件EXPRESSCLUSTER X3.3面向中国市场正式发布 一个字符串数组的问题??? 请问要怎样才能跟踪一个不出现窗口的系统进程直到结束? 急,如果一个CWnd类不作派生,怎么在它的包容wnd中,截获其Windows消息??? 偶尔找不到硬盘 寻求对,围棋,乒乓球,台球,本人在深圳大冲 请教` 请问我要在邮局汇款单上打印.... 怎么样用语句把ACCESS数据库里的数据导入DATAGIRD 红色!!!!!你过来!我要和你打架!我是淡蓝色!~!!!! 有需要函数库的!superruntimerlibary包含258个函数。图标菜单。。。。。 WindowsMediaPlayer怎么用? 请问我下载的fastreport v2.5中的fr_class.pas怎么用,在哪里可找到fr v2.5的注册版? 初学者又问 dxImageEdit的问题(DevExpress) 问一个关于richtext控件的简单问题,有分 在线求:光纤网络方案,最好有价格! 大家快帮帮忙,急!!分不够可以再加 当选中datagrid的某行时,怎样让这一行获得焦点(改变颜色)? 多少钱可以把我们给买了! “WGE”团队诚邀英才 怎样将IPAddress类型转换成Int64整型? 只放frreport1到form上運行都會出現問題。 统计项目咨询? 能否在ASP中做个导出到EXCEL的 请问高手:document.all.item起什么作用啊??? 如何调试J2ME程序哟 ????????高分问题??????????? 请问在对话框的edit框输入完成后,输入回车键如何把回车处理成对应的按牛单击? 客户机程序怎么读取服务器上的SQL数据库呢? 求下拉列表联动的jsp源码 前辈请推荐几本关于Delphi数据库开发的好书 我要在wsda5.0下使用jdk1.4,怎么办? aspx页面滚动如何实现 第二届深圳Delphi爱好者聚会通知 我的InterBase7为何登录不了? 两个窗体问题,希望今晚能结贴。谢谢了!!! Microsoft.Web.UI.WebControls --- Treeview的应用(请大家帮帮忙) 请为一个界面问题 在9i中为什么提示这个表或视图不存在? 在线等…… 为何在邮箱定则中建了规则,还是收到满足该定则的垃圾邮件,急急! ASP如何调用进程外组件,在线等待,急!!! 帮个忙吧! html中 文本框失去焦点的事件 函数名是什么?? 谢谢 高分求助--关闭进程问题 关于在窗体上画线的问题。 大家讨论一下,做一个游戏修改器应该如何下手? 分不多,只是希望能解决问题!!!!还望各位帮助 一个简单的问题:无线网关是否要和无线网关配套? 问一个Swing做界面算是设计模式方面的问题,语言上应如何去实现 关于xslt的两个问题,各位高手帮忙。。。 Robots协议是什么? 应怜屐齿印苍苔这一句是什么意思 跪求铝锅重量的计算公式 能发光的有机分子成为可应用的材料还需具备哪些性质? 请问 a few . few . a little . little 都是这么用的?Only______people can live up to 100 years old. 这题应该选上面那个那? a little a few是什么意思 一个圆形花坛,一圈是228米,每隔4米栽一株花,可栽多少株? Robots (Cartoon)的中文意思 帮我看看这段robots.txt是什么意思?User-agent: *Disallow: /Allow: /index.aspAllow: /infoshow.aspAllow: /kucun_show.aspAllow: /aboutshow.asp帮我看看这段网页代码什么意思,谢谢 mR.Robots什么意思 为什么固液气态物质导热能力不同?与什么有关? 国考报名昨结束 湖州邮政一个岗位33韩美官员会谈 争取明年上半年确定作战金正恩成马来西亚高校荣誉博士 为表彰法国与德国希望年底前就美国监听与美进北京:病人家属嫌120要价高 将急救杭州发现外来入侵物种福寿螺 对环境有墨西哥一糖果厂发生爆炸 至少40人受日媒:日本成俄罗斯牵制中国棋子欧亚经济最高理事会会议召开 乌克兰入澳大利亚军方为因自身失误造成森林大火德媒称攻击默克尔手机系攻击德国的政治婚车用喜联遮挡号牌被罚 民警呼吁掀起第二届海峡婚博会11月在福州举办 福福建省出台意见 加强扶贫开发重点县就福州仓山警方春雷行动打击盗窃 擒获两福州一男子醉驾摔成重伤 涉嫌危险驾驶福州塔头路一轿车深夜被砸 车身“体无逃犯到派出所补办身份证 被抓时浑然不“好心”老乡设下毒品陷阱 患病男染毒《福建省政府信息公开办法》5月1日起福州:男子借酒壮胆耍司机 被送进派出CBA四强产生 半决赛首轮两场“复仇加官晋爵官仙重生之军火巨头异世龙神狂魂战锤40k之远东风暴空骑血蛮医道无双大唐盗帅重生之红星传奇涂鸦一条街旅游红岩村革命纪念馆旅游朱德旧居旅游城楼旅游小白宫旅游七星潭旅游冈山旅游台东商业步行街旅游旅顺蛇博物馆旅游银七星滑雪场旅游东方绿舟旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘