Windows 控制台中“dir”命令的默认文件顺序

Moe*_*sko 4 windows ordering command-line dir

dir只是想知道在命令提示符中运行命令(不带任何参数)时 Windows 如何确定文件顺序。

我知道您可以显式指定顺序,但只是好奇在不使用参数时排序如何工作。

原因是我有一个家庭立体声音响,可以从 USB 驱动器读取歌曲,并且它播放歌曲的顺序似乎与我dir在 Windows XP 命令提示符下运行命令时看到的顺序相同。如果我能弄清楚在普通dir命令中排序是如何工作的,我也许可以通过更改文件的某些属性来控制立体声上歌曲的播放顺序

phu*_*clv 5

该顺序是“未定义”的,见下文。但这是一个 XY 问题,因为有很多工具是为您真正的排序目的而设计的

\n\n
\n

根据微软的dir文档(强调我的)

\n
\n

/o [[:]SortOrder]dir:控制目录名和文件名的排序和显示顺序。如果省略/o,则dir按照名称在目录中出现的顺序显示名称。如果使用时/o不指定SortOrderdir则显示按字母顺序排序的目录名称,然后显示按字母顺序排序的文件名称。冒号 ( :) 是可选的。

\n
\n

文件在目录中出现的顺序取决于文件系统以及它们在目录条目中存储文件列表的方式:

\n
    \n
  • FAT12/16/32中,文件分配表只是一个简单的线性列表,当创建新文件时,它只是简单地放入列表中的空白空间中。因此,根据创建和删除状态,列表顺序会有所不同。这就解释了为什么 MP3 播放器通常按照您将文件复制到文件夹的顺序进行播放
  • \n
  • NTFS中,目录条目存储在B 树结构中,因此结果将是一个几乎排序的列表
  • \n
\n

更多信息请参阅Raymond Chen 的博客如果未指定排序顺序,命令会按什么顺序排列文件?DIR

\n
\n

如果您不指定排序顺序,则该DIR命令将按照函数返回文件的顺序列出Find\xc2\xadFirst\xc2\xadFile文件

\n

嗯,好吧,但这只是将问题推向了一个新的水平:Find\xc2\xadFirst\xc2\xadFile返回文件的顺序是什么?

\n

返回文件的顺序Find\xc2\xadFirst\xc2\xadFile未指定。文件系统驱动程序将按照它认为最方便的顺序返回文件。

\n
\n

您可以按照您想要的顺序将文件移动到另一个目录来手动对文件进行排序

\n
\n

如果存储介质是FAT格式的U盘,则将根据文件的创建和删除顺序以及文件名的长度,以复杂的顺序枚举文件。但简单的方法是从目录中删除所有文件,然后按照您希望枚举的顺序将文件移动到目录中。这样,第一个可用的插槽就是目录末尾的插槽,因此文件条目会被附加。

\n
\n
\n

另请参见命令 COPY 按什么顺序将文件从源复制到目标?:

\n
\n

COPYDELDIR、等命令FOR在处理之前不会对与通配符模式匹配的文件名进行排序。DIR可以选择/O根据下一个字符请求有序输出。

\n
\n