cmd 有通配符错误?

cmd 有通配符错误?

文件夹中的文件:

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查看具有短文件名的文件。

相关内容