sorting - CMD 命令以递归方式列出具有排序顺序的文件夹中的所有文件,而不考虑层次结构中的位置?

标签 sorting recursion cmd directory directory-listing

我一直在尝试想出一种方法来使用 DIR 根据日期列出驱动器上的所有文件,但我的问题是结果列表仍然按字母顺序逐个文件夹,正如人们所期望的那样。在文件夹中,文件已正确列出,这不是问题所在。提示可能令人费解的视觉效果。

这是简单的递归目录列表(带有日期列只是因为它恰好是我要排序的内容):

main                                     Date
 |                                       -----------------
 | -- file0_1.ext                        1/5/10 12:00:00AM
 | -- file0_2.ext                        1/1/10 12:00:00AM
 + -- sub1
 |     | -- file1_1.ext                  1/7/10 12:00:00AM
 |     | -- file1_2.ext                  1/4/10 12:00:00AM
 + -- sub2
 |     | -- file2_1.ext                  1/6/10 12:00:00AM
 + -- sub3
 |     | -- file3_1.ext                  1/2/10 12:00:00AM
 |     + -- sub3_1
 |     |     | -- file3_1_1.ext          1/3/10 12:00:00AM

当我运行时

dir *.* /s/od

要列出按日期递归排序的所有文件,我得到

main\file0_2.ext                         1/1/10 12:00:00AM
main\file0_1.ext                         1/5/10 12:00:00AM
main\sub1\file1_2.ext                    1/4/10 12:00:00AM
main\sub1\file1_1.ext                    1/7/10 12:00:00AM
main\sub2\file2_1.ext                    1/6/10 12:00:00AM
main\sub3\file3_1.ext                    1/2/10 12:00:00AM
main\sub3\sub3_1\file3_1_1.ext           1/3/10 12:00:00AM

其中文件夹按字母顺序列出,但文件确实按文件夹内的日期正确排序。然而,我真正想要的是:

main\folder\file0_2.ext                  1/1/10 12:00:00AM
main\sub3\file3_1.ext                    1/2/10 12:00:00AM
main\sub3\sub3_1\file3_1_1.ext           1/3/10 12:00:00AM
main\sub1\file1_2.ext                    1/4/10 12:00:00AM
main\file0_1.ext                         1/5/10 12:00:00AM
main\sub2\file2_1.ext                    1/6/10 12:00:00AM
main\sub1\file1_1.ext                    1/7/10 12:00:00AM

文件列出的位置,无论它们根据日期在层次结构中的位置如何。

一种解决方法是将列表中的所有输出通过管道传输到文本文件,对其进行解析,正确排序,然后再次列出所有内容,但我真的在寻找可以在 cmd.exe 中运行的单个命令,因此它可以很容易地从其他 Windows 机器上的内存中实现。

最佳答案

凭内存

robocopy "c:\main" "c:\main" * /l /nocopy /is /s /njh /njs /nc /ns /ts | sort

也就是说,调用 robocopy 将目标文件夹中的文件与同一文件夹进行检查,但仅列出文件,不复制任何内容,包括相同的文件,处理子目录,没有作业标题,没有作业摘要,没有类,没有大小,有时间戳,并将输出通过管道传输到 sort 以获取列表。

如果你只需要文件列表

for /f "tokens=2,*" %a in ('robocopy "c:\main" "c:\main" * /l /nocopy /is /s /njh /njs /nc /ns /ts ^| sort') do @echo %b

关于sorting - CMD 命令以递归方式列出具有排序顺序的文件夹中的所有文件,而不考虑层次结构中的位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26365157/

相关文章:

python - 在 python 3.3 中按日期对二维数组进行排序

javascript - 递归启用/禁用 div 中按钮的方法?

variables - CMD - 如何使用变量名称中的其他变量来设置变量

c - 使用递归函数反向打印链表

python - Python 中字符串的所有排列(递归)

npm - Electron抛出了编译错误,并且Windows命令提示符变为不可写

windows - 回显文字字符串?

c++ - Qt:不使用复制构造函数的qSort

Ruby 并行排序

arrays - Swift - 需要对星期几的字符串数组进行排序