文件夹中的文件:
a.j
ab.jp
abc.jpg
abcd.jpeg
dir
命令结果:
Command Result (Files shown)
---------- --------------------
dir ?.* a.j
dir ??.* a.j, ab.jp
dir ???.* a.j, ab.jp, abc.jpg
dir ????.* a.j, ab.jp, abc.jpg, abcd.jpeg
所以我们可以看到单个字母?
的意思是“0 个或 1 个字母”。
现在更多的dir
命令结果:
Command Result (Files shown)
---------- --------------------
dir *.? a.j
dir *.?? a.j, ab.jp
dir *.??? a.j, ab.jp, abc.jpg, abcd.jpeg --> What is this?!
dir *.???? a.j, ab.jp, abc.jpg, abcd.jpeg
在第三个命令中为什么???
会显示jpeg
?你能解释一下吗?这是 cmd 中的错误吗?
答案1
发生这种情况是因为三个问号与文件名的短版本扩展名相匹配。使用
dir /x
显示(并使用)文件名的简短版本。
答案2
关于扩展名超过三个字符的问题:这是由创建短文件名的方式引起的。您可以通过设置来解决这个问题Win95TruncatedExtensions
在注册表中:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"Win95TruncatedExtensions"=dword:00000000
指定 NTFS 和 FAT 是否使用 8.3 命名约定为新文件生成文件名。
将此条目的值设置为 1 不会更改任何现有文件扩展名,也不会更改“查找”、“文件管理器”或 Windows 资源管理器显示或管理这些扩展名的方式。但是,它会导致 NTFS 和 FAT 为新文件生成短名称,并截断文件扩展名的第三个字符。
默认值为 1
但请记住,这只会影响新创建或复制的文件。
(您可能复制了硬盘上的所有文件。安装 Windows 系统时,您应该将此注册表设置作为第一步操作。)
答案3
命令提示符使用短文件名系统。这意味着,当文件在小数点前有超过 8 个字符时,将使用前 6 个字符 + ~1。当您在小数点后使用 4 个或更多字符时,情况也是如此。然后它将使用扩展名的前 3 个字符,并以不同的方式命名文件(前 6 个字符 + ~1)。因此,文件.jpeg
在命令提示符中被视为文件,因此??????~1.jpe
它将匹配*.???
用于dir /x
查看具有短文件名的文件。