带有通配符的命令提示符 DIR 返回意外结果

带有通配符的命令提示符 DIR 返回意外结果

我正在运行 2003 服务器(最新服务包)。当我在命令行中输入以下内容时:

2010 年目录*

或者

 dir 2010*.* 

我收到的结果是:

    02/01/2011  02:34 PM             2,460 2011-02-01-14-34-23-807.mdn  
    02/02/2011  08:59 AM             3,757 2011-02-02-08-59-32-604.req  
    02/01/2011  09:16 AM               235 2011-02-01-09-16-35-104.dat  
    02/02/2011  05:06 PM               460 2011-02-02-17-06-05-166.log  
    02/01/2011  03:31 PM            66,570 2011-02-01-15-31-27-838.dat  
    02/01/2011  03:16 PM               145 2011-02-01-15-16-51-135.log  
    02/01/2011  08:52 PM         1,608,916 2011-02-01-20-52-57-416.req
                   7 File(s)      1,682,543 bytes  
                   0 Dir(s)  42,891,452,416 bytes free  

谁能告诉我为什么?我原本期望看到以“2010”开头的文件列表。目录中没有这样的文件,所以我没想到会看到任何东西。我要么误解了 DIR 处理通配符的方式,要么我做了一些愚蠢的事情。

答案1

超级用户上的这个答案来自用户重力揭示了答案在于 Windows 创建 8.3 文件名的方式,以及命令DIR查看两个都文件名。

您可以通过DIR /X显示短文件名来查看正在发生的事情。

从那个答案来看:

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

    fsutil behavior set disable8dot3

但这不会影响现有的名称。

答案2

dir /OD 会对我的日期进行排序,因此在 powershell 中等效的将是 Get-ChildItem | Sort-Object Date 并且如果您包含某些内容 Where-Object {!$_.Mode -match "h"} 它应该可以解决问题

相关内容