Что означает тильда в шаблоне файла Windows

У меня есть шаблон для поиска. Скажите "*.txt".

Теперь у меня есть некоторые файлы, которые я не хочу перечислять там. Я считаю, что они не соответствуют этой модели. Но на окнах они делают.

Я знаю, что символ тильда используется для краткой формы устаревшего имени файла 8.3. То есть LongFilename.json может быть LONGFI~1.JSO. Но я не знал, что они обрабатываются как-то на окнах в шаблонах поиска файлов. Они есть. Я не могу найти какую-либо документацию о том, что они значат и как сопоставить файлы по-моему.

Моя проблема не с короткими формами. Или я думаю, что это не имеет прямого отношения к этому.

У меня есть файл "A.txt". Теперь я хотел временный файл и использовал "A.txt~". Это файлы резервных копий Unix, которые обычно не видны. Но на окнах они не должны иметь особого значения сами по себе. Только для моего приложения.

Теперь я хочу список файлов "*.txt". Команда dir *.txt возвращает к моему удивлению также все .txt ~ файлы в одной директории. И я не хочу их. Я использую FindFileFirst из Win32 API. Я не нашел ничего о тильде в документации. FindFileFirst (".txt", дескриптор) возвращает также файлы "A.txt~". Могу ли я использовать какой-нибудь флаг, чтобы исключить их? Я знаю, что могу сделать специальное условие, как у меня для "." а также "..". Как работает оператор? A.txt~1 также соответствует. Все ли после тильды игнорируется? Это особенность или ошибка?

Я тестирую это на Windows 7 Professional, 64-е издание, если что-то изменится.

2 ответа

Решение

FindFirstFile также включает короткие имена по старым причинам, поэтому шаблон *.txt будет включать что-нибудь с 8.3 представление заканчивается *.txt который включает в себя *.txtANYTHING не только ~ характер (см. dir /xза то, что сопоставляется с).

Вам нужно будет отфильтровать в вашем перечислении FindNext.

Например, если вы ищете файлы.txt, вы можете использовать опцию "kind:text" в Windows, чтобы исключить txt~ и подобные файлы, поскольку они больше не являются распознанным типом.

Это то, что работает при обычном поиске Windows. Я не уверен на 100% об API, но он также должен быть там.

Другие вопросы по тегам