C# 批量重命名文件

摘要:
7使用System.Text;10使用System.IO;22///选择目录按钮以响应事件23///<paramname=“e”>EventArgse)27{28FolderBrowserDialogfolder=newFolderBrowser对话框();paramname=“e”>
C# 批量重命名文件

有些时候,我们下载了一些听书的MP3文件,或者是一些美剧、网剧,下载下来之后发现这些文件具有一定的规律,比如下图。但是有些时候我们需要修改这些文件的文件名,一个一个文件重命名是非常反人类的,我们不需要重复造轮子。如果只是单纯地从文件名里替换掉一些字符,比如替换:【庆余年网剧高清】01 里面的“高清”为“HD”,变成 【庆余年网剧HD】01 ,这种方式的可以使用windows的powershell功能。
仙人指路:https://blog.csdn.net/u010295735/article/details/90054186
C# 批量重命名文件第1张

由上图可以发现,这些音频文件前面都有编号,后面跟着下划线的字母,本人有些许强迫症,只想保留编号,即001_a文件重命名为1,031_be文件重命名为31,手动重命名机器麻烦,况且这部小说的音频文件有247个。于是我打算用C#进行批量重命名。
先创建一个Windows窗体应用类型的项目,**项目名为:批量重命名文件(不推荐使用中文,我是为了图方便)**, 然后进行界面编辑,这个应用的界面很简单,用了一个标签控件,两个按钮控件。

C# 批量重命名文件第2张

“选择目录”按钮的变量名为:btnSelectFile
输入框的变量名为:textBox1
“批量修改”按钮的变量名为:btnAlter

后台代码如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.ComponentModel;
 4 using System.Drawing;
 5 using System.Data;
 6 using System.Linq;
 7 using System.Text;
 8 using System.Threading.Tasks;
 9 using System.Windows.Forms;
10 using System.IO;
11 
12 namespace 批量重命名文件
13 {
14     public partial class UserControl1: UserControl
15     {
16         public UserControl1()
17         {
18             InitializeComponent();
19         }
20 
21         /// <summary>
22         /// 选择目录按钮响应事件
23         /// </summary>
24         /// <param name="sender"></param>
25         /// <param name="e"></param>
26         private void btnSelectFile_Click(object sender, EventArgs e)
27         {
28             FolderBrowserDialog folder = new FolderBrowserDialog();
29             if (folder.ShowDialog()==DialogResult.OK) 
30             {
31                 textBox1.Text = folder.SelectedPath;//获取目录的路径
32             }
33         }
34 
35         /// <summary>
36         /// 批量修改按钮响应事件
37         /// </summary>
38         /// <param name="sender"></param>
39         /// <param name="e"></param>
40         private void btnAlter_Click(object sender, EventArgs e)
41         {
42             DirectoryInfo directory = new DirectoryInfo(textBox1.Text);
43             var Files = directory.GetFiles(); //获取文件列表
44             try
45             {
46                 //遍历文件列表
47                 foreach (var file in Files) 
48                 {
49                     if (file.Name.Substring(0,1) == "0")
50                     {
51                         if (file.Name.Substring(1, 1) == "0")
52                         {
53                             var str = file.Name.Substring(2, 1);
54                             var hz = file.Extension;//获取文件的扩展名(后缀名)
55                             file.MoveTo(textBox1.Text + "\" + str + hz);//重命名后的文件保存在原来的目录下
56                         }
57                         else 
58                         {
59                             var str = file.Name.Substring(1, 2);
60                             var hz = file.Extension;//获取文件的扩展名(后缀名)
61                             file.MoveTo(textBox1.Text + "\" + str + hz);//重命名后的文件保存在原来的目录下
62                         }
63                     }
64                     else 
65                     {
66                         var str = file.Name.Substring(0,3);
67                         var hz = file.Extension;//获取文件的扩展名(后缀名)
68                         //修改文件名的方法。
69                         file.MoveTo(textBox1.Text + "\" + str + hz);//重命名后的文件保存在原来的目录下
70                     }
71                 }
72                 MessageBox.Show("批量重命名成功!");
73             }
74             catch (Exception ex)
75             {
76                 MessageBox.Show(ex.Message);
77             }
78         }
79     }
80 }

思路

根据这些文件名的规律以及我的需求,实现这个功能也不难,我们只需关注文件名前面3为字符即可,001改为1,031改为31,所以先获取文件名,然后截取文件名的第一位,判断是否为0,不为0证明文件名类似172_gp,我们只需把172后面的_gp去掉然后加上后缀再重命名保存在原位置即可。
第一位为0的话就继续判断第二位字符,不为0证明是031这种文件名,去掉031前面的0和后面多余的字符串进行重命名即可,为0证明是001这种,把001前面的00和后面多余的字符串去掉,然后重命名。
运行无错则提示批量修改成功。

运行

C# 批量重命名文件第3张

C# 批量重命名文件第4张

源码

百度网盘:
链接: https://pan.baidu.com/s/1I21TtTKO4DF_AnZ8_GBcSQ 提取码: s4kx

大家可以根据自己的需求和网剧名字的规律对代码进行规则修改,用来实现自己想要的功能。

免责声明:文章转载自《C# 批量重命名文件》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇jmeter之Bean Shell Sampler使用四则运算Oracle 11g数据库创建表空间、用户、目录、以及给用户授权下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CKEditor扩展插件:自动排版功能

CKEditor是新一代的FCKeditor,是一个重新开发的版本。CKEditor是全球最优秀的网页在线文字编辑器之一,因其惊人的性能与可扩展性而广泛的被运用于各大网站。 如果还没接触过的可以看看,在线演示地址:http://ckeditor.com/demo 当然了,今天我们的主要目的还不是介绍。 还未下载CKEditor的同学可以点击下载:http:...

如何发挥Visual Studio 2019强大的编辑功能轻松编辑Keil项目

  本文地址:https://www.cnblogs.com/jqdy/p/12565161.html   习惯了VS的强大编辑功能,对Keil 5越来越深恶痛绝。查阅网络文章后按图索骥初步实现了VS编辑Keil项目的功能,但是VS仍然不识别sfr、sbit、bit等特有关键字。虽然不是大问题,但是当键入STC8.h中定义的相关寄存器名称时,不能使用自动提...

Shell脚本开发环境的配置和优化实践

1. 配置vim编辑器 1-1. 为什么不使用vi而是vim vi适合编辑普通文本,不适用编写脚本代码,例如:缺少高亮显示代码、自动缩进等重要功能; vim相当于高级编辑器,可以提高开发效率。 1-2. 设置vim为默认编辑器 [root@oldboy scripts]# echo 'alias vi=vim' >>...

nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下)

nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链步骤(linux系统下),安装Nginx和HttpAccessKeyModule模块(参考LNMP环境搭建:第一步:在/usr/local/src/下下载模块压缩包:    wget http://wiki.nginx.org/images/5/51/Ngin...

git 安装 和 基本操作

林纳斯的小故事 感兴趣的同学可以自己百度一下 版本控制常用svn git @@@svn 1 搭建环境 server:visualSVN Serverserver port: https 默认443http 默认端口80 2 svn的常用操作 3 svn版本 文件的常用状态 svn已经时很老的版本控制工具了,这里的教程就不再赘述其方法,google上有很多...

Object-C与Swift混合开发

Object-C作为Apple的iOS App开发语言服务了很多个年头,2014年Apple推出了新的编程语言Swift。更高效更安全的口号再次吸引了一大批非iOS开发程序猿进入,小编觉得Swift代替Object-C仅仅是时间问题,在神州这片土地上,毕竟技术普及有些落后。但再有两年左右时间Swift产品链将形成。第三方支持框架逐步完好。Swift必将成...