Я думаю, что @dsolimano (и его источник, Раймонд Чен) довольно близко подошли к вашей проблеме, но, возможно, не совсем правильно объяснили. После некоторых размышлений, поиска и тестирования, хотя мне еще предстоит подготовить документацию, подтверждающую это, я считаю, что пришел к достаточно точному выводу.
Моя гипотеза основана на несколько связанном поведении доменных имен и некоторых других именованных компьютерных ресурсов. С доменными именами на самом деле есть подразумеваемая конечная точка в конце. Поэтому www.superuser.com
на самом деле www.superuser.com.
, Мой вывод, после некоторого тестирования, заключается в том, что Windows API (если не сама файловая система) использует то же соглашение для имен файлов.
Подумайте обо всех именах файлов, которые вы дали, которые соответствуют вашему результату. Если учесть, что имена файлов 8.3 включены в поиск, как описано здесь, и предположить, что длинные имена файлов с конечной точкой и имена файлов 8.3 с конечной точкой также включены, вы увидите, что каждый из этих файлов соответствует по крайней мере одному версия его имени файла. (Помните, что подстановочный знак *
- это заполнитель, который представляет «любое количество символов или нет символов».)
c:\test\1.1.1990.txt
соответствует 1.1.1990.txt.
или 111990~1.TXT.
c:\test\1.31.1990.txt
соответствует 1.31.1990.txt.
или 131199~1.TXT.
c:\test\1.txttxt
соответствует 1.txttxt.
или 1956B~1.TXT.
c:\test\11.11.2007.txtGif
соответствует 111120~1.TXT.
c:\test\12.1.1990.txt
соответствует 12.1.1990.txt.
или 12199~1.TXT.
c:\test\12.31.1990.txt
соответствует 12.31.1990.txt
или 123119~1.TXT.
c:\test\2.tGift
соответствует 2.tGift.
c:\test\2.txtGif
соответствует 2BEFD~1.TXT.
c:\test\5bbb.exeTxt
соответствует 5bbb.exeTxt.
c:\test\test.txt
соответствует как test.txt
или test.txt.
Вы можете проверить это, создав серию тестовых файлов в C:\test
как описано ниже, и снова запустив dir *t.*
.
- Файл с расширением, оканчивающимся на "t".
- Файл с именем, оканчивающимся на "t".
- Файл с расширением более трех букв, третья буква которого - "t".
- Некоторые файлы, которые соответствуют более чем одному из вышеуказанных критериев.
- Файл с именем, оканчивающимся на "t", и вообще без расширения.
- Некоторые файлы, которые не соответствуют ни одному из вышеуказанных критериев.
Вы должны видеть, как и я, что dir *t.*
Будет возвращать только файлы, которые попадают в категории 1-5 выше. Файлы в категории 6 будут исключены. Вы также можете использовать метод GetFiles
более непосредственно для тех же файлов с помощью PowerShell, используя приведенную ниже команду, и вы должны увидеть те же результаты.
[IO.Directory]::GetFiles('C:\test','*t.*')