C# 批量重命名文件
C# 批量重命名文件
有些時候,我們下載了一些聽書的MP3文件,或者是一些美劇、網劇,下載下來之后發現這些文件具有一定的規律,比如下圖。但是有些時候我們需要修改這些文件的文件名,一個一個文件重命名是非常反人類的,我們不需要重復造輪子。如果只是單純地從文件名里替換掉一些字符,比如替換:【慶余年網劇高清】01 里面的“高清”為“HD”,變成 【慶余年網劇HD】01 ,這種方式的可以使用windows的powershell功能。
仙人指路:https://blog.csdn.net/u010295735/article/details/90054186
由上圖可以發現,這些音頻文件前面都有編號,后面跟著下劃線的字母,本人有些許強迫癥,只想保留編號,即001_a文件重命名為1,031_be文件重命名為31,手動重命名機器麻煩,況且這部小說的音頻文件有247個。于是我打算用C#進行批量重命名。
先創建一個Windows窗體應用類型的項目,**項目名為:批量重命名文件(不推薦使用中文,我是為了圖方便)**, 然后進行界面編輯,這個應用的界面很簡單,用了一個標簽控件,兩個按鈕控件。
“選擇目錄”按鈕的變量名為: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和后面多余的字符串去掉,然后重命名。
運行無錯則提示批量修改成功。
運行
源碼
百度網盤:
鏈接: https://pan.baidu.com/s/1I21TtTKO4DF_AnZ8_GBcSQ 提取碼: s4kx
大家可以根據自己的需求和網劇名字的規律對代碼進行規則修改,用來實現自己想要的功能。
總結
以上是生活随笔為你收集整理的C# 批量重命名文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转载】第三方支付业务如何测试
- 下一篇: [置顶] 南大通用GBase8aVs达梦