Je pense que @dsolimano (et sa source, Raymond Chen) se sont rapprochés de votre problème mais n’ont peut-être pas la bonne explication. Après quelques réflexions, recherches et tests, bien que je n’aie pas encore fourni de documentation à ce sujet, je suis parvenu à une conclusion assez précise.
Mon hypothèse est basée sur un comportement quelque peu lié aux noms de domaine et à certaines autres ressources informatiques nommées. Avec les noms de domaine, il y a en fait un point de fin implicite à la fin. www.superuser.comEst donc réellement www.superuser.com.. Ma conclusion, après quelques tests, est que l'API Windows (si ce n'est le système de fichiers lui-même) utilise la même convention pour les noms de fichiers.
Pensez à tous les noms de fichiers que vous avez donnés et qui correspondent à votre résultat. Si vous considérez que les noms de fichier 8.3 sont inclus dans les recherches, comme décrit ici , et supposez que les noms de fichier longs avec un point final et les noms de fichier 8.3 avec un point final sont également inclus, vous constaterez que chacun de ces fichiers correspond à au moins un. version de son nom de fichier. (N'oubliez pas que le *caractère générique est un espace réservé qui représente "un nombre quelconque de caractères, ou aucun caractère".)
c:\test\1.1.1990.txtcorrespond à 1.1.1990.txt.ou111990~1.TXT.
c:\test\1.31.1990.txtcorrespond à 1.31.1990.txt.ou131199~1.TXT.
c:\test\1.txttxtcorrespond à 1.txttxt.ou1956B~1.TXT.
c:\test\11.11.2007.txtGif correspond à 111120~1.TXT.
c:\test\12.1.1990.txtcorrespond à 12.1.1990.txt.ou12199~1.TXT.
c:\test\12.31.1990.txtcorrespond à 12.31.1990.txtou123119~1.TXT.
c:\test\2.tGift correspond à 2.tGift.
c:\test\2.txtGif correspond à 2BEFD~1.TXT.
c:\test\5bbb.exeTxt correspond à 5bbb.exeTxt.
c:\test\test.txtcorrespond à test.txtoutest.txt.
Vous pouvez tester cela en créant une série de fichiers de test C:\testcomme décrit ci-dessous et en l'exécutant dir *t.*à nouveau.
- Un fichier avec une extension se terminant par "t".
- Un fichier dont le nom se termine par "t".
- Un fichier avec une extension plus longue que trois lettres avec la troisième lettre dans l'extension étant "t".
- Certains fichiers correspondant à plus d’un des critères ci-dessus.
- Un fichier dont le nom se termine par "t", et aucune extension du tout.
- Certains fichiers qui ne répondent à aucun des critères ci-dessus.
Vous devriez voir, comme je l'ai fait, que dir *t.*seuls les fichiers appartenant aux catégories 1-5 ci-dessus seront renvoyés. Les fichiers de la catégorie 6 seront exclus. Vous pouvez également utiliser la GetFilesméthode ci-dessous plus directement avec les mêmes fichiers avec PowerShell, à l’aide de la commande ci-dessous, et vous devriez voir les mêmes résultats.
[IO.Directory]::GetFiles('C:\test','*t.*')
dir *.t*(l'exception étant l'avant-dernier élément, que vous avez également noté comme étrange).