我正在运行 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"} 它应该可以解决问题