C# 批量重命名文件

前言

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

正文

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

后台代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.IO;

namespace 批量重命名文件
{
    public partial class UserControl1: UserControl
    {
        public UserControl1()
        {
            InitializeComponent();
        }

        /// <summary>
        /// 选择目录按钮响应事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnSelectFile_Click(object sender, EventArgs e)
        {
            FolderBrowserDialog folder = new FolderBrowserDialog();
            if (folder.ShowDialog()==DialogResult.OK) 
            {
                textBox1.Text = folder.SelectedPath;//获取目录的路径
            }
        }

        /// <summary>
        /// 批量修改按钮响应事件
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnAlter_Click(object sender, EventArgs e)
        {
            DirectoryInfo directory = new DirectoryInfo(textBox1.Text);
            var Files = directory.GetFiles(); //获取文件列表
            try
            {
                //遍历文件列表
                foreach (var file in Files) 
                {
                    if (file.Name.Substring(0,1) == "0")
                    {
                        if (file.Name.Substring(1, 1) == "0")
                        {
                            var str = file.Name.Substring(2, 1);
                            var hz = file.Extension;//获取文件的扩展名(后缀名)
                            file.MoveTo(textBox1.Text + "\\" + str + hz);//重命名后的文件保存在原来的目录下
                        }
                        else 
                        {
                            var str = file.Name.Substring(1, 2);
                            var hz = file.Extension;//获取文件的扩展名(后缀名)
                            file.MoveTo(textBox1.Text + "\\" + str + hz);//重命名后的文件保存在原来的目录下
                        }
                    }
                    else 
                    {
                        var str = file.Name.Substring(0,3);
                        var hz = file.Extension;//获取文件的扩展名(后缀名)
                        //修改文件名的方法。
                        file.MoveTo(textBox1.Text + "\\" + str + hz);//重命名后的文件保存在原来的目录下
                    }
                }
                MessageBox.Show("批量重命名成功!");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }
}

思路

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

运行

3
4
5

源码

大家可以根据自己的需求和网剧名字的规律对代码进行规则修改,用来实现自己想要的功能。
百度网盘:
链接: https://pan.baidu.com/s/1I21TtTKO4DF_AnZ8_GBcSQ 提取码: s4kx

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值