Windows 单字符通配符返回的结果超出预期

Windows 单字符通配符返回的结果超出预期

我正在尝试在 Windows 命令 shell 中列出文件名由 8 个字符后跟句点和文件扩展名组成的文件目录。我使用的通配符模式是“????????.TIF”。这将返回所有带有“.TIF”扩展名的文件名,而不管文件名的扩展名前部分的长度。示例:

目录 A*.TIF

返回 ABCDEFGH.TIF 和 ABCDEFGHIJ.TIF

目录???????.TIF

还返回两个文件。我预计只会返回第一个文件,因为它是两个文件中唯一一个与模式匹配的文件(8 个单个字符后跟“.TIF”)。这种行为的解释是什么?

提前感谢任何回复。

答案1

我认为问题ABCDEFGHIJ.TIF简称类似于ABCDEF~1.TIF并且 的东西正在与您的模式相匹配。

如果您使用,DIR /X您将看到所有文件的短名称 - 即 8.3 文件名。

您可以尝试这样的事情:

DIR /B | FINDSTR /R /I "^........\.TIF"

这将使用正则表达式模式中的 FINDSTR 来确保 之前正好有 8 个字符.TIF。有关 FINDSTR 的更多帮助,请FINDSTR /?在命令行中输入。

答案2

如果要纠正此问题,请打开提升的命令提示符并输入:

fsutil 8dot3name set 1

现有文件仍会出现此问题,除非您删除短文件名。您复制/创建的新文件不会出现此问题。如果您需要批量删除短文件名,可以使用:

fsutil 8dot3name strip /s <directory>

该问题似乎源于 Windows 7 使用短文件名作为通配符而不是长文件名。

答案3

?表示匹配任意单身的字符。通过执行 a,dir ????????.TIF您表示返回任何具有 8 个字符和.tif扩展名的文件,而dir A*.tif表示返回任何以A或 'a' 开头并具有.tif扩展名的文件

相关内容