Команда Dir возвращает имена файлов «в произвольном порядке» (см. Ответ Криса Нейлсена для ссылок), поэтому вы не гарантированно получите нужный порядок.
Кроме того, при работе со строками компьютер отсортирует их в алфавитном порядке. С буквами вы должны видеть, что они расположены в алфавитном порядке:
b
ba
c
Числа не отличаются, когда они в строках. Правильный алфавитный порядок для этих чисел:
1
10
2
Если вы хотите, чтобы числа автоматически сортировались «должным образом» в числовом порядке, когда они являются частью строк, вам нужно дополнить их начальными нулями, чтобы эти числа и в алфавитном порядке (например, строки) и в числовом порядке (например, числа)
01
02
10
У вас есть два варианта в вашем случае. (РЕДАКТИРОВАТЬ: Исходя из поведения команды Dir, опция # 1 не так проста, как я бы подумал)
1) Если вы управляете входными файлами, самый простой (а также лучший способ) способ справиться с этим, чтобы создать файлы с добавленными номерами, поэтому вместо Dummy3_1, Dummy3_10 и т. д. c вы бы выбрали число нулей, которое будет содержать наибольшее количество файлов, которое вы можете иметь (вы сказали, что более 1000, и я примет менее 10k) и дополнит имена, поэтому назовите файлы Dummy3_0001, Dummy3_0010 и т. д. c. Если вы можете сделать это, ваш код должен просто начать работать без изменений.
2) Если вы не управляете именами файлов, вы не можете использовать команду Dir в том виде, как она есть. Вам нужно будет прочитать файлы в массив, разделить их на часть «Заголовок» (в вашем случае Dummy3_) и часть «цифра c» (все после _), а затем самостоятельно отсортировать список по нумерации c заказ. Это немного работы.
Надеюсь, это поможет вам.