Hi Cableguy - I hope that you won't take this the wrong way, I want to educate not criticise, but as a software engineer could I make a couple of points regarding programming style
I don't think that "FileSearch" is guaranteed to return the filenames in any particular order as you are assuming, so it would be good programming practice to add a "nrfiles.Sort(cCaseSensitive)" line to your code after "FileSearch". This ensures that you know what order the filenames are in. This is called "defensive programming" where you add code to check what you are not already sure of. This change probably also means that you will have to reverse the order of your delete and copying as I think that the sort order of an ArrayList may be ascending.
Also, depending upon how the string sort is done your backup order may break if a user ever wanted 10 or more backups as File12.bak may sort before File2.bak. I haven't checked this on B4PPC but it is the principle I am commenting on. Defensive programming would add a maximum (and minimum) check so that all the names that could ever possibly be produced are guaranteed sortable correctly.
Also "goto" is normally regarded as anathema in structured programming. It would be better programming style, and make your intentions easier for others to read, to abstract your your "CopyFiles" section to a sub of its' own.
I am afraid that you may think this is being pedantic, and maybe it is for a small program but think about how many traps, such as I've pointed out, you can lay for yourself with a larger application and how much debugging grief you can save by defensively programming in the first place.