The Dir command returns filenames "in no particular order" (See the answer by Chris Neilsen for links) so you are not guaranteed to get the order you want.
Additionally, when dealing with strings, the computer will sort them using alphabetical order. With letters, you should be able to see that these are in alphabetical order:
b
ba
c
Numbers are no different when they are in strings. The correct alphabetical order for these numbers is:
1
10
2
If you want numbers to automatically sort "properly" in numerical order when they are part of strings, you need to pad them with leading zeroes, so these numbers are both in alphabetical order (like strings) and numerical order (like numbers)
01
02
10
You have two options in your case. (EDIT: Based on the behavior of the Dir command, option #1 is not as easy as I would have thought)
1) If you control the input files, the easiest (and also best practice) way to handle this is to create the files with padded numbers, so instead of Dummy3_1, Dummy3_10, etc, you would choose a number of zeroes which will hold the largest number of files you could have (you said more than 1000, and I will assume less than 10k) and pad the names, so name the files Dummy3_0001, Dummy3_0010, etc. If you are able to do this, your code should just start working without modification.
2) If you do not have control of the filenames, you can't use the Dir command as it is. You would have to read the files in to an array, split them into the "Header" part (Dummy3_ in your case) and the "numeric" part (everything after the _) and then sort the list yourself in numeric order. This is a bit of work to do.
I hope this helps you.