Windows 命令提示符中的目录搜索显示不正确的输出

sil*_*npi 2 windows-vista command-line dir

我搜索了以下内容,它给了我确切的输出(文件夹名称已更改)

C:\temp>dir *950*.pdf /s
 Volume in drive C has no label.
 Volume Serial Number is ABCDE

 Directory of C:\temp\e\h\d\20100809

08/08/2010  10:54 PM         1,632,434 09_08_2010_004.pdf
08/08/2010  10:54 PM         1,368,895 09_08_2010_003.pdf
08/08/2010  10:54 PM         2,111,360 09_08_2010_005.pdf
               3 File(s)      5,112,689 bytes
Run Code Online (Sandbox Code Playgroud)

我不明白为什么“ 950 ”与这三个文件匹配......!

编辑1

这次我实际上将它移到了 c:\temp\ 并且它匹配了其中之一!

 C:\temp\20100809>dir *950*.pdf
 Volume in drive C has no label.
 Volume Serial Number is ABCDE

 Directory of C:\temp\20100809

08/08/2010  10:54 PM         2,111,360 09_08_2010_005.pdf
Run Code Online (Sandbox Code Playgroud)

编辑2

@gravvity 的答案就在于此!

C:\temp\20100809>dir *950*.pdf /x
 Volume in drive C has no label.
 Volume Serial Number is ABCDE

 Directory of C:\temp\20100809

08/08/2010  10:54 PM         2,111,360 09507E~1.PDF 09_08_2010_005.pdf
Run Code Online (Sandbox Code Playgroud)

use*_*686 8

dir /x
Run Code Online (Sandbox Code Playgroud)

出于兼容性考虑,Windows生成8.3名称为创建的每个长文件名,或通配符匹配的代码(FindFirstFile())检查原始,缩短了名。使用dir /x,看看有什么短名称分配给每个文件。

通常情况下,自动生成的短名看起来像090820~1.PDF090820~2.PDF等,但也有例外

[...] 如果至少 4 个文件或文件夹已经存在,它们的短名称的前 6 个字符相同,则剥离的 LFN 会被截断为基本名称的前 2 个字母(如果基本名称只有 1 个字母,则截断为 1) ,后跟从文件名的未记录散列派生的 4 个十六进制数字,后跟 [...]

在同一分区内移动文件不会更改其任何一个名称,只会重新定位它们。


使用 NTFS 文件系统时,可以使用以下命令在系统范围内禁用8.3 名称创建

fsutil behavior set disable8dot3
Run Code Online (Sandbox Code Playgroud)

但是,这不会影响现有名称。