我一直在尝试想出一种方法来使用 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/