filename-01
filename-02
filename-03
etc. etc.
You need to find how many zeroes you need to add, based on the number of the total files, or you would end up with something like this:
filename-09Which looks bad, and it could give problems with some programs depending on how they sort a file list.
filename-010
filename-011
etc. etc.
The result you want is one where the number's count is the same, indipendently from the number of files, even if you have a million files, it needs to work.
Doing an if/else is bad, because you would need to know the number of files before-hand. The solution is pretty simple, this is the result you will get:
filename-08
filename-09
filename-10
filename-11
Or, using larger numbers:
filename-0001Let's see the code:
filename-0002
...
filename-0099
filename-0100
...
filename-0999
filename-1000
etc. etc.
List<string> files = new List<string>(); //Our list of files //populate the file list in any way you want, like this private void populateFiles() { string dir = @"path\to\your\directory"; foreach(string s in Directory.GetFiles(dir)) { files.Add(s); } //Or you could do a files.AddRange(Directory.GetFiles(dir)); } private void batchRename() { //Cycle every file in the list for (int i = 0; i < files.Count; i++) { //zeroesAmount contains the number of zeroes to add to the title //Let's say the files.Count is 758 and "i" is now at 19 //We get the length of the string "758", which is 3 //We get the length of the string "19", which is 2 //We subtract them, 3 - 2 = 1, so it's 1 zero to add int zeroesAmount = files.Count.ToString().Length - i.ToString().Length; //This is the string that will be added to the file name string zeroes = ""; //Actual cycle to add the zeroes number to the string for (int ii = 0; ii < zeroesAmount; ii++) { zeroes += "0"; } //Assigning the new file name and renaming, with the File.Move function string parent = Directory.GetParent(files[i]); string fileName = Path.GetFileNameWithoutExtension(files[i]); string extension = Path.GetExtension(files[i]); string newFile = parent + "\\" + fileName + "-" + zeroes + i.ToString() + extension; if (!File.Exists(newFile)) { File.Move(files[i], newFile); } } }
No comments:
Post a Comment