Dir排序差异

时间:2016-12-05 17:58:24

标签: batch-file cmd

我有一个批处理文件,使用以下代码将文件夹(sourcefolder)的内容复制到另一个(destfolder):

robocopy /mt:128 /e /r:1 /w:1 /tee /log:%robolog% %sourcefolder% %destfolder%

然后,我希望生成按名称排序的这两个位置中的所有文件的列表。我使用以下行生成这些列表:

dir /s /b /a-d /o:n %sourcefolder% > %sourcelist%
dir /s /b /a-d /o:n %destfolder% > %destlist%

出于某种原因,列表没有以相同的方式排序。例如,源列表可能类似于:

sourcefolder\subfolder1\text.txt  
sourcefolder\subfolder2\abc.txt  
sourcefolder\subfolder3\file.exe

但目的地列表可能如下所示:

destfolder\subfolder2\abc.txt  
destfolder\subfolder3\file.exe  
destfolder\subfolder1\text.txt  

我无法弄清楚为什么dir命令生成的列表不是以相同的顺序排列的。在移动到批处理文件的下一部分之前,我需要确保这些列表的顺序相同。

2 个答案:

答案 0 :(得分:1)

dir /S命令分别为每个子目录应用指定的排序顺序(/O:N),但它不对目录进行排序。但是,有sort命令,可在此处使用:

dir /B /S /A:-D /O:N "%sourcefolder%" | sort > "%sourcelist%"
dir /B /S /A:-D /O:N "%destfolder%" | sort > "%destlist%"

答案 1 :(得分:-1)

您可能更喜欢where命令的结果:

where/r "%sourcefolder%" *.*>"%sourcelist%"
where/r "%destfolder%" *.*>"%destlist%"