【发布时间】:2015-03-16 21:51:37
【问题描述】:
我注意到当在 Windows 命令行中使用 DIR 时,通配符无法按我预期的那样工作。示例:
dir *.doc
运行类似到
dir *.doc*
只有当通配符目录位于句点之前(这是一个重要且常见的情况)时,我才注意到这种行为。更奇怪的是,如果你运行任何一个:
dir *.d
dir *.do
它将按预期执行。只有当您点击 3 个字符扩展时,才会出现奇怪的行为。我提到它的运行类似于上面的命令,因为如果 *.不是它不会返回文件的扩展名。例如:
dir *.tar
将不返回 file.tar.gz 但将返回 file.targa
为什么会这样?如何避免?
【问题讨论】:
-
Microsoft 的 Raymond Chen 在 blog post here 中详细介绍了这个问题,解释了这个解析问题及其根源。
-
@KenWhite - 该博文仅适用于 DOS。 Windows 的通配符规则非常不同。
-
@dbenham:阅读文章。 Raymond 特别提到,即使在今天的 CMD.EXE 的解析器下,一些解析问题仍然存在。 (接近文章结尾。)正如我所说,它解释了问题及其起源。我发布了评论和链接,而不是答案。
-
@KenWhite - 这是一篇有用的文章,因为它解释了一些奇怪的通配符行为的推导。但它并没有解释这个特定的问题。这个问题都是关于短文件名的。该文章确实提到了长名称与 8.3 名称,但它并没有真正提供足够的信息来解释问题中描述的行为。
标签: batch-file command-line cmd dir