Можно ли использовать кавычки для функции FindFirstFile ()? - PullRequest
2 голосов
/ 17 июня 2019

Я пытаюсь вернуть определенный файл .xls с помощью FindFirstFile ().Однако он также возвращает .xlsx из-за соглашения об именах.Можно использовать «* .xls» в проводнике, чтобы возвращать только файлы .xls.Это работает для functi

Ответы [ 2 ]

4 голосов
/ 17 июня 2019

Как сказал @Hans Passant, вас укусила устаревшая поддержка 8.3 имен MSDOS .

У вашего LovelyTable.xlsx также есть вторичное имя, что-то вроде LOVELY~1.XLS, и это второе имя - то, что FindFirstFile()/FindNextFile() дает вам.

Похоже, что FindFirstFileEx() может отфильтровать 8.3 имен:

FindFirstFileEx(searchPattern, FindExInfoBasic, ...)

Если вы не хотите менять приложение, вы также можете удалить короткие имена из тома, а также отключить их генерацию. Для этого вы можете проверить команду fsutil (ее подкоманду 8dot3name), но помните, что это может привести к поломке некоторых программ даже в наши дни. (Например, программное обеспечение, полагая, что оно установлено под C:\PROGRA~2\)

0 голосов
/ 17 июня 2019

Это является следствием поддержки коротких 8.3 имен файлов. Вашему файлу .xlsx дается короткое имя с расширением .xls. И это короткое имя файла, которое соответствует.

Хотя вы можете отключить поддержку коротких имен файлов дисков, которыми вы управляете, эта опция не подходит для машин, которые вы не контролируете. Так что реально вам придется применить свою собственную фильтрацию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...