這個是舊版的,新版在這裡【批次命名-1.2】
功能:
快速將檔案依照編號重新命名(依照 儲存日期 遞減 排序、會避開系統檔案、不影響附檔名)。
使用方法:
把要重新命名的那個資料夾拖曳到程式裡面,然後按下【執行】。
截圖
icon:
界面:
影片(記得切換成720P)
載點
原始碼
新建一個C#的【windows form應用程式】專案,然後拉button、textbox、richtextbox這3個物件進去,
接著複製下面的程式碼貼上就能運行嘍。
程式載點:
原始碼
新建一個C#的【windows form應用程式】專案,然後拉button、textbox、richtextbox這3個物件進去,
接著複製下面的程式碼貼上就能運行嘍。
using System; using System.Collections.Generic; using System.IO; using System.Windows.Forms; namespace WindowsFormsApplication1{ public partial class Form1 : Form { public Form1() { InitializeComponent();//建立應用程式界面 // // event_拖曳物件();//註冊拖曳檔案的事件 TopMost = true;//讓本程式在所有程式最上面 richTextBox1.ReadOnly = true;//禁止使用者編輯 說明文字框 button1.Click += new System.EventHandler(button1_Click); } private void button1_Click( object sender, EventArgs e ) { if (fun_判斷是否為資料夾() == false) { MessageBox.Show("這並不是一個資料夾"); return; } try { //取得所有檔案 System.IO.FileInfo[] Files = new DirectoryInfo(textBox1.Text).GetFiles(); List<c_檔案資料> list_檔案 = new List<c_檔案資料>();//存放所有檔案 String st_暫存 = "暫存--fr+5-b斷#q--";//暫存用的名字 // // //排除系統檔案,並且儲存 儲存時間 for (int i = 0; i < Files.Length; i++) if ((Files[i].Attributes & FileAttributes.System) != FileAttributes.System) list_檔案.Add(new c_檔案資料(Files[i].FullName, File.GetLastWriteTime(Files[i].FullName))); // // //依照 儲存時間 排序(遞減 for (int i = 0; i < list_檔案.Count; i++) for (int j = i; j < list_檔案.Count; j++) if (list_檔案[i].date_儲存時間 < list_檔案[j].date_儲存時間) { var d = list_檔案[i]; list_檔案[i] = list_檔案[j]; list_檔案[j] = d; } // // //修改成暫存的名字 for (int i = 0; i < list_檔案.Count; i++) { String st_原始檔名 = list_檔案[i].st_原始檔名; String s_新檔名= textBox1.Text + "/" + st_暫存 + i + list_檔案[i].st_附檔名; if (File.Exists(st_原始檔名)) File.Move(st_原始檔名, s_新檔名); } // // //改成正確的名字 for (int i = 0; i < list_檔案.Count; i++) { String st_原始檔名 = textBox1.Text + "/" + st_暫存 + i + list_檔案[i].st_附檔名; String s_新檔名 = textBox1.Text + "/" + i + list_檔案[i].st_附檔名; if (File.Exists(st_原始檔名)) File.Move(st_原始檔名, s_新檔名); } // // richTextBox1.Text += "\n" + "(完成)"; } catch (Exception ex) { MessageBox.Show("發生意外:" + "\n" + ex.Message); } } private void event_拖曳物件() { List<Control> list_所有允許拖曳的物件 = new List<Control>(); list_所有允許拖曳的物件.Add(this); list_所有允許拖曳的物件.Add(richTextBox1); list_所有允許拖曳的物件.Add(button1); list_所有允許拖曳的物件.Add(textBox1); //list_所有允許拖曳的物件.Add(label1); for (int i = 0; i < list_所有允許拖曳的物件.Count; i++) { //拖拉功能啟動 list_所有允許拖曳的物件[i].AllowDrop = true; //允許拖拉動作繼續 list_所有允許拖曳的物件[i].DragEnter += new DragEventHandler( ( object sender, DragEventArgs e ) => { if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true) e.Effect = DragDropEffects.All; }); //拖曳結束 list_所有允許拖曳的物件[i].DragDrop += new DragEventHandler( ( object sender, DragEventArgs e ) => { //計算資料夾底下有多少檔案 string[] files = (string[])e.Data.GetData(DataFormats.FileDrop); textBox1.Text = files[files.Length - 1]; fun_判斷是否為資料夾(); }); } } private Boolean fun_判斷是否為資料夾() { if (Directory.Exists(textBox1.Text)) { int int_檔案數量 = System.IO.Directory.GetFiles(textBox1.Text).Length; richTextBox1.Text = "檔案數量:" + int_檔案數量; return true; } else { richTextBox1.Text = textBox1.Text + "\n" + "並不是一個正常的資料夾"; return false; } } private class c_檔案資料 { public DateTime date_儲存時間; public String st_原始檔名 = ""; public String st_附檔名 = ""; public c_檔案資料( String s, DateTime d ) { this.st_原始檔名 = s; this.date_儲存時間 = d; //計算 附檔名 String[] x = s.Split('.'); if (x.Length > 1) st_附檔名 = "." + x[x.Length - 1]; } } } } |
檢視資料夾時用【日期】排序,就可以非常快速找出近期儲存的圖片,但是圖片只要到一定的數量,顯示就會相當的慢,解決方法是將檔案名稱用編號命名,然後用【檔名】排序。
批次命名的程式在網路上很多,功能也都相當強大,但是也因為太多意義不明的功能,完全不會用,用到一半就當掉就更別提了 。
就因為這樣所以才會寫了這個簡單到不能再簡單的批次命名。
批次命名的程式在網路上很多,功能也都相當強大,但是也因為太多意義不明的功能,完全不會用,用到一半就當掉就更別提了 。
就因為這樣所以才會寫了這個簡單到不能再簡單的批次命名。