Наконец-то мне удалось воспроизвести описанное поведение.
кажется, что я поставил эту команду на моем рабочем компьютере
fsutil 8dot3name set 0
Эта команда запрещает создание старых 8.3 коротких имен файлов, необходимых в MS-DOS времени.
С этой конфигурацией команда Directory.GetFiles(path, "*.xls")
возвращает только файлы, имеющие точно указанное расширение, а не другие расширения, которые начинаются с XLS.
Применение команды
fsutil 8dot3name set 1
я ожидал иметь тот же результат объясняется ОП, но это не так с файлами уже в папке, потому что они были созданы, когда был отключен 8dot3name
флаг.
Но новый файл с именем test.xlsm
начал появляться между файлами, возвращаемого шаблоном поиска *.xls
Таким образом, чтобы решить вашу проблему, вы можете использовать команду fsutil, как описаны в статье How to disable 8.3 file name creation on NTFS partitions и, возможно, стирают старые 8.3 записи с опцией strip
или просто использовать небольшое изменение вашего кода выше
Dim all_files = Directory.EnumerateFiles(path, "*.xls")
Dim file_list3 = all_files.Where(Function(x) Path.GetExtension(x).ToLower = ".xls").ToList()
Dim file_list4 = all_files.Where(Function(x) Path.GetExtension(x).ToLower = ".xlsm").ToList()
не удается воспроизвести, вы уверены, что нет другого кода, что вещи «миксы»? – Steve
Нет, нет другого кода, который бы смешивал вещи. Почему голосует, просто потому, что вы не можете воспроизвести его? – user2721815
см. Примечания: http://msdn.microsoft.com/en-us/library/vstudio/wz42302f(v=vs.100).aspx – Plutonix